[CMake] 寻找一个动态链接库的所在路径
[CMake] 寻找一个链接库的所在路径
背景(可跳过)
由于之前犯病安装DOCA,导致我在编译DPDK时出现如下报错:
fatal error: rxp-compiler.h: No such file or directory
这个rxp-compiler库并不是安装DPDK所必须的库,我用的集群中的其它机器就是没有这个库的。如果上网搜索或者查找源码的话,可以找到下面的代码:
#ifdef REE_COMPILER_SDK
#include <rxp-compiler.h>
...
而这个REE_COMPILER_SDK
是由下面的代码提供的
lib = cc.find_library('librxp_compiler', required: false)
if lib.found()
ext_deps += lib
ext_deps += cc.find_library('libstdc++', required: true)
cflags += ['-DREE_COMPILER_SDK']
endif
在meson setup build
的输出中查找rxp,可以找到这样一行:
Library librxp_compiler found: YES
而对于其他的机器,这行应该是NO。
因此我们可以分析出原因:之前安装DOCA的时候,可能是安装了rxp_compiler这个库。后来卸载DOCA时,rxp_compiler这个库并没有完全卸载。导致我在安装DPDK时,meson脚本找到了这个库,以为我们有对这个库的支持,所以就启用了相关功能的编译。但在ninja编译时,找不到rxp_compiler库,所以报错。
所以我们要做的时找到rxp_compiler这个库的所在位置,然后将它删掉。
方法(正文)
借助CMake的find_library即可。
例如,我们想要查找librxp_compiler这个库。那么我们新建一个空文件夹,然后在里面创建一个CMakeLists.txt,写入下面的内容:
find_library(RES rxp_compiler)
message(${RES})
然后cd到这个文件夹,输入cmake .
查看输出。
/usr/lib/x86_64-linux-gnu/librxp_compiler.so
于是便找到了这个动态链接库的路径。
| 欢迎来原网站坐坐! >原文链接<