LTO 란 무엇입니까?
LTO 의 약어입니다 링크 시간 최적화. 컴파일러가 소스 파일을 연결하는 순간 최적화를 지연시키는 작업으로, 단일 실행 파일을 구성하는 모든 파일을 단일 파일로 볼 수 있으며 이러한 방식으로보다 효과적인 방식으로 최적화를 적용 할 수 있습니다.
장점과 단점을 보려면 LTO: 벤치 마크 Phoronix
명심할 사항
- 불안정하여 일부 패키지에서 문제가 발생할 수 있습니다.
- 일부 패키지는 컴파일에 실패합니다 (나중에이 문제를 해결하는 방법에 대해 자세히 설명).
- 링커를 사용하는 것이 좋습니다. 덴탈.
- 미국 언제나 최신 버전 GCC.
덴탈, 사용하기 더 매력적인 고급 기능 지원 LTO, 그것은보다 빠릅니다 gnu ld, 특히 대규모 프로그램의 경우 5 배 빠름. 사용하려면 다음을 실행하십시오.
binutils-config --linker ld.gold
LTO 사용 : 권장 방법
활성화하는 대신 LTO 전역 적으로 (문제를 일으킬 수 있음) 원하는 패키지에서 활성화하는 것이 좋습니다. 이렇게하면 혜택을 받고 싶은 패키지 만 LTO 이 최적화로 컴파일되거나, 이점을 얻지 못하는 프로그램에서 느린 컴파일 시간을 피할 수 있습니다. 이는 다음과 같은 방법으로 달성 할 수 있습니다.
/ etc / portage / env 디렉토리에 파일을 생성합니다. LTO.conf 다음 줄을 추가합니다.
CFLAGS="${CFLAGS} -flto=5" #pon en -flto los hilos de tu CPU + 1
CXXFLAGS="${CXXFLAGS} -flto=5" #igual que arriba
LDFLAGS="${LDFLAGS} -fuse-linker-plugin" #solo si usas Gold, es mejor.
그래서 사용하려면 LTO 패키지에서 파일에 이름 (전체 이름, firefox 대신 www-client / firefox) 만 입력하면됩니다. 패키지.env함께있는 LTO.conf 오른쪽으로. 다음은 예입니다.
app-emulation/wine LTO.conf
www-client/firefox LTO.conf
sys-devel/gcc LTO.conf
kde-base/kdelibs LTO.conf
이제 우리는 그들이 사용할 패키지를 컴파일하기 만하면됩니다. LTO.
전역 적으로 LTO 사용 (권장하지 않음)
신청하는 대신 LTO 패키지별로, 우리는 전 세계적으로 적용 할 수도 있습니다 (제가 사용하는 것입니다). 이를 적용하려면 다음 단계를 따르십시오.
/etc/portage/make.conf 파일을 편집하고 다음을 추가합니다 (파일의 동일한 행입니다 LTO.conf):
CFLAGS="${CFLAGS} -flto=5" #pon en -flto los hilos de tu CPU + 1
CXXFLAGS="${CXXFLAGS} -flto=5" #igual que arriba
LDFLAGS="${LDFLAGS} -fuse-linker-plugin" #solo si usas Gold, es mejor.
차례로 /etc/portage/env/no-LTO.conf 파일을 만들고 다음 줄을 추가합니다.
CFLAGS="${CFLAGS} -fno-lto -fno-use-linker-plugin"
CXXFLAGS="${CXXFLAGS} -fno-lto -fno-use-linker-plugin"
LDFLAGS="${LDFLAGS} -fno-lto -fno-use-linker-plugin"
그리고 파일에서 패키지.env 컴파일이 실패한 패키지를 넣을 것입니다. LTO. 그 여기 내 패키지.env (내가 사용하는 놀토.conf 대신 비 LTO.conf).
우리는 또한 추가해야합니다 LTO USE 변수 make.conf, 이것은 개발자가 젠투 일부 패키지에서이 최적화를 사용하기위한 선택적 패치를 (천천히) 추가하고 있습니다.
이 작업이 완료되면 모든 시스템 패키지를 다시 컴파일 해 보겠습니다.
emerge -e @world @system --keep-going &> errores
–keep-going을 사용하여 운반 오류를 무시하고 &> 모든 버그의 출력을 errors라는 파일로 리디렉션하고이 파일을 사용하여 컴파일에 실패한 패키지를 확인하고 목록에 추가합니다. 패키지.env.
tail -f /var/log/emerge.log
그리고 그게 다야, 의심을 남기지 않았 으면 좋겠다. Openmp 및 / 또는 석묵.
젠투, 으 ...
중요한 것은 흑연입니다!
어리 석고 감각적 인 Graphite xD, xD 시스템을 파열시키는 비정상적인 것, 마지막으로 사용했을 때 "notify-send KDE <50"을 3 번 반복하여 a를 만들기에 충분했습니다. 50 번, 환경은 지옥으로 파열 될 것입니다.
나는 이미 내가 여전히 격려를 받고 Graphite로 만들었다 고 말했습니다. 그러나 어쨌든 Graphite (및 기타 최적화)는 LTO에서 가장 잘 작동합니다. 또한 LTO와 달리 Graphite 및 OpenMP에는 문제가 있습니다. 모든 프로그램이 혜택을받는 것은 아니며 혜택이없는 프로그램에서는 성능이 저하되므로이 경우 몇 가지 패키지에만 사용하는 것이 좋습니다.