2013-06-25 57 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