2012-11-07 2 views
0

주 응용 프로그램과 두 개의 라이브러리 foo와 bar가 있습니다. foo는 일부 메소드에서 bar를 사용하며 LDADD에 지정되어 있습니다. 주 응용 프로그램은 foo를 사용하고 간접적으로 bar를 사용하므로 Makefile에 LDADD = foo가 있습니다.라이브러리에 한 번만 연결하십시오.

이 경우, 메인 애플리케이션의 LDADD에도 bar 라이브러리를 추가하지 않으면 컴파일 오류가 발생합니다.

정의되지 않은 참조; foo의 .so 파일에는 bar의 .so 파일이 필요합니다.

나는 이것을 이해하지 못한다. LDADD = bar로 (비 정적) foo를 컴파일하면 foo를 사용하는 응용 프로그램을 컴파일 할 때 다시 필요합니까?

+0

가능한 중복 http://stackoverflow.com/questions/ : 라이브러리의 일환으로 bar이 필요 foo 때문에 즉, 11802727/libtool-doesnt-provide-library-dependencies-to-link). Ubuntu에서 libtool을 사용하고 있습니까? – ldav1s

답변

1

foo 및/또는 bar이 소스 트리의 일부로 빌드 된 libtool 라이브러리 인 경우 지정하지 마십시오. 그렇다면 libtool이 링크를 취해야합니다.

libfoo_la_LIBADD = ../bar/libbar.la # in: foo/Makefile.am 

하고,

prog_LDADD = ../foo/libfoo.la # in: app/Makefile.am 
[우분투 libtool이 (알려진 문제의