gpt4 book ai didi

c++ - 链接错误 Boost 库

转载 作者:行者123 更新时间:2023-11-28 04:55:45 24 4
gpt4 key购买 nike

我在此处使用指南构建了 BOOST 库:http://www.boost.org/doc/libs/1_65_1/more/getting_started/unix-variants.html然后我想编译以下代码:

#include <boost/timer/timer.hpp>
#include <cmath>

int main()
{
boost::timer::auto_cpu_timer t;

for (long i = 0; i < 100000000; ++i)
std::sqrt(123.456L); // burn some time

return 0;
}

我在终端中发出了以下命令

$ c++ -o program main.cpp -I /Users/miszo97/Desktop/boost_1_65_0 -L /Users/miszo97/Desktop/boost_1_65_0/stage/lib

然后它产生了

Undefined symbols for architecture x86_64:
"boost::timer::auto_cpu_timer::auto_cpu_timer(short)", referenced from:
_main in main-a716e4.o
"boost::timer::auto_cpu_timer::~auto_cpu_timer()", referenced from:
_main in main-a716e4.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

我想链接出了点问题。也许单独编译的 Boost 库没有正确构建?

最佳答案

两个用于链接的主要选项。

首先是 -L 选项,它添加一个目录来搜索库。

但是,链接器不知道要自动链接哪些库,它不会遍历所有可能的库来找到匹配的库。这就是第二个选项的用武之地:-l(小写 L)选项告诉链接器链接到特定的库。

-l指定的库只是库名,不是完整的文件名,链接器使用用-L添加的路径来找到它们。

在您使用 Boost 计时器库的情况下,库名称应为 boost_timer,因此您需要在链接时添加选项 -lboost_timer

关于c++ - 链接错误 Boost 库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47158513/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com