2013-04-23 1 views
0

Я думаю, что я установил подталкивание правильно, так что я пытаюсь использовать тест «first.cpp» найдено here:Действительно базовая о C++/Boost - тестирование подталкивание

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

     int main() 
     { 
     boost::any a(5); 
     a = 7.67; 
     std::cout<<boost::any_cast<double>(a)<<std::endl; 
     } 

И я получаю следующее:

   [email protected] /home/jason 
       $ g++ -o first first.cpp 
       first.cpp:2:24: boost/any.hpp: No such file or directory 
       first.cpp: In function `int main()': 
       first.cpp:6: error: `boost' has not been declared 
       first.cpp:6: error: `any' undeclared (first use this function) 
       first.cpp:6: error: (Each undeclared identifier is reported only once for each 
       unction it appears in.) 
       first.cpp:6: error: expected `;' before "a" 
       first.cpp:7: error: `a' undeclared (first use this function) 
       first.cpp:8: error: `boost' has not been declared 
       first.cpp:8: error: `any_cast' undeclared (first use this function) 
       first.cpp:8: error: expected primary-expression before "double" 
       first.cpp:8: error: expected `;' before "double" 
       first.cpp:9:2: warning: no newline at end of file 

       [email protected] /home/jason 
       $ 

Где моя подталкивание библиотека находится в моем ./home/Jason/

Очевидно что-то вверх. Кроме того, все подталкивание библиотеки сами использовать этот "импульс/..." так почему-то либо:

1 - я сделал что-то не так с Boost, 2 - C++/НКУ не "видящего" мой импульс

любой вход?

ответ

2

Вам необходимо передать -I/home/Jason/include в gcc и, возможно, -L/home/Jason/lib, потому что библиотека не установлена ​​в стандартном пути. Попробуйте:

g++ -I/home/Jason/include -L/home/Jason/lib -o first first.cpp 

Кроме того, после компиляции он не будет работать должным образом, потому что библиотеки опять не в стандартном пути. Чтобы запустить его, вам необходимо добавить /home/Jason/lib к переменной окружения LD_LIBRARY_PATH.

Редактировать: Как указал Тони Д, вы можете установить CPLUS_INCLUDE_PATH на /home/Jason/include, что эквивалентно опции компилятора, которую я вам дал.

Редактировать

Если вы хотите, чтобы проверить свои установки, вы можете запустить скрипт ~/bin/Boost.Test (предполагая, что у вас --with-libraries=test включен, когда вы установили). В противном случае в часе дома должен быть каталог bin (если вы использовали его как префикс), если в нем есть что-то с именем Boost, попробуйте запустить его (но не забудьте установить LD_LIBRARY_PATH раньше).

+0

Что такое «стандартный путь»? Я бы предпочел просто его там. –

+0

Да, вы можете оставить его там, но тогда вам нужно сказать GCC, где его искать. – Thibaut

+0

Как узнать, правильно ли он установлен? есть ли что-нибудь, что я могу сделать за пределами вышеперечисленного? как я могу сказать gcc, где искать –

-1
  • заголовочные файлы ссылаются на '/ USR/включать'

$ cd /usr/include
$ sudo ln -s /usr/local/boost_xxxx/boost boost

  • библиотека подталкивание компиляции, а затем скопировать так файлы в '/ USR/Lib'

$ sudo cp /usr/local/lib/libboost_regex-gcc41-mt-xxxx.so.xxxx /usr/lib/

+0

Я предполагаю, что он установил его в своем домашнем каталоге, потому что он не мог этого сделать. Но это сработало бы, так что установка boost непосредственно в стандартный путь;) – Thibaut

+0

да, а что такое «стандартный путь», который вы еще не сказали? –

+1

@ jasonm Стандартный путь - это то, где компилятор ищет системные заголовки и библиотеки. Здесь все, что вы установите с помощью менеджера пакетов, закончится. Он варьируется от системы к системе, но обычно основными являются '/ usr' и'/usr/local'. – Thibaut

Смежные вопросы