2014-03-24 5 views

답변

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 

을 이전 방법을 사용하여 만들 수 있습니다.

+2

'AM_LIBS'이 (가) 없습니다. – DanielKO

+0

prog_LDADD는 모든 곳에 존재하지 않는 것처럼 보이는 AM_LIBS 대신에 작업을 수행합니다. – innoSPG

+1

@DanielKO 기본 Makefile.am은 정확 합니다만, 대상 매크로 앞에 Makefile.am을 추가하면됩니다. –

1

일부 링커는 링크 시간에 확인되지 않은 기호를 무시할 수있는 옵션이 있습니다. 라이브러리가 로드 시간에 사용 가능할 것이라고 확신하는 한 링크 시간에 미해결 기호를 무시할 수있는 옵션이 있습니다. 예 : GNU ld의 경우 : --unresolved-symbols입니다. 여기에 --unresolved-symbols=ignore-in-shared-libs과 같은 옵션이 적합 할 수 있습니다. 는 OS X (마하 O) 링커 가지고 -undefined <error|warning|suppress|dynamic_lookup>

프로그램을 실행하고, 모든 기호는 동적 링커/로더에 의해 해결되어야한다.

런타임시 라이브러리를로드하고 주어진 함수 이름에 대한 함수 포인터 또는 핸들을 가져와야하는 기능과 dynamic loading 기능을 혼동하지 마십시오.

프로그램 'prog'의 경우 prog_LDFLAGSMakefile.am에 여분의 플래그를 추가 할 수 있습니다.