2012-06-28 3 views
3

나는 libcc에 의존하는 libbb에 의존하는 프로그램 aa을 가지고 있습니다.libtool automake : LIBADD가 정적 링크로 끊어 졌습니까?

은 libb의 Makefile.am에서 나는

aa_LDADD = -lbb 

이 기본 케이스에서 멋진 작품을 추가 한 AA의 메이크에서

libbb_la_LIBADD = -lcc 

을 추가했습니다.

하지만 정적 연결이 필요하므로 모든 구성을 --disable-shared과 함께 실행했습니다. aa를 컴파일 할 때
불행하게도 내가 가지고 :

libb_source.c : 정의되지 않은 참조가

무슨 일이없는 어떤 아이디어를 libcc_symbol 할 수 있습니까?

업데이트 : 크로스 컴파일 및 stagingdir을 사용하는 경우 종속성을 지정하지 마십시오

+1

'libbb'와 'libcc'가 libtool로 빌드 된 경우,'LIBADD'와'LDADD' 변수는'-lbb'보다는'libbb.la'를 나열해야합니다. 조건 적으로'-static'을'AM_LDFLAGS' 변수에 추가 할 수 있습니다. –

+0

@BrettHale 댓글에 답을 입력하지 마십시오. 내 친구! :) –

+0

하지만 크로스 컴파일 및 스테이징 디렉토리를 사용한다면 어떻게해야합니까? – Waldheinz

답변

1

링크 플래그를 전달하지 마십시오. 그것에게 libtool이 아카이브의 이름을 지정하고 automake는 그것을 해결하자 : 혹시 윈도우 DLL을 구축하려는 경우

aa_LDADD = bb/libbb.la 

, 당신은 또한 libbb_la_LDFLAGS-no-undefined을 넣어 할 수 있습니다.

+0

libbb.la의 위치가 Makefile.am과 관련이 없지만 디렉토리의 어딘가에서 LDFLAGS에 -L을 추가하면 어떻게해야합니까? – arved

+0

libbb.la는 실제로 프로젝트의 일부입니까, 아니면 설치된 일부 시스템 라이브러리입니까? –

+0

일부 설치된 시스템 라이브러리입니다. LIBADD는 LDFLAGS를 확인하지 않는 것 같습니다. 내가 볼 수있는 유일한 해결책은 .la 파일의 절대 경로를 가져 오는 구성 테스트를 작성하는 것입니다. 그러나 이것은 약간 hackish 보인다. – arved