我在编译我的工作时遇到了一些麻烦,我使用的是Ubuntu的g++
。我得到了很多这些消息:链接C++失败[未定义的引用boost :: filesystem3 ...]
undefined reference to `boost::filesystem3::directory_entry::m_get_status(boost::system::error_code*) const'
undefined reference to `boost::filesystem3::path::extension() const'
undefined reference to `boost::filesystem3::path::filename() const'
undefined reference to `boost::filesystem3::path::filename() const'
(等)
我已经搜查,发现了很多答案,但没有对我的工作。
-lboost_system (/usr/lib/gcc/i686-linux-gnu/4.4.5/../../../../lib/libboost_system.so)
-lboost_filesystem (/usr/lib/gcc/i686-linux-gnu/4.4.5/../../../../lib/libboost_filesystem.so)
当连接它显示这两个库时,我猜错误是与第二个有关。
[email protected]:~$ locate libboost_filesystem.so
/home/hax/boost_1_47_0/bin.v2/libs/filesystem/build/gcc-4.4.5/release/threading-multi/libboost_filesystem.so.1.47.0
/home/hax/boost_1_47_0/stage/lib/libboost_filesystem.so
/home/hax/boost_1_47_0/stage/lib/libboost_filesystem.so.1.47.0
/usr/lib/libboost_filesystem.so
/usr/lib/libboost_filesystem.so.1.42.0
/usr/local/lib/libboost_filesystem.so
/usr/local/lib/libboost_filesystem.so.1.47.0
这是我的makefile相关线路:
-L. -L../bncsutil/src/bncsutil/ -L../StormLib/stormlib/ -L../boost/lib/ -lbncsutil -lpthread -ldl -lz -lStorm -lmysqlclient_r -lboost_date_time -lboost_thread -lboost_system -lboost_filesystem -Wl -t
我试着用-L几个不同的地方指着在那里我看到filesystem.so位于但是它没有工作!
任何人都可以在这些行中看到问题吗?如果你需要我添加一些额外的数据我会做,我没有看到问题:(
瓦。 at是-lxxxxx选项与组合命令行中的.o文件的相对位置?我使用的编译器之一要求先决条件应该在对象(库)的右侧。例如:g ++ -o a.out main.o -lbuzz -lbar -lfoo。其他一些编译器需要libs/object文件的相反顺序。尝试改变顺序,看看会发生什么。 –
g ++ -o [OUTPUT] [ALL .O HERE] -L。 -L ../ bncsutil/src/bncsutil/-L ../ StormLib/stormlib/-L ../ boost/lib/-lbncsutil -lpthread -ldl -lz -lStorm -lmysqlclient_r -lboost_date_time -lboost_thread -lboost_system -lboost_filesystem - Wl -t -lrt – nitrnitr