1
我建立一個共享庫,並有一個源代碼樹的結構是這樣的:鏈接到同級的libtool庫遞歸的Automake
Makefile.am
src/
Makefile.am
srcfile1.h
srcfile1.cpp
...
thirdpaty/
Makefile.am
lib1/
Makefile.am
lib1.h
lib1.cpp
...
lib2/
...
我用遞歸Automake的,因爲一些第三方的庫都分佈有自己的Automake文件。 src/Makefile.am
包括通常的libtool的宏:
lib_LTLIBRARIES = libmylib.la
libmylib_la_SOURCES = scrfile1.h srcfile1.cpp ...
怎樣主庫鏈接到第三方的呢?該Autotools manual使我相信第三方庫需要建立爲libtool的簡易庫,所以在thirdparty/lib1/Makefile.am
我有以下幾點:
noinst_LTLIBRARIES = libthirdpaty1.la
libthirdpaty1_la_SOURCES = lib1.cpp lib1.h
,並添加src/Makefile.am
如下:
libmylib_la_LIBADD = $(top_buildir)/thirdparty/lib1/libthirdpaty1.la
我根Makefile.am包含INCLUDES宏:
INCLUDES = -I$(top_builddir)/thirdparty
但是使用此配置構建可以使我獲得undef發現符號錯誤。
構建此源代碼並將所有庫鏈接在一起的正確方法是什麼?
你在做什麼看起來很健全。所以我會先看看這些符號。他們是否定義?如果有多個便利圖書館,他們是否按照正確的順序鏈接?等等。 –
你是對的,我是在錯誤的順序包括子文件夾。謝謝你的提示! – Narcolei