質問: gentoo ldflagsの最適化は本当に必要ですか? 私はgentoo linuxを使用しています。これが私のツールチェーンです:sys-kernel/linux-headers-3.9 sys-devel/binutils-2.23.1 use="cxx nls zlib -multislot -multitarget -static-libs {-test} -vanilla" sys-devel/gcc-4.7.3-r1:4.7 use="cxx fortran gtk lto mudflap (multilib) nls nptl openmp (-altivec) -doc (-fixed-point) -gcj -go -graphite (-hardened) (-libssp) -multislot -nopie -nossp -objc -objc++ -objc-gc -regression-test -vanilla" sys-libs/glibc-2.17:2.2 use="(multilib) -debug -gd (-hardened) -nscd -profile (-selinux) -suid -systemtap -vanilla" これが私のcflagsです:$ cat /etc/portage/make.confcflags="-march=core-avx-i -mtune=core-avx-i -o2 -pipe -flto" cxxflags="${cflags}" chost="x86_64-pc-linux-gnu" # etc... いくつかのパッケージを除いて、全世界は[〜#〜] lto [〜#〜]で構築されています。$ cat /etc/portage/package.envdev-lang/perl no-lto dev-libs/elfutils no-lto dev-lang/spidermonkey no-lto dev-libs/glib no-lto sys-devel/llvm no-lto media-libs/mesa no-lto media-libs/alsa-lib no-lto sys-apps/preload no-lto app-text/aspell no-lto app-text/rarian no-lto sys-power/upower no-lto net-libs/farstream no-lto dev-python/notify-python no-lto x11-libs/wxgtk no-lto media-video/avidemux no-lto media-gfx/inkscape no-lto x11-base/xorg-server no-lto x11-drivers/xf86-video-intel no-lto net-libs/webkit-gtk no-lto mail-client/thunderbird no-lto $ cat /etc/portage/env/no-ltocflags="${cflags} -fno-lto" cxxflags="${cxxflags} -fno-lto" ldflags="${ldflags} -fno-lto" 一部のブログでは、作成者がmake.confファイルにも[〜#〜] ldflags [〜#〜]を設定していることに気付きましたが、それはしませんでした。 。オペレーティングシステムは、選択したプロファイルに従ってこれらのldflagsを設定します。$ emerge --info | grep ldflagsldflags="-wl,-o1 -wl,--as-needed" gentoo開発者とメンテナ 変更することはお勧めしません これらの行をmake.confファイルに設定してから、ツールチェーンとワールドを再構築したいと思います。cflags="-march=core-avx-i -mtune=core-avx-i -o2 -pipe -flto -wl,-flto" ldflags="-wl,-flto -wl,-o2" パフォーマンス/安定性に違いはありますか?これらの違いは、全世界を再コンパイルするのに必要な時間の価値がありますか?経験豊富なgentooユーザー/メンテナー/プログラマー/管理者からの提案、説明、より良い実践を聞きたいです...事前にどうもありがとうございました!
回答: 追加するためにcflagsを変更する必要はありません-wl、-lfto;リンクにcflagsを誤って使用しているパッケージがない限り、役に立ちません(そして、それらのパッケージはbugzillaに報告する必要があります)。ただし、ltoを最大限に活用するには、ldflagsに-fltoを追加する必要があります。 ldflags = "-wl、-o1 -wl、-必要に応じて-wl、-flto"ldflagsに追加するまで、実際にはltoのパフォーマンスは得られないため、lto自体を明示的に有効/無効にしなかったものはすべて再コンパイルする必要があります。