我正在尝试在Ubuntu 11.10上编译一个使用Boost库的程序.我安装了Ubuntu Repository中的1.46-dev Boost库,但编译程序时出错.
undefined reference to boost::system::system_category()
我做错了什么?
hc_*_*hc_ 158
您使用的boost库取决于boost_system库.(并非所有人都这样做.)
假设您使用gcc,请尝试添加-lboost_system到编译器命令行以链接该库.
Mar*_*sse 59
与定义缺失符号(-lboost_system)的库链接是显而易见的解决方案,但在Boost.System的特定情况下,原始设计中的错误使得它的使用boost::system::generic_category()和boost::system::system_category()不必要.使用该标志进行编译-DBOOST_SYSTEM_NO_DEPRECATED会禁用该代码并允许许多程序在不需要的情况下进行编译-lboost_system(如果您明确使用某些库的功能,那么该链接当然仍然需要).
从Boost 1.66和此提交开始,此行为现在是默认行为,因此希望越来越少的用户需要此答案.
正如@AndrewMarshall所注意到的,另一种方法是定义BOOST_ERROR_CODE_HEADER_ONLY哪个版本启用了代码的标题版本.但是,Boost 不鼓励这样做,因为它可能会破坏某些功能.
Vad*_*man 17
对于那些不需要整个shebang的人来说,另一种解决方法是:使用开关
-DBOOST_ERROR_CODE_HEADER_ONLY. 
如果你使用CMake,那就是add_definitions(-DBOOST_ERROR_CODE_HEADER_ONLY).
use*_*604 16
上面的错误是链接器错误...链接器一个程序,它接受编译器生成的一个或多个对象,并将它们组合成一个可执行程序.
您必须将'-l boost_system'添加到链接器标志,这将向链接器指示它必须查找boost::system::system_category()库中的符号libboost_system.so
如果你有main.cpp,可以:
g++ main.cpp -o main -lboost_system
要么
g++ -c -o main.o main.cpp
g++ main.o -lboost_system
使用CMAKE和find_package时,请确保它是:
find_package(Boost COMPONENTS system ...)
并不是
find_package(boost COMPONENTS system ...)
有些人可能已经失去了几个小时......
小智 6
我遇到了同样的问题:
g++ -mconsole -Wl,--export-all-symbols -LC:/Programme/CPP-Entwicklung/MinGW-4.5.2/lib  -LD:/bfs_ENTW_deb/lib   -static-libgcc -static-libstdc++ -LC:/Programme/CPP-Entwicklung/boost_1_47_0/stage/lib   \
 D:/bfs_ENTW_deb/obj/test/main_filesystem.obj \
 -o D:/bfs_ENTW_deb/bin/filesystem.exe -lboost_system-mgw45-mt-1_47 -lboost_filesystem-mgw45-mt-1_47
D:/bfs_ENTW_deb/obj/test/main_filesystem.obj:main_filesystem.cpp :(.text + 0x54):未定义的引用`boost :: system :: generic_category()
解决方案是使用system-lib的debug-version:
g++ -mconsole -Wl,--export-all-symbols -LC:/Programme/CPP-Entwicklung/MinGW-4.5.2/lib  -LD:/bfs_ENTW_deb/lib   -static-libgcc -static-libstdc++ -LC:/Programme/CPP-Entwicklung/boost_1_47_0/stage/lib   \
 D:/bfs_ENTW_deb/obj/test/main_filesystem.obj \
 -o D:/bfs_ENTW_deb/bin/filesystem.exe -lboost_system-mgw45-mt-d-1_47 -lboost_filesystem-mgw45-mt-1_47
但为什么?
| 归档时间: | 
 | 
| 查看次数: | 133077 次 | 
| 最近记录: |