Message ID | 1375030117.13990.1.camel@phoenix |
---|---|
State | Rejected |
Headers | show |
Dear Axel Lin, On Mon, 29 Jul 2013 00:48:37 +0800, Axel Lin wrote: > ldd.host and ldconfig.host will be built only when HAVE_SHARED=y. > > This fixes below build error when > # BR2_BFIN_FLAT is not set > # ARCH_HAS_MMU is not set > UCLIBC_FORMAT_FLAT=y > > make[1]: Leaving directory `/opt/test/buildroot/buildroot/output/build/uclibc-0.9.33.2' > /usr/bin/install -D -m 0755 /opt/test/buildroot/buildroot/output/build/uclibc-0.9.33.2/utils/ldd.host /opt/test/buildroot/buildroot/output/host/usr/bin/ldd > /usr/bin/install: cannot stat '/opt/test/buildroot/buildroot/output/build/uclibc-0.9.33.2/utils/ldd.host': No such file or directory > make: *** [/opt/test/buildroot/buildroot/output/build/uclibc-0.9.33.2/.stamp_staging_installed] Error 1 Which Buildroot configuration triggers this? > + if grep -q HAVE_SHARED=y $(@D)/.config; then \ > + $(INSTALL) -D -m 0755 $(@D)/utils/ldd.host $(HOST_DIR)/usr/bin/ldd; \ > + ln -sf ldd $(HOST_DIR)/usr/bin/$(GNU_TARGET_NAME)-ldd; \ > + $(INSTALL) -D -m 0755 $(@D)/utils/ldconfig.host $(HOST_DIR)/usr/bin/ldconfig; \ > + ln -sf ldconfig $(HOST_DIR)/usr/bin/$(GNU_TARGET_NAME)-ldconfig; \ > + fi I'd prefer not to grep into the uClibc configuration, and instead find out which Buildroot configuration triggers this problem and find a proper solution to it. Thanks, Thomas
2013/7/29 Thomas Petazzoni <thomas.petazzoni@free-electrons.com>: > Dear Axel Lin, > > On Mon, 29 Jul 2013 00:48:37 +0800, Axel Lin wrote: >> ldd.host and ldconfig.host will be built only when HAVE_SHARED=y. >> >> This fixes below build error when >> # BR2_BFIN_FLAT is not set >> # ARCH_HAS_MMU is not set >> UCLIBC_FORMAT_FLAT=y >> >> make[1]: Leaving directory `/opt/test/buildroot/buildroot/output/build/uclibc-0.9.33.2' >> /usr/bin/install -D -m 0755 /opt/test/buildroot/buildroot/output/build/uclibc-0.9.33.2/utils/ldd.host /opt/test/buildroot/buildroot/output/host/usr/bin/ldd >> /usr/bin/install: cannot stat '/opt/test/buildroot/buildroot/output/build/uclibc-0.9.33.2/utils/ldd.host': No such file or directory >> make: *** [/opt/test/buildroot/buildroot/output/build/uclibc-0.9.33.2/.stamp_staging_installed] Error 1 > > Which Buildroot configuration triggers this? Hi Thomas, Below is my settings. I'm pretty new in using buildroot, below is my settings. I hope my description here is clear. $ make menuconfig mainly with below settings: ARM, arm7tdmi, uClibc, BR2_USE_MMU is not set $ make uclibc-menuconfig ARCH_HAS_MMU is not set UCLIBC_FORMAT_FLAT=y ARCH_HAS_NO_SHARED=y When ARCH_HAS_NO_SHARED=y, HAVE_SHARED is automatically set to "not set". Then I got the build error. I think the root cause is because ldd.host and ldconfig.host will only be built when HAVE_SHARED=y. However, in package/uclibc/uclibc.mk, it always install ldd.host and ldconfig.host if $(BR2_BINFMT_FLAT) is not set. > > >> + if grep -q HAVE_SHARED=y $(@D)/.config; then \ >> + $(INSTALL) -D -m 0755 $(@D)/utils/ldd.host $(HOST_DIR)/usr/bin/ldd; \ >> + ln -sf ldd $(HOST_DIR)/usr/bin/$(GNU_TARGET_NAME)-ldd; \ >> + $(INSTALL) -D -m 0755 $(@D)/utils/ldconfig.host $(HOST_DIR)/usr/bin/ldconfig; \ >> + ln -sf ldconfig $(HOST_DIR)/usr/bin/$(GNU_TARGET_NAME)-ldconfig; \ >> + fi > > I'd prefer not to grep into the uClibc configuration, and instead find > out which Buildroot configuration triggers this problem and find a > proper solution to it. > > Thanks, > > Thomas > -- > Thomas Petazzoni, Free Electrons > Kernel, drivers, real-time and embedded Linux > development, consulting, training and support. > http://free-electrons.com
Dear Axel Lin, On Mon, 29 Jul 2013 01:17:00 +0800, Axel Lin wrote: > Below is my settings. > I'm pretty new in using buildroot, below is my settings. > I hope my description here is clear. > > $ make menuconfig > > mainly with below settings: > ARM, arm7tdmi, uClibc, > BR2_USE_MMU is not set > > $ make uclibc-menuconfig > > ARCH_HAS_MMU is not set > UCLIBC_FORMAT_FLAT=y > ARCH_HAS_NO_SHARED=y > When ARCH_HAS_NO_SHARED=y, HAVE_SHARED is automatically set to "not set". As soon as you customize the uClibc configuration with uclibc-menuconfig, then we cannot support all the possible build failures that you will get. So the solution to this problem is to improve the ARM noMMU support in Buildroot, making sure that: 1/ The uClibc configuration is automatically adjusted appropriately. 2/ The uClibc tools are not installed. > However, in package/uclibc/uclibc.mk, it always install ldd.host and > ldconfig.host if $(BR2_BINFMT_FLAT) is not set. BR2_BINFMT_FLAT should be set when ARM noMMU is used, because I don't think ELF binaries are supported on ARM noMMU. I know Gustavo is working on improving the ARM noMMU, hopefully he will post patches soon. Thomas
2013/7/29 Thomas Petazzoni <thomas.petazzoni@free-electrons.com>: > Dear Axel Lin, > > On Mon, 29 Jul 2013 01:17:00 +0800, Axel Lin wrote: > >> Below is my settings. >> I'm pretty new in using buildroot, below is my settings. >> I hope my description here is clear. >> >> $ make menuconfig >> >> mainly with below settings: >> ARM, arm7tdmi, uClibc, >> BR2_USE_MMU is not set >> >> $ make uclibc-menuconfig >> >> ARCH_HAS_MMU is not set >> UCLIBC_FORMAT_FLAT=y >> ARCH_HAS_NO_SHARED=y >> When ARCH_HAS_NO_SHARED=y, HAVE_SHARED is automatically set to "not set". > > As soon as you customize the uClibc configuration with > uclibc-menuconfig, then we cannot support all the possible build > failures that you will get. > > So the solution to this problem is to improve the ARM noMMU support in > Buildroot, making sure that: > > 1/ The uClibc configuration is automatically adjusted appropriately. > > 2/ The uClibc tools are not installed. > > >> However, in package/uclibc/uclibc.mk, it always install ldd.host and >> ldconfig.host if $(BR2_BINFMT_FLAT) is not set. > > BR2_BINFMT_FLAT should be set when ARM noMMU is used, because I don't > think ELF binaries are supported on ARM noMMU. May I ask why config BR2_BINFMT_FLAT depends on BR2_bfin || BR2_m68k I ask this becuase I'm going to build for arm7tdmi which is noMMU. And config BR2_BINFMT_FLAT is invisible now due to the dependency. > > I know Gustavo is working on improving the ARM noMMU, hopefully he will > post patches soon. Good to know this. And thanks for your reply. Regards, Axel
Dear Axel Lin, On Mon, 29 Jul 2013 01:30:16 +0800, Axel Lin wrote: > > BR2_BINFMT_FLAT should be set when ARM noMMU is used, because I don't > > think ELF binaries are supported on ARM noMMU. > May I ask why config BR2_BINFMT_FLAT depends on BR2_bfin || BR2_m68k > I ask this becuase I'm going to build for arm7tdmi which is noMMU. > And config BR2_BINFMT_FLAT is invisible now due to the dependency. That's because nobody ever worked on ARM noMMU support in Buildroot, so things need to be fixed. Best regards, Thomas
> BR2_BINFMT_FLAT should be set when ARM noMMU is used, because I don't > think ELF binaries are supported on ARM noMMU. > > I know Gustavo is working on improving the ARM noMMU, hopefully he will > post patches soon. Hi, I'm still not able to build a FLAT executable. Just to let you know If there is patch for supporting noMMU available on the maillist, I'm happy to test it. Or is there other projects support building applications for noMMU? I tried uClinux-dist but got build error. ( And uClinux-dist seems does not update for a long time.) Thanks, Axel
diff --git a/package/uclibc/uclibc.mk b/package/uclibc/uclibc.mk index 644c531..1fe1a40 100644 --- a/package/uclibc/uclibc.mk +++ b/package/uclibc/uclibc.mk @@ -514,10 +514,12 @@ endef # For FLAT binfmts (static) there are no host utils ifeq ($(BR2_BINFMT_FLAT),) define UCLIBC_INSTALL_UTILS_STAGING - $(INSTALL) -D -m 0755 $(@D)/utils/ldd.host $(HOST_DIR)/usr/bin/ldd - ln -sf ldd $(HOST_DIR)/usr/bin/$(GNU_TARGET_NAME)-ldd - $(INSTALL) -D -m 0755 $(@D)/utils/ldconfig.host $(HOST_DIR)/usr/bin/ldconfig - ln -sf ldconfig $(HOST_DIR)/usr/bin/$(GNU_TARGET_NAME)-ldconfig + if grep -q HAVE_SHARED=y $(@D)/.config; then \ + $(INSTALL) -D -m 0755 $(@D)/utils/ldd.host $(HOST_DIR)/usr/bin/ldd; \ + ln -sf ldd $(HOST_DIR)/usr/bin/$(GNU_TARGET_NAME)-ldd; \ + $(INSTALL) -D -m 0755 $(@D)/utils/ldconfig.host $(HOST_DIR)/usr/bin/ldconfig; \ + ln -sf ldconfig $(HOST_DIR)/usr/bin/$(GNU_TARGET_NAME)-ldconfig; \ + fi endef endif
ldd.host and ldconfig.host will be built only when HAVE_SHARED=y. This fixes below build error when # BR2_BFIN_FLAT is not set # ARCH_HAS_MMU is not set UCLIBC_FORMAT_FLAT=y make[1]: Leaving directory `/opt/test/buildroot/buildroot/output/build/uclibc-0.9.33.2' /usr/bin/install -D -m 0755 /opt/test/buildroot/buildroot/output/build/uclibc-0.9.33.2/utils/ldd.host /opt/test/buildroot/buildroot/output/host/usr/bin/ldd /usr/bin/install: cannot stat '/opt/test/buildroot/buildroot/output/build/uclibc-0.9.33.2/utils/ldd.host': No such file or directory make: *** [/opt/test/buildroot/buildroot/output/build/uclibc-0.9.33.2/.stamp_staging_installed] Error 1 Signed-off-by: Axel Lin <axel.lin@ingics.com> --- package/uclibc/uclibc.mk | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-)