그런 플래그를 대신 Makefile.am에 설정할 수 있습니까? 그건 내가 https://stackoverflow.com/questions/22617744/how-to-disable-the-runtime-checking-of-dynamic-libraries-if-they-are-not-used에서 물어 본 문제를 해결할 것이다.configure.ac 대신 Makefile.am에 컴파일 및 링크 플래그를 설정할 수 있습니까?
0
A
답변
1
당신이 그때 당신은 다음과 같은 사용하기 위해 컴파일시 링커 플래그를 전달 할 수 있어야한다, Autoconf에와 Automake의를 사용하는 경우 :
make LDFLAGS='-L/my/nonstandard/prefix/lib' target
또한, 당신은 CC 위해이 작업을 수행 할 수 CFLAGS, CPP , CPPFLAGS 및 LIBS. 예를 들면 :
make CC=gcc-4.2 \
LIBS='-lmylibrary -lhislib ../lib/libcustom.a' \
LDFLAGS='-L/opt/vend/lib' \
CPPFLAGS='-I../include' \
CFLAGS='-Wall' \
target
당신이 메이크 파일에 영구적으로 그들에게 변수에 automake에 추가 할 경우 여전히 전달하여 플래그를 추가 할 수 있습니다, 위의 변수를 사용하여
AM_LIBS = -lmylibrary -lhislib ../lib/libcustom.a
AM_LDFLAGS = -L/opt/vend/lib
AM_CPPFLAGS = -I../include
AM_CFLAGS = -Wall
을 이전 방법을 사용하여 만들 수 있습니다.
1
일부 링커는 링크 시간에 확인되지 않은 기호를 무시할 수있는 옵션이 있습니다. 라이브러리가 로드 시간에 사용 가능할 것이라고 확신하는 한 링크 시간에 미해결 기호를 무시할 수있는 옵션이 있습니다. 예 : GNU ld의 경우 : --unresolved-symbols
입니다. 여기에 --unresolved-symbols=ignore-in-shared-libs
과 같은 옵션이 적합 할 수 있습니다. 는 OS X (마하 O) 링커 가지고 -undefined <error|warning|suppress|dynamic_lookup>
프로그램을 실행하고, 모든 기호는 동적 링커/로더에 의해 해결되어야한다.
런타임시 라이브러리를로드하고 주어진 함수 이름에 대한 함수 포인터 또는 핸들을 가져와야하는 기능과 dynamic loading 기능을 혼동하지 마십시오.
프로그램 'prog'
의 경우 prog_LDFLAGS
에 Makefile.am
에 여분의 플래그를 추가 할 수 있습니다.
'AM_LIBS'이 (가) 없습니다. – DanielKO
prog_LDADD는 모든 곳에 존재하지 않는 것처럼 보이는 AM_LIBS 대신에 작업을 수행합니다. – innoSPG
@DanielKO 기본 Makefile.am은 정확 합니다만, 대상 매크로 앞에 Makefile.am을 추가하면됩니다. –