gpt4 book ai didi

c++ - Makefile 无法链接 C++ 编写的共享库 .la

转载 作者:行者123 更新时间:2023-11-28 07:33:02 24 4
gpt4 key购买 nike

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 cannot like member function name by through an error.

../libclamav/.libs/libclamav.so: undefined reference to 'member_function_in_mylib.so'

最佳答案

您问题中引用的文本显然属于依赖于 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 或添加到 CPPFLAGSLDFLAGSconfigure 期间。 (注意:-I 标志在 autoconf 派生包中进入 CPPFLAGS 而不是 CFLAGS)

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

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

关于c++ - Makefile 无法链接 C++ 编写的共享库 .la,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17291953/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com