当前位置: 首页 > 面试题库 >

在Linux中链接Boost库

孟茂
2023-03-14
问题内容

我正在尝试使用Boost的Asio构建项目,但遇到了一些麻烦。最初,我试图在没有任何其他库的情况下构建项目,因为所有内容都应该放在头文件中。

我尝试构建的程序如下所示:

#include <iostream>
#include <boost/asio.hpp>
#include <boost/date_time/posix_time/posix_time.hpp>

int main()
{
    boost::asio::io_service io;
    boost::asio::deadline_timer t(io, boost::posix_time::seconds(5));

    t.wait();

    std::cout << "Hello, world!" << std::endl;

    return 0;
}

可以发现这里在加速的网站。

因此,最初我只有:

-I /usr/include/boost_1_40_0

这导致以下错误:

make -k all
Building target: HelloWorld
Invoking: GCC C++ Linker
g++  -o"HelloWorld"  ./main.o  
./main.o: In function `__static_initialization_and_destruction_0':
/usr/include/boost_1_40_0/boost/system/error_code.hpp:205: undefined reference to `boost::system::get_system_category()'
/usr/include/boost_1_40_0/boost/system/error_code.hpp:206: undefined reference to `boost::system::get_generic_category()'
/usr/include/boost_1_40_0/boost/system/error_code.hpp:211: undefined reference to `boost::system::get_generic_category()'
/usr/include/boost_1_40_0/boost/system/error_code.hpp:212: undefined reference to `boost::system::get_generic_category()'
/usr/include/boost_1_40_0/boost/system/error_code.hpp:213: undefined reference to `boost::system::get_system_category()'
./main.o: In function `boost::asio::error::get_system_category()':
/usr/include/boost_1_40_0/boost/asio/error.hpp:218: undefined reference to `boost::system::get_system_category()'
./main.o: In function `error_code':
/usr/include/boost_1_40_0/boost/system/error_code.hpp:312: undefined reference to `boost::system::get_system_category()'
./main.o: In function `posix_tss_ptr':
/usr/include/boost_1_40_0/boost/asio/detail/posix_tss_ptr.hpp:47: undefined reference to `pthread_key_create'
./main.o: In function `~posix_tss_ptr':
/usr/include/boost_1_40_0/boost/asio/detail/posix_tss_ptr.hpp:61: undefined reference to `pthread_key_delete'
./main.o: In function `boost::asio::detail::posix_thread::join()':
/usr/include/boost_1_40_0/boost/asio/detail/posix_thread.hpp:77: undefined reference to `pthread_join'
./main.o: In function `~posix_thread':
/usr/include/boost_1_40_0/boost/asio/detail/posix_thread.hpp:69: undefined reference to `pthread_detach'
collect2: ld returned 1 exit status
make: *** [HelloWorld] Error 1
make: Target `all' not remade because of errors.

看来我需要系统库。因此,我按照此处的入门指南中的说明进行操作,该指南为我提供了位于 / usr / include / boost_1_40_0 / stage
/ lib中
的一堆库。其中包括 libboost_system.a 。因此,我尝试编译为:

-I /usr/include/boost_1_40_0
-L /usr/include/boost_1_40_0/stage/lib
-l libboost_system

但是,我得到了:

make -k all
Building target: HelloWorld
Invoking: GCC C++ Linker
g++ -L/usr/lib -L/usr/include/boost_1_40_0/stage/lib -o"HelloWorld"  ./main.o   -llibboost_system
/usr/bin/ld: cannot find -llibboost_system
collect2: ld returned 1 exit status
make: *** [HelloWorld] Error 1
make: Target `all' not remade because of errors.

我不确定为什么,但是似乎无法识别该库或我尝试的其他库。我可能做错了什么?提前致谢!


问题答案:

更改-llibboost_system-lboost_system

在linux中,引用该库时不使用库前面的“ lib”前缀。



 类似资料:
  • 本文向大家介绍什么是Linux软链接和Linux硬链接,包括了什么是Linux软链接和Linux硬链接的使用技巧和注意事项,需要的朋友参考一下 Linux链接分两种,一种被称为硬链接(Hard Link),另一种被称为软链接(Symbolic Link)。默认情况下,ln命令产生硬链接。 一、[硬链接]-->指通过索引节点来进行连接。在Linux的文件系统中,保存在磁盘分区中的文件不管是什么类型都

  • 问题内容: 我正在尝试构建Boost并生成dll,但是我所做的任何事情都无法解决问题。 这是我得到的: 创建库bin.v2 \ libs \ thread \ build \ msvc-11.0 \ dbg \ adrs-mdl-32 \ async- excpt-on \ thrd-mlt \ boost_thread-vc110-mt-gd-1_53.lib和对象bin.v2 \ libs \

  • 本文向大家介绍区分Linux硬链接与软链接,包括了区分Linux硬链接与软链接的使用技巧和注意事项,需要的朋友参考一下 在Linux中,连接文件有两种,一种类似于Windows的快捷方式,可以让你快速地链接到目标文件(或目录),这种称为软链接(soft link),也叫作符号链接(symbolic link);另一种则是通过文件系统的 inode 连接来产生新文件名,而不是产生新文件。这种称为硬链

  • 问题内容: 我想在Linux中建立一个符号链接。我已经编写了此Bash命令,其中第一个路径是我要链接到的文件夹,第二个路径是已编译的源代码。 它是否正确? 问题答案: 要创建新的符号链接(如果符号链接已存在,将失败): 要创建或更新符号链接:

  • 问题内容: 我想在Swift中使用GNU科学库,尤其是我想使用中的例程。所以我基本上遵循https://github.com/apple/swift- package- manager/blob/master/Documentation/SystemModules.md (我使用的是Linux,而不是OS X) 我将模块创建为 但是,由于我收到了许多此类消息,所以我无法构建程序。实际上,正如GSL

  • 注意:如果重要的话,我不使用IDE,我的大部分编程都使用vim。