./configure && make && make install
으로 빌드 할 수있는 프로젝트 (Antlr3 for C)가 있습니다.autotools에서 컴파일러/링커 플래그 제거 configure
컴파일 명령에 사용되는 플래그 중 하나는 -Wl,-soname -Wl,libantlr3c.so
입니다. 전체 명령은 다음과 같습니다.
libtool: link: gcc -shared .libs/antlr3baserecognizer.o .libs/antlr3basetree.o \
.libs/antlr3basetreeadaptor.o .libs/antlr3bitset.o .libs/antlr3collections.o \
.libs/antlr3commontoken.o .libs/antlr3commontree.o .libs/antlr3commontreeadaptor.o \
.libs/antlr3commontreenodestream.o .libs/antlr3convertutf.o .libs/antlr3cyclicdfa.o \
.libs/antlr3debughandlers.o .libs/antlr3encodings.o .libs/antlr3exception.o \
.libs/antlr3filestream.o .libs/antlr3inputstream.o .libs/antlr3intstream.o \
.libs/antlr3lexer.o .libs/antlr3parser.o .libs/antlr3rewritestreams.o \
.libs/antlr3string.o .libs/antlr3tokenstream.o .libs/antlr3treeparser.o \
-m64 -Wl,-soname -Wl,libantlr3c.so -o .libs/libantlr3c.so
-Wl,-soname -Wl,libantlr3c.so
부분 만 어떻게 제거 할 수 있습니까?
configure 명령에서 컴파일러 및 링커 플래그를 CFLAGS
및 LDFLAGS
으로 덮어 쓸 수 있다는 것을 알고 있습니다. 나는, 그들은/환경 변수 표기 할 수 그러나
CFLAGS=BLAH LDFLAGS=blah ./configure
같은 것을 이해하지만 this link에 따르면,
./configure CFLAGS=blah LDFLAGS=blah
같은이야, 나는 그 용도가 재정 시도 것이라고 생각 모두 CFLAGS
또는 LDFLAGS
입니다. 난 단지 -Wl,
컴파일러 링커에 플래그를 전달하는 의미 이해의 -soname
플래그 (제외 할. LDFLAGS=-soname=
또는 CFLAGS="-Wl,soname -Wl,"
, 이들의 변화 같은 것들을 내 시도
없음, 지금까지 성공하지 않았다
this question에서 메이크 파일 내에서 플래그를 제거 할 수있는 것처럼 보이지만, configure
명령을 사용하여 명령 줄에서 플래그를 무시하는 것이 적용되지 않습니다. 이러한 변수를 제공 할 수도 있습니다. configure
명령 대신 make
명령을 실행했지만 성공하지 못했습니다.
참고 : configure
명령으로 생성 되었기 때문에 Makefile을 변경하는 것이 의미가 없습니다.
이 문제에 익숙합니다. Antlr3은 -l을 사용하지 않고 gcc에 대한 완전한 경로를 제공하여 종속성이 연결되는 패키지 관리 시스템에서 라이브러리의 종속성입니다. 이것은 실행 파일의 경로를 하드 코드합니다.이 경우 실행 파일은 필요한 경로입니다. -soname을 사용하여 종속성을 구축 할 때만 예외가 있습니다. 전체 경로가 하드 코드되지는 않지만 지정된 이름은 하드 코딩됩니다. 이렇게하면 환경을 복잡하게 만드는 Antlr3을/usr/local/lib에 설치해야합니다. –