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
我的意思是通过示例将-L / my_shared_library_path / mylib.so添加到libclamav_la_LIBADD来将共享库链接到Makefile。
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'的未定义引用
答案 0 :(得分:1)
您问题中引用的文字显然属于依赖于pkg-config的autoconf打包的Makefile.am
(或Makefile.in
)。如果这是您在Makefile
中的文字,那么您还有许多问题需要处理。由于@LIBCLAMAV_LIBS@
已经显示libclamav_la_LIBADD
,因此您需要配置pkg-config
以发出正确的标记,以便在配置时找到您的库。
将机器特定代码放在Makefile.am
(或Makefile.in
)中永远不合适。由于my_shared_libary_path
特定于您的框,因此通过pkg-config
或CPPFLAGS
期间添加到LDFLAGS
和configure
的相应标记的适当方式是-I
}。 (注意:autoconf
派生包装中的CPPFLAGS
个标记位于CFLAGS
而不是configure ... LDFLAGS=-L/my/shared/library/path CPPFLAGS=-I/my_include/src/wraper
)
如果您确实运行了configure,请尝试:
{{1}}