C++ g++;-&引用;命令行中缺少DSO“;

C++ g++;-&引用;命令行中缺少DSO“;,c++,boost,linker,g++,undefined-reference,C++,Boost,Linker,G++,Undefined Reference,我有一个相当复杂的构建,它涉及到许多静态库和共享库被链接到Ubuntu 14.04上使用G++4.8的可执行文件中。该示例过于复杂,无法在此处重现,但它相当于: 我在代码中使用boost文件系统库中的函数,然后将其归档到一个静态库中,称之为my_lib.a 然后我链接如下: g++ -g -o Build/main -L Build/libs -Wl,--start-group ...lots of libraries here... \ Build/libs/my_lib.a -lbo

我有一个相当复杂的构建,它涉及到许多静态库和共享库被链接到Ubuntu 14.04上使用G++4.8的可执行文件中。该示例过于复杂,无法在此处重现,但它相当于:

我在代码中使用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

从Google上我可以看出,这意味着我应该将
-lboost\u filesystem
添加到我的link命令行中,但它已经存在了!我知道库的顺序通常也很重要,但我认为用
-Wl、-start-group
-Wl、-end-group
包围对象和库应该会使这一点变得无关紧要——无论如何,我认为我的顺序是正确的。发生了什么事?

这可能与此相关,谢谢,我将尝试其中的一些建议。我已切换到boost 1.60.0,它是使用
--std=c++11
从头开始构建的,与此错误没有任何区别。可能重复