0

Makefile 包含创建 libclamav 的 .la 扩展文件。

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/wrapper -DSEARCH_LIBDIR=\"$(libdir)\"

libclamav_la_LDFLAGS = -L/usr/lib32 -lOpenCL @TH_SAFE@ -version-info @LIBCLAMAV_VERSION@ -no-undefined

我的观点是将共享库链接到 Makefile,例如将 -L/my_shared_library_path/mylib.so 添加到 libclamav_la_LIBADD 中。

libclamav_la_LDFLAGS = -L/my_shared_library_path/ -lmylib @TH_SAFE@ -version-info @LIBCLAMAV_VERSION@ -no-undefined

Makefile 不能通过错误来喜欢成员函数名称。

../libclamav/.libs/libclamav.so:未定义对“member_function_in_mylib.so”的引用

4

1 回答 1

1

您的问题中引用的文本显然属于Makefile.am(或Makefile.in)来自依赖 pkg-config 的 autoconf'd 打包。如果那是您在 a 中的文本Makefile,那么您还有更多问题需要处理。由于@LIBCLAMAV_LIBS@已经出现在 中libclamav_la_LIBADD,您需要配置pkg-config以发出正确的标志以在配置时定位您的库。

将特定于机器的代码放在Makefile.am(或Makefile.in)中是不合适的。由于my_shared_libary_path特定于您的盒子,因此将相关标志放入构建中的适当方法是通过pkg-config或添加到CPPFLAGSLDFLAGS期间configure。(注意:派生包装-I中的标志进入而不是)autoconfCPPFLAGSCFLAGS

如果您确实运行了配置,请尝试:

configure ... LDFLAGS=-L/my/shared/library/path CPPFLAGS=-I/my_include/src/wraper
于 2013-06-26T13:21:38.040 回答