我難住了一個automake鏈接。即使在手冊上翻閱了幾個小時並在網上搜索,也可能是對自動工具的誤解。automake程序libtool包裝鏈接
我有一個由libtool製作的.la庫,一個.dylib共享庫,並且正在創建一個程序。 .la鏈接到.dylib,程序使用.la。
Makefile.am的.la庫
lib_LTLIBRARIES = libA.la
libA_la_LDFLAGS = ${AM_LDFLAGS} -no-undefined
libA_la_LIBADD = $(LIBM) -Ldir/to/ -lB
libA_la_CPPFLAGS = ${AM_CPPFLAGS}
Makefile.am的程序與libtool的包裝
noinst_PROGRAMS = test
test_SOURCES = test_source.c
test_LDADD = libA.la -Ldir/to/ -lB
libA.la創建並鏈接到B.dylib但測試項目「包裝「由automake創建導出DYLD_LIBRARY_PATH
找到libA.la而不鏈接到B.dylib。給錯誤
dyld: Library not loaded: ./B.dylib
Referenced from: /dir/to/test/.libs/test
Reason: image not found
Trace/BPT trap: 5
在test_LDADD
已經被補充說,我已經試過除了正在增加-Ldir/to/ -lB
到test_LDFLAGS
有些事情。並試圖設置test_LDFLAGS = -rpath -Ldir/to
,希望將運行時搜索路徑設置爲B.dylib將幫助的目錄。
如果我手動導出DYLD_LIBRARY_PATH
以包含/dir/to/B.dylib
那麼測試程序可以運行,但我希望讓autotools處理此問題,而不是要求某人在能夠運行之前導出路徑。