我正在关注this tutorial但是它没有说明我需要包含哪些库以便提升工作,链接的当前选项是:
-I/usr/include/opencv2 -I/usr/include/boost_1_55_0 -I/usr/include/boost_1_55_0/boost -O0 -g3 -Wall -c -fmessage-length=0
但是这会返回以下错误:
表示它无法找到asio,我做错了什么或者是错误的库链接到哪个?或者还有其他方法可以找到答案。请注意,这是我的第二个c ++项目(通过我有很多java经验),首先是大量使用库,因此需要细节。
删除boost / asio给了我以下错误:
make all
Building target: DisplayImage
Invoking: GCC C++ Linker
g++ -L/usr/include/opencv2 -L/usr/include/boost_1_55_0/boost -L/usr/include/boost_1_55_0 -L/usr/include/opencv2 -L/usr/lib -o "DisplayImage" ./src/Cap.o ./src/DisplayImage.o ./src/Filters.o ./src/sender.o -lopencv_imgproc -lopencv_highgui -lopencv_core
./src/sender.o: In function `__static_initialization_and_destruction_0':
/usr/include/boost_1_55_0/boost/system/error_code.hpp:222: undefined reference to `boost::system::generic_category()'
/usr/include/boost_1_55_0/boost/system/error_code.hpp:223: undefined reference to `boost::system::generic_category()'
/usr/include/boost_1_55_0/boost/system/error_code.hpp:224: undefined reference to `boost::system::system_category()'
./src/sender.o: In function `error_code':
/usr/include/boost_1_55_0/boost/system/error_code.hpp:323: undefined reference to `boost::system::system_category()'
./src/sender.o: In function `boost::asio::error::get_system_category()':
/usr/include/boost_1_55_0/boost/asio/error.hpp:224: undefined reference to `boost::system::system_category()'
collect2: ld returned 1 exit status
make: *** [DisplayImage] Error 1
构建完成**
如果重要的话,我会使用ubuntu(x64)笔记本电脑。
答案 0 :(得分:1)
大多数boost都是在所谓的“仅标头”代码中实现的。通过大量使用C ++模板,您的代码无需链接的实际库代码。但是,正如您已经看到一些实际的库一样。一般来说,您寻求的帮助可能在这里:http://www.boost.org/doc/libs/1_55_0/more/getting_started/unix-variants.html#link-your-program-to-a-boost-library
您的特定程序使用timer
和system
库,因此您可以使用此命令行链接您的程序:
g++ timer.cpp -o timer -lboost_timer -lboost_system
答案 1 :(得分:0)
您可以查看boost/libs/asio/example/cpp03/tutorial/Jamfile.v2
中的bjam:
project
: requirements
<library>/boost/system//boost_system
<library>/boost/thread//boost_thread
<define>BOOST_ALL_NO_LIB=1
<threading>multi
<os>SOLARIS:<library>socket
<os>SOLARIS:<library>nsl
<os>NT:<define>_WIN32_WINNT=0x0501
<os>NT,<toolset>gcc:<library>ws2_32
<os>NT,<toolset>gcc:<library>mswsock
<os>NT,<toolset>gcc-cygwin:<define>__USE_W32_SOCKETS
<os>HPUX,<toolset>gcc:<define>_XOPEN_SOURCE_EXTENDED
<os>HPUX:<library>ipv6
;
您可以看到他们使用
构建了所有教程步骤-lboost_system -lboost_thread -DBOOST_ALL_NO_LIB=1
在linux上