我正在尝试使用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
没有循环依赖关系。因此,我在这里问这个问题,看看是否还有别的东西我可以试试。)
答案 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库,但不一定都是。