LinuxQuestions.org

LinuxQuestions.org (/questions/)
-   Linux From Scratch (https://www.linuxquestions.org/questions/linux-from-scratch-13/)
-   -   CLFS: gcc pass 1: Cannot link libgcc_s.so because missing crts and libc (https://www.linuxquestions.org/questions/linux-from-scratch-13/clfs-gcc-pass-1-cannot-link-libgcc_s-so-because-missing-crts-and-libc-4175425007/)

Stachelsk 08-31-2012 12:29 PM

CLFS: gcc pass 1: Cannot link libgcc_s.so because missing crts and libc
 
Hi,

I should put out a warning that I'm not following the CLFS books to a tee.

Why is libgcc_s.so trying to link against crts? I specified --with-newlib for my gcc configure flags. The only way I can get libgcc to compile is by passing --disable-shared (but I need libgcc_s.so for glibc in the next step... so?).

Here are my gcc configure flags:
Code:

AR=ar LDFLAGS="-Wl,-rpath,${CLFS_DIR}/cross/lib" \
../gcc-4.7.1/configure --prefix=${CLFS_DIR}/cross \
  --build=${CLFS_HOST} \
  --host=${CLFS_HOST} \
  --target=${CLFS_TARGET} \
  --with-sysroot=${CLFS_DIR} \
  --with-local-prefix=/tools \
  --with-native-system-header-dir=/tools/include \
  --with-gmp=${CLFS_DIR}/cross \
  --with-mpfr=${CLFS_DIR}/cross \
  --with-mpc=${CLFS_DIR}/cross \
  --with-ppl=${CLFS_DIR}/cross \
  --with-cloog=${CLFS_DIR}/cross \
  --with-newlib \
  --without-headers \
  --disable-decimal-float \
  --disable-libgomp \
  --disable-libmudflap \
  --disable-libquadmath \
  --disable-libssp \
  --disable-multilib \
  --disable-threads \
  --enable-cloog-backend=isl \
  --enable-languages=c

... and the build flags when linking libgcc_s.so, here:
Code:

/home/tyler/CLFS/here/build/gcc-build/./gcc/xgcc -B/home/tyler/CLFS/here/build/gcc-build/./gcc/ -B/home/tyler/CLFS/here/cross/i686-pc-linux-gnu/bin/ -B/home/tyler/CLFS/here/cross/i686-pc-linux-gnu/lib/ -isystem /home/tyler/CLFS/here/cross/i686-pc-linux-gnu/include -isystem /home/tyler/CLFS/here/cross/i686-pc-linux-gnu/sys-include    -O2  -g -O2 -DIN_GCC -DCROSS_DIRECTORY_STRUCTURE  -W -Wall -Wwrite-strings -Wcast-qual -Wstrict-prototypes -Wmissing-prototypes -Wold-style-definition  -isystem ./include  -fpic -g -DIN_LIBGCC2 -fbuilding-libgcc -fno-stack-protector -Dinhibit_libc -shared -nodefaultlibs -Wl,--soname=libgcc_s.so.1 -Wl,--version-script=libgcc.map -o ./libgcc_s.so.1.tmp -g -O2 -B./ _muldi3_s.o _negdi2_s.o _lshrdi3_s.o _ashldi3_s.o _ashrdi3_s.o _cmpdi2_s.o _ucmpdi2_s.o _clear_cache_s.o _trampoline_s.o __main_s.o _absvsi2_s.o _absvdi2_s.o _addvsi3_s.o _addvdi3_s.o _subvsi3_s.o _subvdi3_s.o _mulvsi3_s.o _mulvdi3_s.o _negvsi2_s.o _negvdi2_s.o _ctors_s.o _ffssi2_s.o _ffsdi2_s.o _clz_s.o _clzsi2_s.o _clzdi2_s.o _ctzsi2_s.o _ctzdi2_s.o _popcount_tab_s.o _popcountsi2_s.o _popcountdi2_s.o _paritysi2_s.o _paritydi2_s.o _powisf2_s.o _powidf2_s.o _powixf2_s.o _powitf2_s.o _mulsc3_s.o _muldc3_s.o _mulxc3_s.o _multc3_s.o _divsc3_s.o _divdc3_s.o _divxc3_s.o _divtc3_s.o _bswapsi2_s.o _bswapdi2_s.o _clrsbsi2_s.o _clrsbdi2_s.o _fixunssfsi_s.o _fixunsdfsi_s.o _fixunsxfsi_s.o _fixsfdi_s.o _fixdfdi_s.o _fixxfdi_s.o _fixunssfdi_s.o _fixunsdfdi_s.o _fixunsxfdi_s.o _floatdisf_s.o _floatdidf_s.o _floatdixf_s.o _floatundisf_s.o _floatundidf_s.o _floatundixf_s.o _divdi3_s.o _moddi3_s.o _udivdi3_s.o _umoddi3_s.o _udiv_w_sdiv_s.o _udivmoddi4_s.o tf-signs_s.o addtf3_s.o divtf3_s.o eqtf2_s.o getf2_s.o letf2_s.o multf3_s.o negtf2_s.o subtf3_s.o unordtf2_s.o fixtfsi_s.o fixunstfsi_s.o floatsitf_s.o floatunsitf_s.o fixtfdi_s.o fixunstfdi_s.o floatditf_s.o floatunditf_s.o extendsftf2_s.o extenddftf2_s.o extendxftf2_s.o trunctfsf2_s.o trunctfdf2_s.o trunctfxf2_s.o enable-execute-stack_s.o unwind-dw2_s.o unwind-dw2-fde-dip_s.o unwind-sjlj_s.o unwind-c_s.o emutls_s.o -lc && rm -f ./libgcc_s.so && if [ -f ./libgcc_s.so.1 ]; then mv -f ./libgcc_s.so.1 ./libgcc_s.so.1.backup; else true; fi && mv ./libgcc_s.so.1.tmp ./libgcc_s.so.1 && ln -s libgcc_s.so.1 ./libgcc_s.so
/home/tyler/CLFS/here/cross/i686-pc-linux-gnu/bin/ld: cannot find crti.o: No such file or directory
/home/tyler/CLFS/here/cross/i686-pc-linux-gnu/bin/ld: cannot find -lc
/home/tyler/CLFS/here/cross/i686-pc-linux-gnu/bin/ld: cannot find crtn.o: No such file or directory

Here is the output of the above command with --verbose passed to xgcc:
Code:

Reading specs from /home/tyler/CLFS/here/build/gcc-build/./gcc/specs
COLLECT_GCC=/home/tyler/CLFS/here/build/gcc-build/./gcc/xgcc
COLLECT_LTO_WRAPPER=/home/tyler/CLFS/here/build/gcc-build/./gcc/lto-wrapper
Target: i686-pc-linux-gnu
Configured with: ../gcc-4.7.1/configure --prefix=/home/tyler/CLFS/here/cross --build=x86_64-cross-linux-gnu --host=x86_64-cross-linux-gnu --target=i686-pc-linux-gnu --with-sysroot=/home/tyler/CLFS/here --with-local-prefix=/tools --with-native-system-header-dir=/tools/include --with-gmp=/home/tyler/CLFS/here/cross --with-mpfr=/home/tyler/CLFS/here/cross --with-mpc=/home/tyler/CLFS/here/cross --with-ppl=/home/tyler/CLFS/here/cross --with-cloog=/home/tyler/CLFS/here/cross --with-newlib --without-headers --disable-decimal-float --disable-libgomp --disable-libmudflap --disable-libquadmath --disable-libssp --disable-multilib --disable-static --disable-threads --enable-cloog-backend=isl --enable-languages=c
Thread model: single
gcc version 4.7.1 (GCC)
COMPILER_PATH=/home/tyler/CLFS/here/build/gcc-build/./gcc/:/home/tyler/CLFS/here/cross/i686-pc-linux-gnu/bin/:/home/tyler/CLFS/here/cross/i686-pc-linux-gnu/lib/:./
LIBRARY_PATH=/home/tyler/CLFS/here/build/gcc-build/./gcc/:/home/tyler/CLFS/here/cross/i686-pc-linux-gnu/bin/:/home/tyler/CLFS/here/cross/i686-pc-linux-gnu/lib/:./
COLLECT_GCC_OPTIONS='-v' '-B' '/home/tyler/CLFS/here/build/gcc-build/./gcc/' '-B' '/home/tyler/CLFS/here/cross/i686-pc-linux-gnu/bin/' '-B' '/home/tyler/CLFS/here/cross/i686-pc-linux-gnu/lib/' '-isystem' '/home/tyler/CLFS/here/cross/i686-pc-linux-gnu/include' '-isystem' '/home/tyler/CLFS/here/cross/i686-pc-linux-gnu/sys-include' '-O2' '-g' '-O2' '-D' 'IN_GCC' '-D' 'CROSS_DIRECTORY_STRUCTURE' '-Wextra' '-Wall' '-Wwrite-strings' '-Wcast-qual' '-Wstrict-prototypes' '-Wmissing-prototypes' '-Wold-style-definition' '-isystem' './include' '-fpic' '-g' '-D' 'IN_LIBGCC2' '-fbuilding-libgcc' '-fno-stack-protector' '-D' 'inhibit_libc' '-shared' '-nodefaultlibs' '-o' './libgcc_s.so.1.tmp' '-g' '-O2' '-B' './' '-mtune=generic' '-march=pentiumpro'

I have a feeling might be the fact that it's attempting to use the cross compiler's linker (instead of the system linker).

Thanks for your time!

Stachelsk 08-31-2012 01:14 PM

Oops... solved my own problem. I should have built with --disable-shared as I thought!

It's a bug when building gcc-4.7.1 with glibc-2.16. Executing the following line fixed the problem:
sed -i 's/ -lgcc_s//' Makeconfig

Cheers.


All times are GMT -5. The time now is 03:41 AM.