提问人:Tom 提问时间:2/2/2016 更新时间:2/2/2016 访问量:2335
g++ - “命令行中缺少 DSO”
g++ - "DSO missing from command line"
问:
我有一个相当复杂的构建,其中涉及许多静态和共享库,这些库使用 G++ 4.8 链接到 Ubuntu 14.04 上的可执行文件中。这个例子太复杂了,无法在这里重现,但它相当于这样:
我在代码中使用 boost 文件系统库中的函数,然后将其存档到静态库中,调用它。my_lib.a
然后我是这样链接的:
g++ -g -o Build/main -L Build/libs -Wl,--start-group ...lots of libraries here... \
Build/libs/my_lib.a -lboost_filesystem -Wl,--end-group
当我运行它时,我得到:
/usr/bin/ld: Build/my_lib.a(my_code.o): undefined reference to symbol '_ZN5boost10filesystem4pathdVERKS1_'
/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../x86_64-linux-gnu/libboost_filesystem.so: error adding symbols: DSO missing from command line
从我从谷歌上可以看出,这意味着我应该添加到我的链接命令行中 - 但它已经在那里了!我知道库的顺序通常也很重要,但我认为用 and 应该使对象和库变得无关紧要 - 无论如何,我认为我的顺序是正确的。那么这是怎么回事呢?-lboost_filesystem
-Wl,--start-group
-Wl,--end-group
答: 暂无答案
评论
--std=c++11