最近在使用别人提供的动态库,在用的时候还不是一下就能OK的,有些地方还是需要注意。
1、当我们在c++ 中调用C 的动态库,我们会经常出现 undefined reference to fun, 就是定义在动态库中的函数我们找不到,但是我们已经包含了相关的头文件了,为啥呢?这是因为我们需要把这个头文件放入到 extern "c"{ #include "mytestso.h"},这样我们就解决了这个问题。
2、warning: XXX.so, needed by /opt/XXX/XXX/XXX.so, not found (try using -rpath or -rpath-link) 错误的出现,这种情况我遇到的是我调用的动态库,这个动态库又调用了其他的动态库,虽然我在包含里面已经使用 -L 包含了相关库的路径,但是还是需要 加上 -l 来指定这个库。
3、有说依赖库顺序问题,我没出现过,不加讨论,如果你其他的都没问题,也可以考虑依赖库顺序。
4、生成动态库 -fPIC 表位置无关。