我已经构建并安装了一个共享库,可以通过代码检测对我的项目进行一些分析,特别是使用gcc的-finstrument-functions
开关。
可以使用编译器开关打开和关闭检测,因此我希望能够通过重新配置将依赖关系打开和关闭。
我可以通过configure的CFLAGS将-finstrument-functions
传递给gcc,但是当我尝试通过LDFLAGS传递-lmylib
时,配置失败
configure:2796: checking whether we are cross compiling
configure:2804: gcc -o conftest -g -Wall -Wextra -Werror -lmylib conftest.c >&5
configure:2808: $? = 0
configure:2815: ./conftest
./conftest: error while loading shared libraries: libmylib.so.0: cannot open shared object file: No such file or directory
文件存在,我已仔细检查并编译并链接虚拟示例按预期工作。
有趣的是,当我将完整路径传递给共享库而不是-lmylib
时,错误仍然存在,但是当我将完整路径传递到相应的静态库时,configure会顺利运行,并且所有内容都按预期构建
我的问题简而言之:是否有可能将可选的共享库传递给autotools生成的配置脚本,而无需更改configure.ac?
谢谢, 安迪
答案 0 :(得分:1)
看起来您的库不在编译器的默认库搜索路径中。
您还可以使用LDFLAGS
开关通过-L
传递图书馆搜索路径:
CFLAGS=-finstrument-functions LDFLAGS="-lmylib -L/path/to/mylib" ./configure ....
答案 1 :(得分:1)
通过运行sudo ldconfig
如果其他人遇到同样的问题,我会留在这里。