[OpenWrt-Devel] kirkwood gcc/binutils woe?

nwf 8S9K8UGO5JGPI3U067229BBACKMQIGVH at cmx.ietfng.org
Sat Dec 13 16:28:14 EST 2014


On Wed, Dec 10, 2014 at 10:12:53PM +0100, Harald Geyer wrote:
> Hi!
> 
> I ran into the same issue just a few days ago on mxs. Probably most,
> if not all arm targets are affected.

Applying your patch does, indeed, get me a little closer to a working
compiler.  However, when I run

$ gcc -v -o hello hello.c
[...]
 /usr/lib/gcc/arm-openwrt-linux-uclibcgnueabi/4.8.3/collect2 --eh-frame-hdr -dynamic-linker /lib/ld-uClibc.so.0 -X -m armelf_linux_eabi -o hello /usr/lib/gcc/arm-openwrt-linux-uclibcgnueabi/4.8.3/crt1.o /usr/lib/gcc/arm-openwrt-linux-uclibcgnueabi/4.8.3/crti.o /usr/lib/gcc/arm-openwrt-linux-uclibcgnueabi/4.8.3/crtbegin.o -L/usr/lib/gcc/arm-openwrt-linux-uclibcgnueabi/4.8.3 -L/usr/lib/gcc/arm-openwrt-linux-uclibcgnueabi/4.8.3/../../.. /tmp/ccjOqw9X.o -lgcc_s -lc -lgcc_s /usr/lib/gcc/arm-openwrt-linux-uclibcgnueabi/4.8.3/crtend.o /usr/lib/gcc/arm-openwrt-linux-uclibcgnueabi/4.8.3/crtn.o
/usr/bin/ld: cannot find -lgcc
collect2: error: ld returned 1 exit status

Well, yes, that's true...

$ find / -name \*libgcc\*
/lib/libgcc_s.so.1
/usr/lib/gcc/arm-openwrt-linux-uclibcgnueabi/4.8.3/libgcc_s.so.1
/usr/lib/gcc/arm-openwrt-linux-uclibcgnueabi/4.8.3/libgcc_s.so
/usr/lib/gcc/arm-openwrt-linux-uclibcgnueabi/4.8.3/libgcc.map
/usr/lib/opkg/info/libgcc.list
/usr/lib/opkg/info/libgcc.control

Grepping about at random I find that
/usr/lib/gcc/arm-openwrt-linux-uclibcgnueabi/4.8.3/libgcc_s.so contains the
directive 

> GROUP ( libgcc_s.so.1 -lgcc )

So I think the desire to save space expressed in
feeds/packages/devel/gcc/README is well-intentioned but possibly stale, so
maybe the following, too?  Maybe we should be removing libgcc_pic.a but not
libgcc.a?

diff --git a/devel/gcc/Makefile b/devel/gcc/Makefile
index c8d8733..8966955 100644
--- a/devel/gcc/Makefile
+++ b/devel/gcc/Makefile
@@ -106,7 +106,6 @@ define Package/gcc/install
 	ln -s $(REAL_GNU_TARGET_NAME)-gcc $(1)/usr/bin/gcc
 	ln -s $(REAL_GNU_TARGET_NAME)-gcc $(1)/usr/bin/$(REAL_GNU_TARGET_NAME)-gcc-$(PKG_VERSION)
 	cp -ar $(PKG_INSTALL_DIR)/usr/lib/gcc $(1)/usr/lib
-	$(RM) $(1)/usr/lib/$(PKG_NAME)/$(REAL_GNU_TARGET_NAME)/$(PKG_VERSION)/*.a
 	cp -ar $(TOOLCHAIN_DIR)/include $(1)/usr/lib/$(PKG_NAME)/$(REAL_GNU_TARGET_NAME)/$(PKG_VERSION)
 	cp -a $(TOOLCHAIN_DIR)/lib/*.{o,so*} $(1)/usr/lib/$(PKG_NAME)/$(REAL_GNU_TARGET_NAME)/$(PKG_VERSION)
 	cp -a $(TOOLCHAIN_DIR)/lib/*nonshared*.a  $(1)/usr/lib/$(PKG_NAME)/$(REAL_GNU_TARGET_NAME)/$(PKG_VERSION)
diff --git a/devel/gcc/README b/devel/gcc/README
index 6cbc80d..828bd28 100644
--- a/devel/gcc/README
+++ b/devel/gcc/README
@@ -1,8 +1,5 @@
 Native GCC that runs on target.
 
-To save disk space, this GCC only supports dynamic linking on the target box,
-there are no static libraries shipped.
-
 For now, this was only tested on a mips target. Others to be done...
 
-   Christian Beier <cb at shoutrlabs.com>
\ No newline at end of file
+   Christian Beier <cb at shoutrlabs.com>


Thanks for your help so far!
--nwf;
 
> nwf writes:
> > > root at OpenWrt:/tmp# gcc -o hello hello.c 
> > > /usr/bin/ld: unrecognised emulation mode: armelf_linux_eabi
> > > Supported emulations: armelf_linux armelf armelfb armelfb_linux
> > > collect2: error: ld returned 1 exit status
> > 
> > And I'm really not sure what that means or what to do about it.
> 
> Looks like binutils is built for OABI while gcc is built for EABI.
> Since at least mxs is actually using EABI I think gcc is right and
> binutils is wrong.
> 
> Try if the following patch solves the problem. (Don't have my test
> board around right now.)
> 
> diff --git a/package/devel/binutils/Makefile b/package/devel/binutils/Makefile
> index ff968b9..4aefeca 100644
> --- a/package/devel/binutils/Makefile
> +++ b/package/devel/binutils/Makefile
> @@ -48,6 +48,8 @@ endef
>  TARGET_CFLAGS += $(FPIC) -Wno-unused-value
> 
>  CONFIGURE_ARGS += \
> +	--host=$(REAL_GNU_TARGET_NAME) \
> +	--target=$(REAL_GNU_TARGET_NAME) \
>  	--enable-shared \
>  	--enable-install-libiberty \
>  	--enable-install-libbfd
> 
> HTH,
> Harald
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 473 bytes
Desc: not available
URL: <http://lists.infradead.org/pipermail/openwrt-devel/attachments/20141213/329fff3b/attachment.sig>
-------------- next part --------------
_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/cgi-bin/mailman/listinfo/openwrt-devel


More information about the openwrt-devel mailing list