【问题标题】:Another "undefined reference" error when linking boost libraries链接 boost 库时出现另一个“未定义的引用”错误
【发布时间】:2012-11-19 03:42:29
【问题描述】:

我看过其他几篇处理同样问题的帖子。但是,他们的解决方案似乎都不适合我。我正在编译以下代码:

#include 
#include 
#include 

使用命名空间 boost::numeric::ublas;

诠释主要(){
   矩阵 mat1 (3,3);
   矩阵 mat2 (3,3);
   矩阵 mat3 (3,3);

   无符号 k=0;

   for(无符号 i = 0; i 

我正在使用命令行编译:

$ g++ matrix_test.cpp -o matrix_test -lboost_system -lboost_timer

并收到以下错误:

usr/lib/gcc/i686-redhat-linux/4.7.0/../../../libboost_timer.so: 对`boost::chrono::steady_clock::now()'的未定义引用
collect2:错误:ld 返回 1 个退出状态

如果我在编译时添加 -lboost_chrono,则会收到此错误:

/usr/lib/gcc/i686-redhat-linux/4.7.0/../../../libboost_chrono.so: 未定义对“clock_gettime”的引用
collect2:错误:ld 返回 1 个退出状态

我可以将clock_gettime 追踪到sys/time.h。不幸的是,我找不到相应的 .so 文件来链接。我在这里错过了什么?

【问题讨论】:

    标签: c++ boost undefined-reference


    【解决方案1】:

    您必须将-lrt 添加到您的链接库中

    g++ matrix_test.cpp -o matrix_test -lboost_system -lboost_timer -lboost_chrono -lrt
    

    更新 (2016-08-31)

    这似乎仍然是一个问题。当您查找 man clock_gettime 时,这会导致解决方案 (-lrt),但它也说

    与 -lrt 链接(仅适用于 2.17 之前的 glibc 版本)。

    所以当您的 glibc 更新时,您的问题可能是其他问题。

    【讨论】:

    • 哇。我怎么会知道这样做?伙计们,非常感谢!
    【解决方案2】:

    将 -lrt 添加到您的 g++ 调用中 - clock_gettime 在 librt.so 中。

    【讨论】:

      猜你喜欢
      • 2014-01-19
      • 2018-03-05
      • 2020-06-19
      • 2012-07-07
      • 2014-01-09
      • 2021-03-30
      • 2020-12-14
      • 2019-11-25
      • 1970-01-01
      相关资源
      最近更新 更多