Message ID | 20141213212814.GC43547@nwf.oc.ietfng.org |
---|---|
State | RFC |
Headers | show |
nwf writes: > $ 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 ) Actually citing libgcc_s.so in full makes things a bit clearer: $ cat libgcc_s.so /* GNU ld script Use the shared library, but some functions are only in the static library. */ 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? Seems reasonable. Since gcc seems to work for Christian as is, this might be architecture dependent. Christian, any insight on this? As far as binutils is concerned the patch below seems to work as expected, so I can now add my Signed-off-by: Harald Geyer <harald@ccbib.org> Felix, can you take this as is or should I resend the patch? Thanks, Harald >> 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
On 2014-12-14 12:02, Harald Geyer wrote: > nwf writes: >> $ 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 ) > > Actually citing libgcc_s.so in full makes things a bit clearer: > $ cat libgcc_s.so > /* GNU ld script > Use the shared library, but some functions are only in > the static library. */ > 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? > > Seems reasonable. Since gcc seems to work for Christian as is, this > might be architecture dependent. Christian, any insight on this? > > As far as binutils is concerned the patch below seems to work as expected, > so I can now add my > Signed-off-by: Harald Geyer <harald@ccbib.org> > > Felix, can you take this as is or should I resend the patch? Removing libgcc_pic.a and adding libgcc.a makes sense to me. You could remove libgcc_pic.a by removing 820-libgcc_pic.patch - Felix
On 15/12/2014 16:16, Felix Fietkau wrote: > On 2014-12-14 12:02, Harald Geyer wrote: >> nwf writes: >>> $ 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 ) >> >> Actually citing libgcc_s.so in full makes things a bit clearer: >> $ cat libgcc_s.so >> /* GNU ld script >> Use the shared library, but some functions are only in >> the static library. */ >> 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? >> >> Seems reasonable. Since gcc seems to work for Christian as is, this >> might be architecture dependent. Christian, any insight on this? >> >> As far as binutils is concerned the patch below seems to work as expected, >> so I can now add my >> Signed-off-by: Harald Geyer <harald@ccbib.org> >> >> Felix, can you take this as is or should I resend the patch? > Removing libgcc_pic.a and adding libgcc.a makes sense to me. > You could remove libgcc_pic.a by removing 820-libgcc_pic.patch > > - Felix > _______________________________________________ > openwrt-devel mailing list > openwrt-devel@lists.openwrt.org > https://lists.openwrt.org/cgi-bin/mailman/listinfo/openwrt-devel > gcc is in a github feed so please send a PR or open an issue on github for this. we cannot merge it via the ML John
Felix Fietkau writes: > > As far as binutils is concerned the patch below seems to work as expected, > > so I can now add my > > Signed-off-by: Harald Geyer <harald@ccbib.org> > > > > Felix, can you take this as is or should I resend the patch? > Removing libgcc_pic.a and adding libgcc.a makes sense to me. > You could remove libgcc_pic.a by removing 820-libgcc_pic.patch So what about the patch against binutils package? TIA, Harald
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@shoutrlabs.com> \ No newline at end of file + Christian Beier <cb@shoutrlabs.com>