2013-06-11 7 views
1

GCC 4.7.2와 LD 2.23을 사용하고 있지만 컴파일 옵션에 -flto를 추가하면 컴파일 시간이 20 % 이상 증가합니다! 매뉴얼은 최적화를 위해 -fuse-linker-plugin이 필요하다는 것을 나타냅니다. 또한이 -flto에 기본적으로 활성화되어 있다고하지만 명시 적으로 추가 할 때 링크 명령에 다음과 같은 오류를 참조하십시오-flto를 작동시키는 방법은 무엇입니까?

g++: error: -fuse-linker-plugin is not supported in this configuration 

이 매뉴얼에 따르면,이 LD 2.21 이상에서 지원되어야한다. 왜 내가이 오류가 발생하는지 어떤 생각? 여기에 내 전체 컴파일 명령의 예가 있습니다 :

g++ -Wall -pipe -O3 -flto -fno-strict-aliasing -mtune=generic --no-exceptions -fPIC -c some.cc 
g++ -o exec -Xlinker some1.o some2.o -static some1.a some2.a -Wl,--wrap,open -flto -fuse-linker-plugin 

'ld --help |

-plugin PLUGIN    Load named plugin 
-plugin-opt ARG    Send arg to last-loaded plugin 
+0

[이 스레드] (http://gcc.gnu.org/ml/gcc-help/2012-04/msg00220.html)를 확인하셨습니까? –

+0

링크를 이용해 주셔서 감사합니다. 나는 GCC를 만들지 않았지만 strace로 GCC를 실행했고 LD에 대한 호출을 보지 않았으므로 GCC가 오류를 던지고 있다고 생각하지 않습니다. – dromodel

+0

그 옵션을 제거하고 strace를 사용하면 시스템 LD가 사용되지 않고 있음을 확인할 수 있습니다. 사용 된 버전은 2.23.1입니다. 골드인지 확실하지 않습니다. – dromodel

답변

3

링크 시간 최적화는 컴파일 시간을 줄이기 위해 가정 것이 아니라, 프로그램의 실행 시간을 최적화 : 옵션 "-plugin" '쇼 플러그인 GREP은 그래서 나는 GCC는 불평 이유를 이해하지 않습니다.

@options 여러분의 CFLAGS (또는 C++의 경우 CXXFLAGS)와 LDFLAGS에 "-flto -fuse-linker-plugin"을 추가하기 만하면됩니다.

@ gold : ld - 버전은 아마도 gnu LD를 반환하고 금으로 전환하며 ld 심볼 링크를

 which ld
 which ld.gold
을 가리 킵니다.
 ln -s /usr/bin/ld.gold /usr/bin/ld

관련 문제