Как скомпилировать GCC с помощью LTOLinux

Ответить
Anonymous
 Как скомпилировать GCC с помощью LTO

Сообщение Anonymous »

Предпосылка
  • Пользователь не имеет 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
Похоже, что во время компиляции libgcc (который является частью пакета GCC) при вызове nm не удалось загрузить плагины LTO, которые, очевидно, необходимы, поскольку мы делаем сборку LTO.
Однако это действительно странно, поскольку библиотека плагинов 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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Linux»