Я пытаюсь связать простую программу с boost_timer
с помощью g ++. Программа выглядит следующим образом:Ошибка DSO при попытке установить связь с 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 ++. (Например, это не по индивидуальному заказу Набор инструментов или что-нибудь)
Я не уверен, что я не хватает, но я получаю следующее сообщение об ошибке при попытке компиляции:
/usr/lib64/gcc/x86_64-slackware-linux/5.3.0/../../../../x86_64-slackware-linux/bin/ld: /tmp/ccRDEN9Q.o: undefined reference to symbol
_ZN5boost6system15system_categoryEv
/usr/lib64/libboost_system.so.1.59.0: error adding symbols: DSO missing from command line collect2: error: ld returned 1 exit status
Мысли?
(ps) Я искал похожие проблемы. Были некоторые, но они были либо решены, добавив флаг компоновщика -lboost_timer
, который я уже сделал, либо был решен путем изменения порядка нескольких флагов компоновщика благодаря связыванию зависимостей. Поскольку я связываюсь только с одной библиотекой, для меня нет круговых зависимостей до uncircle
. Поэтому я задаю этот вопрос здесь, чтобы увидеть, есть ли что-то еще, что я могу попробовать.)
Думаю, вам нужна '-lboost_system'. – Jonas
Или '-DBOOST_SYSTEM_NO_DEPRECATED'. – Jonas
Вы должны добавить -lboost_system, как @Jonas сказал – jamek