을 사용하여 정적 libtool이 라이브러리에 공유 라이브러리를 연결내가이 디렉토리 구조를 가지고 automake에
LIBA에서,이처럼 보이는 Makefile.am이prog/libA
prog/libB
:
은 LAPACK이noinst_LTLIBRARIES = libA.la
libA_la_SOURCES = ...
libA_la_LIBADD = ... $(LAPACK)
곳을 내 시스템의 lapack 설치. 이것은 예상대로 작동합니다. 그러나 libB에서 나는 이것을 가지고있다 :
noinst_LTLIBRARIES = libB.la
bin_PROGRAMS = compLibB
libB_la_SOURCES = ...
compLibB_SOURCES = ...
libB_LIBADD = $(top_builddir)/libA/libA.la ...
compLibB_LDADD = libB.la
이것은 작동하지 않는다. 마지막 라인을
compLibB_LDADD = libB.la $(LAPACK)
으로 변경하지 않으면 compLibB의 링크 단계에서 LAPACK에 대한 정의되지 않은 참조가 불평하지만 불필요한 것처럼 보입니다. libA.la
편의 lib를 빌드 할 때 이미 $(LAPACK)
에 링크되어 있지 않습니까? 현재 compLibB가 libA의 세부 사항에 관심을 가져야하기 때문에 부정하다. libA 빌드 단계에서 LAPACK 라이브러리에 링크 할 수있는 방법이 없으므로 compLibB 빌드 단계에서 다시 지정할 필요가 없습니다.
[Windows DLL 전달자 또는 MacOS reexport \ _library와 유사한 Linux] 가능한 복제본 (http://stackoverflow.com/questions/22764734/linux-equivalent-of-windows-dll-forwarders-or-macos-reexport- 도서관) –
일하는 것으로되어 있습니다! 예를 들어, xapian omega app (http://xapian.org/docs/xapian-omega-1.2.21/NEWS)에서 이와 동일한 접근 방식이 사용됩니다. 그러나 그것은 아닙니다 - 오메가 응용 프로그램을 빌드하는 동안 질문에 설명 된 것과 동일한 문제가 발생합니다 ... – Nik