diff options
author | Mohammad Akhlaghi <mohammad@akhlaghi.org> | 2020-02-13 17:42:10 +0000 |
---|---|---|
committer | Mohammad Akhlaghi <mohammad@akhlaghi.org> | 2020-02-13 17:49:30 +0000 |
commit | 5baaa500439481514ca173db650f7b45e4994b54 (patch) | |
tree | 2e3d95a90a26166ee235cdaa1e880cbea903e135 /reproduce/software/make | |
parent | 5d24c87d4bade9661cb4becc2c23853d47e6f55c (diff) |
Adding a link to the *crt*.o files in the local install directory
Until now, we defined `LIBRARY_PATH' to fix the problem of the `ld' linker
of Binutils needing several `*crt*.o' files to run. However, some software
(for example ImageMagick) over-write `LIBRARY_PATH', therefore there is no
other way than to put a link to these necessary files in our local build
directory.
With this commit, we fixed the problem by putting a link to the system's
relevant files in the local library directory. This fixed the problem with
ImageMagick. Later, when we build the GNU C Library in the project, we
should remove this step.
This bug reported by Raul Castellanos Sanchez.
Diffstat (limited to 'reproduce/software/make')
-rw-r--r-- | reproduce/software/make/basic.mk | 17 |
1 files changed, 16 insertions, 1 deletions
diff --git a/reproduce/software/make/basic.mk b/reproduce/software/make/basic.mk index 2cad9f9..d8afccd 100644 --- a/reproduce/software/make/basic.mk +++ b/reproduce/software/make/basic.mk @@ -1182,6 +1182,15 @@ endif # programs (http://savannah.nongnu.org/bugs/?56294). Therefore, we'll set # all other basic programs as Binutils prerequisite and GCC (the final # basic target) ultimately just depends on Binutils. +# +# The `ld' linker of Binutils needs several `*crt*.o' file to run. On some +# systems these object files aren't installed in standard places. We +# defined `LIBRARY_PATH' and that fixed the problem for many +# systems. However, some software (for example ImageMagick) over-write +# `LIBRARY_PATH', therefore there is no other way than to put a link to +# these necessary files in our local build directory. IMPORTANT NOTE: +# later, when we build the GNU C Library in the project, we should remove +# this step. $(ibidir)/binutils: | $(ibidir)/sed \ $(ibidir)/wget \ $(ibidir)/grep \ @@ -1203,11 +1212,17 @@ $(ibidir)/binutils: | $(ibidir)/sed \ $(call makelink,nm); \ $(call makelink,ps); \ $(call makelink,ranlib); \ - echo "" > $@; \ + echo "" > $@; \ else \ $(call gbuild, binutils-$(binutils-version), static, \ --with-lib-path=$(sys_library_path), \ -j$(numthreads) ) \ + && if ! [ x"$(sys_library_path)" = x ]; then \ + for f in $(sys_library_path)/*crt*.o; do \ + b=$$($(ibdir)/basename $$f); \ + ln -s $$f $(ildir)/$$b; \ + done; \ + fi \ && echo "GNU Binutils $(binutils-version)" > $@; \ fi |