尝试与boost_timer

时间:2017-02-01 12:59:12

标签: c++ boost

我正在尝试使用g ++将简单程序与boost_timer链接。该计划如下:

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

void linear_sum(int n);
void quadratic_sum(int n);
void sigmatic_sum(int n);

int main(int argc, char *argv[])
{
  int m[5] = {100, 1000, 10000, 100000, 1000000};
  int tmp = 0;

  for(tmp; tmp < 5; tmp++){
    std::cout << "Timing information for linear sum with n = " << m[tmp] << ":\n";
    linear_sum(m[tmp]);

    std::cout << "Timing information for quadratic_sum with n = " << m[tmp] << ":\n";
    quadratic_sum(m[tmp]);

    std::cout << "Timing information for sigmatic_sum with n = " << m[tmp] << ":\n";
  }
}

我试图用以下方法编译程序:

g++ -o a1main a1main.cpp -lboost_timer

boost_timer标头和库都在默认的编译器搜索路径中。我正在使用Slackware 14.2,它带有boost和boost编译库开箱即用。我也在使用g ++附带的stock编译器。 (例如,它不是定制的工具链或任何东西)

我不确定我缺少什么,但是当我尝试编译时出现以下错误:

  

/usr/lib64/gcc/x86_64-slackware-linux/5.3.0 /../../../../ x86_64的-Slackware的-LINUX /斌/ LD:   /tmp/ccRDEN9Q.o:未定义的符号引用   _ZN5boost6system15system_categoryEv   /usr/lib64/libboost_system.so.1.59.0:添加符号时出错:命令行中缺少DSO   collect2:错误:ld返回1退出状态

思想?

(ps我环顾四周寻找类似的问题。有一些,但是他们要么通过添加我已经完成的-lboost_timer链接器标志来解决,要么通过改变多个链接器标志的顺序来解决由于链接依赖关系。因为我只链接到这个库,所以我可以说uncircle没有循环依赖关系。因此,我在这里问这个问题,看看是否还有别的东西我可以试试。)

1 个答案:

答案 0 :(得分:2)

您需要在构建命令中添加std::vector<int> v = {1, 2, 3}; std::vector<int> v1(3); //v1 has initial size!! std::copy(v.begin(), v.end(), v1.begin()); //use begin here 。使用-lboost_system时,您可能还需要boost_timer。这也适用于许多其他的boost库,但不一定都是。