error adding symbols: DSO missing from command line,大型项目的代码编译时的常见问题。这开源项目中让人崩溃的问题如何解决呢?
先检查binutils版本
ld -v
如果版本号<2.22,那么检查一下编译选项,去掉--no-copy-dt-needed-entries
。
如果版本号>=2.22,那么就需要改一下Makefile了。
一般报错的时候,会提示正在连接哪些库,比如说,报错时,提示了
xxx/xxx/libssl.so,xxxxx
那么解决办法,是在Makefile中找到LIBS参数,添加对应的库。添加方法如下:
-lssl
一般来讲,就是-l
+xxx
。
具体的库名字,可以参考这个库的名字,去掉lib
。大多都没问题。
我在编译的时候,遇到几次这个问题,都是这样猜的名字。
如果哪位老手,有更靠谱的方法,希望不吝赐教。