- Пользователь не имеет root-доступа и компилирует изолированную цепочку инструментов в /home/user/toolchain.
- Рабочий GCC-14.3 уже скомпилирован и установлен со следующей конфигурацией:
Код: Выделить всё
../gcc-14.3.0/configure --prefix="/home/user/toolchain" --disable-bootstrap --enable-languages=c,c++,fortran --enable-default-pie --enable-host-pie --disable-multilib --disable-fixincludes --with-system-zlib
- Рабочий binutil-2.45.1 уже скомпилирован и установлен со следующей конфигурацией:
Код: Выделить всё
env AR=gcc-ar RANLIB=gcc-ranlib NM=gcc-nm CFLAGS="-O3 -flto -march=native" CXXFLAGS="-O3 -flto -march=native" LDFLAGS="-O3 -flto -march=native" ../binutils-2.45.1/configure --prefix="/home/user/toolchain" --enable-plugins --enable-shared --enable-64-bit-bfd --enable-new-dtags --enable-default-hash-style=gnu --with-system-zlib
- Следующие переменные среды и символические ссылки уже установлены:
Код: Выделить всё
export PATH=/home/user/toolchain/bin:$PATH
export LD_LIBRARY_PATH=/home/user/toolchain/lib:$PATH
export CPATH=/home/user/toolchain/include
export LIBRARY_PATH=/home/user/toolchain/lib
ln -s gcc /home/user/toolchain/bin/cc
ln -s ../../libexec/gcc/x86_64-pc-linux-gnu/14.3.0/liblto_plugin.so /home/user/toolchain/lib/bfd-plugins/liblto_plugin.so
Сейчас я пытаюсь пересобрать GCC-14.3 снова, с двоичными файлами GCC, оптимизированными с помощью LTO.
Я попытался настроить и установить GCC с помощью следующей команды:
Код: Выделить всё
env AR=gcc-ar RANLIB=gcc-ranlib NM=gcc-nm CFLAGS="-O3 -flto -march=native" CXXFLAGS="-O3 -flto -march=native" LDFLAGS="-O3 -flto -march=native" ../gcc-14.3.0/configure --prefix="/home/user/toolchain" --disable-bootstrap --enable-languages=c,c++,fortran --enable-default-pie --enable-host-pie --disable-multilib --disable-fixincludes --with-system-zlib
make
Во время компиляции возникла следующая ошибка, и GCC не удалось собрать:
Код: Выделить всё
# Early copyback; see "all" above for the rationale. The
# early copy is necessary so that the gcc -B options find
# the right startup files when linking shared libgcc.
/bin/sh ../../../gcc-14.3.0/libgcc/../mkinstalldirs ../.././gcc
parts="crtbegin.o crtbeginS.o crtbeginT.o crtend.o crtendS.o crtprec32.o crtprec64.o crtprec80.o crtfastmath.o"; \
for file in $parts; do \
rm -f ../.././gcc/$file; \
/usr/bin/install -c -m 644 $file ../.././gcc/; \
case $file in \
*.a) \
/home/user/toolchain/x86_64-pc-linux-gnu/bin/ranlib ../.././gcc/$file ;; \
esac; \
done
sed -e 's/__PFX__/__/g' \
-e 's/__FIXPTPFX__/__/g' < ../../../gcc-14.3.0/libgcc/libgcc-std.ver.in > libgcc-std.ver
{ cat libgcc-std.ver ../../../gcc-14.3.0/libgcc/config/i386/libgcc-glibc.ver \
| sed -e '/^[ ]*#/d' \
-e 's/^%\(if\|else\|elif\|endif\|define\)/#\1/' \
| /home/user/build/./gcc/xgcc -B/home/user/build/./gcc/ -B/home/user/toolchain/x86_64-pc-linux-gnu/bin/ -B/home/user/toolchain/x86_64-pc-linux-gnu/lib/ -isystem /home/user/toolchain/x86_64-pc-linux-gnu/include -isystem /home/user/toolchain/x86_64-pc-linux-gnu/sys-include -g -O2 -O3 -flto -march=native -O2 -g -O2 -O3 -flto -march=native -DIN_GCC -W -Wall -Wno-narrowing -Wwrite-strings -Wcast-qual -Wstrict-prototypes -Wmissing-prototypes -Wold-style-definition -isystem ./include -fpic -mlong-double-80 -DUSE_ELF_SYMVER -fcf-protection -mshstk -g -DIN_LIBGCC2 -fbuilding-libgcc -fno-stack-protector -fpic -mlong-double-80 -DUSE_ELF_SYMVER -fcf-protection -mshstk -I. -I. -I../.././gcc -I../../../gcc-14.3.0/libgcc -I../../../gcc-14.3.0/libgcc/. -I../../../gcc-14.3.0/libgcc/../gcc -I../../../gcc-14.3.0/libgcc/../include -I../../../gcc-14.3.0/libgcc/config/libbid -DENABLE_DECIMAL_BID_FORMAT -DHAVE_CC_TLS -DUSE_TLS -E -xassembler-with-cpp -; \
} > tmp-libgcc.map.in
mv tmp-libgcc.map.in libgcc.map.in
{ /home/user/build/./gcc/nm -pg _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 _mulsc3_s.o _muldc3_s.o _mulxc3_s.o _divsc3_s.o _divdc3_s.o _divxc3_s.o _bswapsi2_s.o _bswapdi2_s.o _clrsbsi2_s.o _clrsbdi2_s.o _mulbitint3_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 _divmoddi4_s.o _udivdi3_s.o _umoddi3_s.o _udivmoddi4_s.o _udiv_w_sdiv_s.o _divmodbitint4_s.o cpuinfo_s.o sfp-exceptions_s.o _divhc3_s.o _mulhc3_s.o addtf3_s.o divtf3_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 fixtfti_s.o fixunstfti_s.o floattitf_s.o floatuntitf_s.o fixsfbitint_s.o floatbitintsf_s.o fixdfbitint_s.o floatbitintdf_s.o extendhfsf2_s.o extendhfdf2_s.o extendhftf2_s.o extendhfxf2_s.o extendsfdf2_s.o extendsftf2_s.o extenddftf2_s.o extendxftf2_s.o extendbfsf2_s.o trunctfhf2_s.o truncxfhf2_s.o truncdfhf2_s.o truncsfhf2_s.o trunctfsf2_s.o truncdfsf2_s.o trunctfdf2_s.o trunctfxf2_s.o trunctfbf2_s.o truncxfbf2_s.o truncdfbf2_s.o truncsfbf2_s.o trunchfbf2_s.o fixtfbitint_s.o floatbitinttf_s.o fixhfti_s.o fixunshfti_s.o floattihf_s.o floatuntihf_s.o floattibf_s.o floatuntibf_s.o eqhf2_s.o fixxfbitint_s.o floatbitinthf_s.o floatbitintbf_s.o floatbitintxf_s.o getf2_s.o letf2_s.o eqtf2_s.o _divtc3_s.o _multc3_s.o _powitf2_s.o enable-execute-stack_s.o hardcfr_s.o strub_s.o unwind-dw2_s.o unwind-dw2-fde-dip_s.o unwind-sjlj_s.o unwind-c_s.o heap-trampoline_s.o emutls_s.o heap-trampoline_s.o emutls_s.o; echo %%; \
cat libgcc.map.in; \
} | gawk -f ../../../gcc-14.3.0/libgcc/mkmap-symver.awk > tmp-libgcc.map
/home/user/toolchain/x86_64-pc-linux-gnu/bin/nm: _muldi3_s.o: plugin needed to handle lto object
/home/user/toolchain/x86_64-pc-linux-gnu/bin/nm: _negdi2_s.o: plugin needed to handle lto object
/home/user/toolchain/x86_64-pc-linux-gnu/bin/nm: _lshrdi3_s.o: plugin needed to handle lto object
/home/user/toolchain/x86_64-pc-linux-gnu/bin/nm: _ashldi3_s.o: plugin needed to handle lto object
/home/user/toolchain/x86_64-pc-linux-gnu/bin/nm: _ashrdi3_s.o: plugin needed to handle lto object
/home/user/toolchain/x86_64-pc-linux-gnu/bin/nm: _cmpdi2_s.o: plugin needed to handle lto object
/home/user/toolchain/x86_64-pc-linux-gnu/bin/nm: _ucmpdi2_s.o: plugin needed to handle lto object
/home/user/toolchain/x86_64-pc-linux-gnu/bin/nm: _clear_cache_s.o: plugin needed to handle lto object
/home/user/toolchain/x86_64-pc-linux-gnu/bin/nm: _trampoline_s.o: plugin needed to handle lto object
/home/user/toolchain/x86_64-pc-linux-gnu/bin/nm: __main_s.o: plugin needed to handle lto object
/home/user/toolchain/x86_64-pc-linux-gnu/bin/nm: _absvsi2_s.o: plugin needed to handle lto object
/home/user/toolchain/x86_64-pc-linux-gnu/bin/nm: _absvdi2_s.o: plugin needed to handle lto object
/home/user/toolchain/x86_64-pc-linux-gnu/bin/nm: _addvsi3_s.o: plugin needed to handle lto object
/home/user/toolchain/x86_64-pc-linux-gnu/bin/nm: _addvdi3_s.o: plugin needed to handle lto object
/home/user/toolchain/x86_64-pc-linux-gnu/bin/nm: _subvsi3_s.o: plugin needed to handle lto object
/home/user/toolchain/x86_64-pc-linux-gnu/bin/nm: _subvdi3_s.o: plugin needed to handle lto object
/home/user/toolchain/x86_64-pc-linux-gnu/bin/nm: _mulvsi3_s.o: plugin needed to handle lto object
/home/user/toolchain/x86_64-pc-linux-gnu/bin/nm: _mulvdi3_s.o: plugin needed to handle lto object
/home/user/toolchain/x86_64-pc-linux-gnu/bin/nm: _negvsi2_s.o: plugin needed to handle lto object
/home/user/toolchain/x86_64-pc-linux-gnu/bin/nm: _negvdi2_s.o: plugin needed to handle lto object
/home/user/toolchain/x86_64-pc-linux-gnu/bin/nm: _ctors_s.o: plugin needed to handle lto object
/home/user/toolchain/x86_64-pc-linux-gnu/bin/nm: _ffssi2_s.o: plugin needed to handle lto object
/home/user/toolchain/x86_64-pc-linux-gnu/bin/nm: _ffsdi2_s.o: plugin needed to handle lto object
/home/user/toolchain/x86_64-pc-linux-gnu/bin/nm: _clz_s.o: plugin needed to handle lto object
/home/user/toolchain/x86_64-pc-linux-gnu/bin/nm: _clzsi2_s.o: plugin needed to handle lto object
/home/user/toolchain/x86_64-pc-linux-gnu/bin/nm: _clzdi2_s.o: plugin needed to handle lto object
/home/user/toolchain/x86_64-pc-linux-gnu/bin/nm: _ctzsi2_s.o: plugin needed to handle lto object
/home/user/toolchain/x86_64-pc-linux-gnu/bin/nm: _ctzdi2_s.o: plugin needed to handle lto object
/home/user/toolchain/x86_64-pc-linux-gnu/bin/nm: _popcount_tab_s.o: plugin needed to handle lto object
/home/user/toolchain/x86_64-pc-linux-gnu/bin/nm: _popcountsi2_s.o: plugin needed to handle lto object
/home/user/toolchain/x86_64-pc-linux-gnu/bin/nm: _popcountdi2_s.o: plugin needed to handle lto object
/home/user/toolchain/x86_64-pc-linux-gnu/bin/nm: _paritysi2_s.o: plugin needed to handle lto object
/home/user/toolchain/x86_64-pc-linux-gnu/bin/nm: _paritydi2_s.o: plugin needed to handle lto object
/home/user/toolchain/x86_64-pc-linux-gnu/bin/nm: _powisf2_s.o: plugin needed to handle lto object
/home/user/toolchain/x86_64-pc-linux-gnu/bin/nm: _powidf2_s.o: plugin needed to handle lto object
/home/user/toolchain/x86_64-pc-linux-gnu/bin/nm: _powixf2_s.o: plugin needed to handle lto object
/home/user/toolchain/x86_64-pc-linux-gnu/bin/nm: _mulsc3_s.o: plugin needed to handle lto object
/home/user/toolchain/x86_64-pc-linux-gnu/bin/nm: _muldc3_s.o: plugin needed to handle lto object
/home/user/toolchain/x86_64-pc-linux-gnu/bin/nm: _mulxc3_s.o: plugin needed to handle lto object
/home/user/toolchain/x86_64-pc-linux-gnu/bin/nm: _divsc3_s.o: plugin needed to handle lto object
/home/user/toolchain/x86_64-pc-linux-gnu/bin/nm: _divdc3_s.o: plugin needed to handle lto object
/home/user/toolchain/x86_64-pc-linux-gnu/bin/nm: _divxc3_s.o: plugin needed to handle lto object
/home/user/toolchain/x86_64-pc-linux-gnu/bin/nm: _bswapsi2_s.o: plugin needed to handle lto object
/home/user/toolchain/x86_64-pc-linux-gnu/bin/nm: _bswapdi2_s.o: plugin needed to handle lto object
/home/user/toolchain/x86_64-pc-linux-gnu/bin/nm: _clrsbsi2_s.o: plugin needed to handle lto object
/home/user/toolchain/x86_64-pc-linux-gnu/bin/nm: _clrsbdi2_s.o: plugin needed to handle lto object
/home/user/toolchain/x86_64-pc-linux-gnu/bin/nm: _mulbitint3_s.o: plugin needed to handle lto object
/home/user/toolchain/x86_64-pc-linux-gnu/bin/nm: _fixunssfsi_s.o: plugin needed to handle lto object
/home/user/toolchain/x86_64-pc-linux-gnu/bin/nm: _fixunsdfsi_s.o: plugin needed to handle lto object
/home/user/toolchain/x86_64-pc-linux-gnu/bin/nm: _fixunsxfsi_s.o: plugin needed to handle lto object
/home/user/toolchain/x86_64-pc-linux-gnu/bin/nm: _fixsfdi_s.o: plugin needed to handle lto object
/home/user/toolchain/x86_64-pc-linux-gnu/bin/nm: _fixdfdi_s.o: plugin needed to handle lto object
/home/user/toolchain/x86_64-pc-linux-gnu/bin/nm: _fixxfdi_s.o: plugin needed to handle lto object
/home/user/toolchain/x86_64-pc-linux-gnu/bin/nm: _fixunssfdi_s.o: plugin needed to handle lto object
/home/user/toolchain/x86_64-pc-linux-gnu/bin/nm: _fixunsdfdi_s.o: plugin needed to handle lto object
/home/user/toolchain/x86_64-pc-linux-gnu/bin/nm: _fixunsxfdi_s.o: plugin needed to handle lto object
/home/user/toolchain/x86_64-pc-linux-gnu/bin/nm: _floatdisf_s.o: plugin needed to handle lto object
/home/user/toolchain/x86_64-pc-linux-gnu/bin/nm: _floatdidf_s.o: plugin needed to handle lto object
/home/user/toolchain/x86_64-pc-linux-gnu/bin/nm: _floatdixf_s.o: plugin needed to handle lto object
/home/user/toolchain/x86_64-pc-linux-gnu/bin/nm: _floatundisf_s.o: plugin needed to handle lto object
/home/user/toolchain/x86_64-pc-linux-gnu/bin/nm: _floatundidf_s.o: plugin needed to handle lto object
/home/user/toolchain/x86_64-pc-linux-gnu/bin/nm: _floatundixf_s.o: plugin needed to handle lto object
/home/user/toolchain/x86_64-pc-linux-gnu/bin/nm: _divdi3_s.o: plugin needed to handle lto object
/home/user/toolchain/x86_64-pc-linux-gnu/bin/nm: _moddi3_s.o: plugin needed to handle lto object
/home/user/toolchain/x86_64-pc-linux-gnu/bin/nm: _divmoddi4_s.o: plugin needed to handle lto object
/home/user/toolchain/x86_64-pc-linux-gnu/bin/nm: _udivdi3_s.o: plugin needed to handle lto object
/home/user/toolchain/x86_64-pc-linux-gnu/bin/nm: _umoddi3_s.o: plugin needed to handle lto object
/home/user/toolchain/x86_64-pc-linux-gnu/bin/nm: _udivmoddi4_s.o: plugin needed to handle lto object
/home/user/toolchain/x86_64-pc-linux-gnu/bin/nm: _udiv_w_sdiv_s.o: plugin needed to handle lto object
/home/user/toolchain/x86_64-pc-linux-gnu/bin/nm: _divmodbitint4_s.o: plugin needed to handle lto object
/home/user/toolchain/x86_64-pc-linux-gnu/bin/nm: cpuinfo_s.o: plugin needed to handle lto object
/home/user/toolchain/x86_64-pc-linux-gnu/bin/nm: sfp-exceptions_s.o: plugin needed to handle lto object
/home/user/toolchain/x86_64-pc-linux-gnu/bin/nm: _divhc3_s.o: plugin needed to handle lto object
/home/user/toolchain/x86_64-pc-linux-gnu/bin/nm: _mulhc3_s.o: plugin needed to handle lto object
/home/user/toolchain/x86_64-pc-linux-gnu/bin/nm: addtf3_s.o: plugin needed to handle lto object
/home/user/toolchain/x86_64-pc-linux-gnu/bin/nm: divtf3_s.o: plugin needed to handle lto object
/home/user/toolchain/x86_64-pc-linux-gnu/bin/nm: multf3_s.o: plugin needed to handle lto object
/home/user/toolchain/x86_64-pc-linux-gnu/bin/nm: negtf2_s.o: plugin needed to handle lto object
/home/user/toolchain/x86_64-pc-linux-gnu/bin/nm: subtf3_s.o: plugin needed to handle lto object
/home/user/toolchain/x86_64-pc-linux-gnu/bin/nm: unordtf2_s.o: plugin needed to handle lto object
/home/user/toolchain/x86_64-pc-linux-gnu/bin/nm: fixtfsi_s.o: plugin needed to handle lto object
/home/user/toolchain/x86_64-pc-linux-gnu/bin/nm: fixunstfsi_s.o: plugin needed to handle lto object
/home/user/toolchain/x86_64-pc-linux-gnu/bin/nm: floatsitf_s.o: plugin needed to handle lto object
/home/user/toolchain/x86_64-pc-linux-gnu/bin/nm: floatunsitf_s.o: plugin needed to handle lto object
/home/user/toolchain/x86_64-pc-linux-gnu/bin/nm: fixtfdi_s.o: plugin needed to handle lto object
/home/user/toolchain/x86_64-pc-linux-gnu/bin/nm: fixunstfdi_s.o: plugin needed to handle lto object
/home/user/toolchain/x86_64-pc-linux-gnu/bin/nm: floatditf_s.o: plugin needed to handle lto object
/home/user/toolchain/x86_64-pc-linux-gnu/bin/nm: floatunditf_s.o: plugin needed to handle lto object
/home/user/toolchain/x86_64-pc-linux-gnu/bin/nm: fixtfti_s.o: plugin needed to handle lto object
/home/user/toolchain/x86_64-pc-linux-gnu/bin/nm: fixunstfti_s.o: plugin needed to handle lto object
/home/user/toolchain/x86_64-pc-linux-gnu/bin/nm: floattitf_s.o: plugin needed to handle lto object
/home/user/toolchain/x86_64-pc-linux-gnu/bin/nm: floatuntitf_s.o: plugin needed to handle lto object
/home/user/toolchain/x86_64-pc-linux-gnu/bin/nm: fixsfbitint_s.o: plugin needed to handle lto object
/home/user/toolchain/x86_64-pc-linux-gnu/bin/nm: floatbitintsf_s.o: plugin needed to handle lto object
/home/user/toolchain/x86_64-pc-linux-gnu/bin/nm: fixdfbitint_s.o: plugin needed to handle lto object
/home/user/toolchain/x86_64-pc-linux-gnu/bin/nm: floatbitintdf_s.o: plugin needed to handle lto object
/home/user/toolchain/x86_64-pc-linux-gnu/bin/nm: extendhfsf2_s.o: plugin needed to handle lto object
/home/user/toolchain/x86_64-pc-linux-gnu/bin/nm: extendhfdf2_s.o: plugin needed to handle lto object
/home/user/toolchain/x86_64-pc-linux-gnu/bin/nm: extendhftf2_s.o: plugin needed to handle lto object
/home/user/toolchain/x86_64-pc-linux-gnu/bin/nm: extendhfxf2_s.o: plugin needed to handle lto object
/home/user/toolchain/x86_64-pc-linux-gnu/bin/nm: extendsfdf2_s.o: plugin needed to handle lto object
/home/user/toolchain/x86_64-pc-linux-gnu/bin/nm: extendsftf2_s.o: plugin needed to handle lto object
/home/user/toolchain/x86_64-pc-linux-gnu/bin/nm: extenddftf2_s.o: plugin needed to handle lto object
/home/user/toolchain/x86_64-pc-linux-gnu/bin/nm: extendxftf2_s.o: plugin needed to handle lto object
/home/user/toolchain/x86_64-pc-linux-gnu/bin/nm: extendbfsf2_s.o: plugin needed to handle lto object
/home/user/toolchain/x86_64-pc-linux-gnu/bin/nm: trunctfhf2_s.o: plugin needed to handle lto object
/home/user/toolchain/x86_64-pc-linux-gnu/bin/nm: truncxfhf2_s.o: plugin needed to handle lto object
/home/user/toolchain/x86_64-pc-linux-gnu/bin/nm: truncdfhf2_s.o: plugin needed to handle lto object
/home/user/toolchain/x86_64-pc-linux-gnu/bin/nm: truncsfhf2_s.o: plugin needed to handle lto object
/home/user/toolchain/x86_64-pc-linux-gnu/bin/nm: trunctfsf2_s.o: plugin needed to handle lto object
/home/user/toolchain/x86_64-pc-linux-gnu/bin/nm: truncdfsf2_s.o: plugin needed to handle lto object
/home/user/toolchain/x86_64-pc-linux-gnu/bin/nm: trunctfdf2_s.o: plugin needed to handle lto object
/home/user/toolchain/x86_64-pc-linux-gnu/bin/nm: trunctfxf2_s.o: plugin needed to handle lto object
/home/user/toolchain/x86_64-pc-linux-gnu/bin/nm: trunctfbf2_s.o: plugin needed to handle lto object
/home/user/toolchain/x86_64-pc-linux-gnu/bin/nm: truncxfbf2_s.o: plugin needed to handle lto object
/home/user/toolchain/x86_64-pc-linux-gnu/bin/nm: truncdfbf2_s.o: plugin needed to handle lto object
/home/user/toolchain/x86_64-pc-linux-gnu/bin/nm: truncsfbf2_s.o: plugin needed to handle lto object
/home/user/toolchain/x86_64-pc-linux-gnu/bin/nm: trunchfbf2_s.o: plugin needed to handle lto object
/home/user/toolchain/x86_64-pc-linux-gnu/bin/nm: fixtfbitint_s.o: plugin needed to handle lto object
/home/user/toolchain/x86_64-pc-linux-gnu/bin/nm: floatbitinttf_s.o: plugin needed to handle lto object
/home/user/toolchain/x86_64-pc-linux-gnu/bin/nm: fixhfti_s.o: plugin needed to handle lto object
/home/user/toolchain/x86_64-pc-linux-gnu/bin/nm: fixunshfti_s.o: plugin needed to handle lto object
/home/user/toolchain/x86_64-pc-linux-gnu/bin/nm: floattihf_s.o: plugin needed to handle lto object
/home/user/toolchain/x86_64-pc-linux-gnu/bin/nm: floatuntihf_s.o: plugin needed to handle lto object
/home/user/toolchain/x86_64-pc-linux-gnu/bin/nm: floattibf_s.o: plugin needed to handle lto object
/home/user/toolchain/x86_64-pc-linux-gnu/bin/nm: floatuntibf_s.o: plugin needed to handle lto object
/home/user/toolchain/x86_64-pc-linux-gnu/bin/nm: eqhf2_s.o: plugin needed to handle lto object
/home/user/toolchain/x86_64-pc-linux-gnu/bin/nm: fixxfbitint_s.o: plugin needed to handle lto object
/home/user/toolchain/x86_64-pc-linux-gnu/bin/nm: floatbitinthf_s.o: plugin needed to handle lto object
/home/user/toolchain/x86_64-pc-linux-gnu/bin/nm: floatbitintbf_s.o: plugin needed to handle lto object
/home/user/toolchain/x86_64-pc-linux-gnu/bin/nm: floatbitintxf_s.o: plugin needed to handle lto object
/home/user/toolchain/x86_64-pc-linux-gnu/bin/nm: getf2_s.o: plugin needed to handle lto object
/home/user/toolchain/x86_64-pc-linux-gnu/bin/nm: letf2_s.o: plugin needed to handle lto object
/home/user/toolchain/x86_64-pc-linux-gnu/bin/nm: eqtf2_s.o: plugin needed to handle lto object
/home/user/toolchain/x86_64-pc-linux-gnu/bin/nm: _divtc3_s.o: plugin needed to handle lto object
/home/user/toolchain/x86_64-pc-linux-gnu/bin/nm: _multc3_s.o: plugin needed to handle lto object
/home/user/toolchain/x86_64-pc-linux-gnu/bin/nm: _powitf2_s.o: plugin needed to handle lto object
/home/user/toolchain/x86_64-pc-linux-gnu/bin/nm: enable-execute-stack_s.o: plugin needed to handle lto object
/home/user/toolchain/x86_64-pc-linux-gnu/bin/nm: hardcfr_s.o: plugin needed to handle lto object
/home/user/toolchain/x86_64-pc-linux-gnu/bin/nm: strub_s.o: plugin needed to handle lto object
/home/user/toolchain/x86_64-pc-linux-gnu/bin/nm: unwind-dw2_s.o: plugin needed to handle lto object
/home/user/toolchain/x86_64-pc-linux-gnu/bin/nm: unwind-dw2-fde-dip_s.o: plugin needed to handle lto object
/home/user/toolchain/x86_64-pc-linux-gnu/bin/nm: unwind-sjlj_s.o: plugin needed to handle lto object
/home/user/toolchain/x86_64-pc-linux-gnu/bin/nm: unwind-c_s.o: plugin needed to handle lto object
/home/user/toolchain/x86_64-pc-linux-gnu/bin/nm: heap-trampoline_s.o: plugin needed to handle lto object
/home/user/toolchain/x86_64-pc-linux-gnu/bin/nm: emutls_s.o: plugin needed to handle lto object
/home/user/toolchain/x86_64-pc-linux-gnu/bin/nm: heap-trampoline_s.o: plugin needed to handle lto object
/home/user/toolchain/x86_64-pc-linux-gnu/bin/nm: emutls_s.o: plugin needed to handle lto object
mv tmp-libgcc.map libgcc.map
# @multilib_flags@ is still needed because this may use
# /home/user/build/./gcc/xgcc -B/home/user/build/./gcc/ -B/home/user/toolchain/x86_64-pc-linux-gnu/bin/ -B/home/user/toolchain/x86_64-pc-linux-gnu/lib/ -isystem /home/user/toolchain/x86_64-pc-linux-gnu/include -isystem /home/user/toolchain/x86_64-pc-linux-gnu/sys-include and -O2 -g -O2 -O3 -flto -march=native -DIN_GCC -W -Wall -Wno-narrowing -Wwrite-strings -Wcast-qual -Wstrict-prototypes -Wmissing-prototypes -Wold-style-definition -isystem ./include -fpic -mlong-double-80 -DUSE_ELF_SYMVER -fcf-protection -mshstk -g -DIN_LIBGCC2 -fbuilding-libgcc -fno-stack-protector directly.
# @multilib_dir@ is not really necessary, but sometimes it has
# more uses than just a directory name.
/bin/sh ../../../gcc-14.3.0/libgcc/../mkinstalldirs .
/home/user/build/./gcc/xgcc -B/home/user/build/./gcc/ -B/home/user/toolchain/x86_64-pc-linux-gnu/bin/ -B/home/user/toolchain/x86_64-pc-linux-gnu/lib/ -isystem /home/user/toolchain/x86_64-pc-linux-gnu/include -isystem /home/user/toolchain/x86_64-pc-linux-gnu/sys-include -O2 -g -O2 -O3 -flto -march=native -DIN_GCC -W -Wall -Wno-narrowing -Wwrite-strings -Wcast-qual -Wstrict-prototypes -Wmissing-prototypes -Wold-style-definition -isystem ./include -fpic -mlong-double-80 -DUSE_ELF_SYMVER -fcf-protection -mshstk -g -DIN_LIBGCC2 -fbuilding-libgcc -fno-stack-protector -shared -nodefaultlibs -Wl,--soname=libgcc_s.so.1 -Wl,--version-script=libgcc.map -o ./libgcc_s.so.1.tmp -g -O2 -O3 -flto -march=native -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 _mulsc3_s.o _muldc3_s.o _mulxc3_s.o _divsc3_s.o _divdc3_s.o _divxc3_s.o _bswapsi2_s.o _bswapdi2_s.o _clrsbsi2_s.o _clrsbdi2_s.o _mulbitint3_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 _divmoddi4_s.o _udivdi3_s.o _umoddi3_s.o _udivmoddi4_s.o _udiv_w_sdiv_s.o _divmodbitint4_s.o cpuinfo_s.o sfp-exceptions_s.o _divhc3_s.o _mulhc3_s.o addtf3_s.o divtf3_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 fixtfti_s.o fixunstfti_s.o floattitf_s.o floatuntitf_s.o fixsfbitint_s.o floatbitintsf_s.o fixdfbitint_s.o floatbitintdf_s.o extendhfsf2_s.o extendhfdf2_s.o extendhftf2_s.o extendhfxf2_s.o extendsfdf2_s.o extendsftf2_s.o extenddftf2_s.o extendxftf2_s.o extendbfsf2_s.o trunctfhf2_s.o truncxfhf2_s.o truncdfhf2_s.o truncsfhf2_s.o trunctfsf2_s.o truncdfsf2_s.o trunctfdf2_s.o trunctfxf2_s.o trunctfbf2_s.o truncxfbf2_s.o truncdfbf2_s.o truncsfbf2_s.o trunchfbf2_s.o fixtfbitint_s.o floatbitinttf_s.o fixhfti_s.o fixunshfti_s.o floattihf_s.o floatuntihf_s.o floattibf_s.o floatuntibf_s.o eqhf2_s.o fixxfbitint_s.o floatbitinthf_s.o floatbitintbf_s.o floatbitintxf_s.o getf2_s.o letf2_s.o eqtf2_s.o _divtc3_s.o _multc3_s.o _powitf2_s.o enable-execute-stack_s.o hardcfr_s.o strub_s.o unwind-dw2_s.o unwind-dw2-fde-dip_s.o unwind-sjlj_s.o unwind-c_s.o heap-trampoline_s.o emutls_s.o libgcc.a -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 && (echo "/* GNU ld script"; echo " Use the shared library, but some functions are only in"; echo " the static library. */"; echo "GROUP ( libgcc_s.so.1 -lgcc )" ) > ./libgcc_s.so
/home/user/toolchain/x86_64-pc-linux-gnu/bin/ld:libgcc.map:0: syntax error in VERSION script
collect2: error: ld returned 1 exit status
make[2]: *** [Makefile:1005: libgcc_s.so] Error 1
make[2]: Leaving directory '/home/user/build/x86_64-pc-linux-gnu/libgcc'
make[1]: *** [Makefile:13997: all-target-libgcc] Error 2
make[1]: Leaving directory '/home/user/build'
make: *** [Makefile:1062: all] Error 2
Однако это действительно странно, поскольку библиотека плагинов LTO уже установлена и должна загружаться автоматически при необходимости. И в качестве запасного варианта я уже явно поручил системе сборки использовать gcc-nm для nm, который способен работать с объектами LTO, но это тоже не помогает. binutil-2.45.1 собирается и устанавливается без каких-либо проблем с LTO, что означает, что установленный GCC работает нормально и может выполнять сборку LTO.
Вопрос
- Можно ли сам GCC собрать с помощью -flto? Если нет, то что является основной проблемой, которая препятствует оптимизации объектов самого GCC с помощью LTO?
- Если возможно собрать сам GCC с помощью LTO, какова правильная конфигурация?
Подробнее здесь: https://stackoverflow.com/questions/798 ... f-with-lto
Мобильная версия