【无标题】c++ 提前检测未被链接到的库,并找到其位置

在编译 c++ 代码生成 .so 文件时,当由于某些库未被链接到时,编译过程不会报错,但是运行的时候会一点一点的报错,这样比较影响效率。所以我们可以用 ldd -r xxx.so 来查看该 .so 文件哪些函数没有链接到合适的库,再用 c++filt undefined symbol 查到对应的函数,再用类似于 grep -r “函数名”(双引号不能省) 目录来检索该目录下哪些文件包含了这个函数,定位到哪些文件,一个个地修改即可。
一个例子:

ldd -r a.so
return: undefined symbol: _ZN13GlucoseSolver10add_clauseERKSt6vectorIiSaIiEE (./a.so)

c++filt _ZN13GlucoseSolver10add_clauseERKSt6vectorIiSaIiEE
return: GlucoseSolver::add_clause(std::vector<int, std::allocator<int> > const&)

grep -r "add_clause" /home/huan/Pycode/trail/
return: 该目录下所有出现 add_clause 的代码所在行及其所在文件名。

猜你喜欢

转载自blog.csdn.net/qq_42194665/article/details/131654202