2013-06-25 59 views
0

Makefile文件包含創建libclamav .la擴展文件。Makefile文件不能鏈接庫共享該.la通過寫C++

libclamav_la_LIBADD = @的libltdl @ $(IFACELIBADD)$(LLVMLIBADD) libclamav_internal_utils.la @ LIBCLAMAV_LIBS @ THREAD_LIBS @的libm @

libclamav_la_DEPENDENCIES = @ LTDLDEPS @ $(IFACEDEP)$(LLVMDEP) libclamav_internal_utils.la

libclamav_la_CFLAGS = -I ../ my_include/SRC /包裝-DSEARCH_LIBDIR = \ 「$(LIBDIR)\」

libclamav_la_LDFLAGS = -L/USR/LIB32 -lOpenCL @ TH_SAFE @ -versio正信息 @ LIBCLAMAV_VERSION @ -no-未定義

我的觀點鏈接共享庫Makefile文件通過添加-L/my_shared_library_path/mylib.so到libclamav_la_LIBADD的例子。

libclamav_la_LDFLAGS = -L/my_shared_library_path/-lmylib @ TH_SAFE @ -version-信息 @ LIBCLAMAV_VERSION @ -no-未定義

生成文件不能由通過誤差喜歡成員函數名。

../libclamav/.libs/libclamav.so:未定義的引用 'member_function_in_mylib.so'

+0

你能在命令行上成功進行鏈接(即沒有makefile),使用這些標誌? – Beta

回答

1

在你的問題引用明確的文字所屬的Makefile.am(或Makefile.in)從一個autoconf '依靠pkg-config打包。如果這是Makefile中的文字,那麼您還有很多問題需要處理。由於@[email protected]已經出現在libclamav_la_LIBADD,你需要配置pkg-config發出正確的標誌在配置時找到您的圖書館。

這是永遠不會適當放機在Makefile.am(或Makefile.in)特定代碼。由於my_shared_libary_path是具體到你的箱子,用適當的方式來獲取相關的標誌到構建是通過pkg-config或通過在configure增加CPPFLAGSLDFLAGS。 (注:-I標誌在autoconfCPPFLAGS而非CFLAGS衍生包裝GO)

如果你沒有運行配置,只是嘗試:

configure ... LDFLAGS=-L/my/shared/library/path CPPFLAGS=-I/my_include/src/wraper