2013-09-09 3 views
1

я новичок очень очень в импульсе и пытаюсь скомпилировать С Программой ++ по этой ссылке: http://www.boost.org/doc/libs/1_53_0/doc/html/boost_asio/examples.html#boost_asio.examples.http_server_3 (httpserver3 пример) и поэтому я попытался собрать этот проект, используя эту команду (в Linux [DEBiAN ]):подталкивания ошибки ASIO примера компиляция

г ++ -o htserv.exe connection.cpp main.cpp mime_types.cpp request_handler.cpp request_parser.cpp server.cpp

или

г + + -Wall -g -I/USR/местные/включить/увеличить connection.cpp main.cpp mime_types.cpp request_handler.cpp request_parser.cpp server.cpp -o htserv

, а затем я вижу эту ошибку:

In file included from connection.cpp:11:0: 
connection.hpp:20:23: fatal error: request.hpp: No such file or directory 
compilation terminated. 
In file included from server.hpp:19:0, 
       from main.cpp:16: 
connection.hpp:20:23: fatal error: request.hpp: No such file or directory 
compilation terminated. 
request_handler.cpp:18:23: fatal error: request.hpp: No such file or directory 
compilation terminated. 
request_parser.cpp:12:23: fatal error: request.hpp: No such file or directory 
compilation terminated. 
In file included from server.hpp:19:0, 
       from server.cpp:11: 
connection.hpp:20:23: fatal error: request.hpp: No such file or directory 

да вы правы я проверил разрешение и у меня есть новая проблема, когда я скомпилировать и был так смущен

/tmp/ccj4xp5E.o: In function `http::server3::connection::handle_read(boost::system::error_code const&, unsigned long)': 
/home/avakh/Desktop/boost/httpserver3/connection.cpp:56: undefined reference to `http::server3::reply::to_buffers()' 
/home/avakh/Desktop/boost/httpserver3/connection.cpp:60: undefined reference to `http::server3::reply::stock_reply(http::server3::reply::status_type)' 
/home/avakh/Desktop/boost/httpserver3/connection.cpp:64: undefined reference to `http::server3::reply::to_buffers()' 
/tmp/ccj4xp5E.o: In function `__static_initialization_and_destruction_0': 
/usr/local/include/boost/system/error_code.hpp:222: undefined reference to `boost::system::generic_category()' 
/usr/local/include/boost/system/error_code.hpp:223: undefined reference to `boost::system::generic_category()' 
/usr/local/include/boost/system/error_code.hpp:224: undefined reference to `boost::system::system_category()' 
/tmp/ccj4xp5E.o: In function `boost::system::error_code::error_code()': 
/usr/local/include/boost/system/error_code.hpp:323: undefined reference to `boost::system::system_category()' 
/tmp/ccj4xp5E.o: In function `boost::asio::error::get_system_category()': 
/usr/local/include/boost/asio/error.hpp:216: undefined reference to `boost::system::system_category()' 
/tmp/ccH8QGhE.o: In function `__static_initialization_and_destruction_0': 
/usr/local/include/boost/system/error_code.hpp:222: undefined reference to `boost::system::generic_category()' 
/usr/local/include/boost/system/error_code.hpp:223: undefined reference to `boost::system::generic_category()' 
/usr/local/include/boost/system/error_code.hpp:224: undefined reference to `boost::system::system_category()' 
/tmp/cclaofcI.o: In function `http::server3::request_handler::handle_request(http::server3::request const&, http::server3::reply&)': 
/home/avakh/Desktop/boost/httpserver3/request_handler.cpp:34: undefined reference to `http::server3::reply::stock_reply(http::server3::reply::status_type)' 
/home/avakh/Desktop/boost/httpserver3/request_handler.cpp:42: undefined reference to `http::server3::reply::stock_reply(http::server3::reply::status_type)' 
/home/avakh/Desktop/boost/httpserver3/request_handler.cpp:66: undefined reference to `http::server3::reply::stock_reply(http::server3::reply::status_type)' 
/tmp/cclaofcI.o: In function `__static_initialization_and_destruction_0': 
/usr/local/include/boost/system/error_code.hpp:222: undefined reference to `boost::system::generic_category()' 
/usr/local/include/boost/system/error_code.hpp:223: undefined reference to `boost::system::generic_category()' 
/usr/local/include/boost/system/error_code.hpp:224: undefined reference to `boost::system::system_category()' 
/tmp/ccJ7jCu1.o: In function `__static_initialization_and_destruction_0': 
/usr/local/include/boost/system/error_code.hpp:222: undefined reference to `boost::system::generic_category()' 
/usr/local/include/boost/system/error_code.hpp:223: undefined reference to `boost::system::generic_category()' 
/usr/local/include/boost/system/error_code.hpp:224: undefined reference to `boost::system::system_category()' 
/tmp/ccJ7jCu1.o: In function `boost::asio::detail::posix_signal_blocker::posix_signal_blocker()': 
/usr/local/include/boost/asio/detail/posix_signal_blocker.hpp:43: undefined reference to `pthread_sigmask' 
/tmp/ccJ7jCu1.o: In function `boost::asio::detail::posix_signal_blocker::~posix_signal_blocker()': 
/usr/local/include/boost/asio/detail/posix_signal_blocker.hpp:50: undefined reference to `pthread_sigmask' 
/tmp/ccJ7jCu1.o: In function `boost::asio::detail::posix_thread::~posix_thread()': 
/usr/local/include/boost/asio/detail/impl/posix_thread.ipp:35: undefined reference to `pthread_detach' 
/tmp/ccJ7jCu1.o: In function `boost::asio::detail::posix_thread::join()': 
/usr/local/include/boost/asio/detail/impl/posix_thread.ipp:42: undefined reference to `pthread_join' 
/tmp/ccJ7jCu1.o: In function `boost::asio::detail::posix_thread::start_thread(boost::asio::detail::posix_thread::func_base*)': 
/usr/local/include/boost/asio/detail/impl/posix_thread.ipp:50: undefined reference to `pthread_create' 
/tmp/ccJ7jCu1.o: In function `boost::thread_exception::thread_exception(int, char const*)': 
/usr/local/include/boost/thread/exceptions.hpp:51: undefined reference to `boost::system::system_category()' 
/tmp/ccJ7jCu1.o: In function `boost::detail::thread_data_base::thread_data_base()': 
/usr/local/include/boost/thread/pthread/thread_data.hpp:144: undefined reference to `vtable for boost::detail::thread_data_base' 
/tmp/ccJ7jCu1.o: In function `boost::thread::start_thread()': 
/usr/local/include/boost/thread/detail/thread.hpp:180: undefined reference to `boost::thread::start_thread_noexcept()' 
/tmp/ccJ7jCu1.o: In function `boost::thread::~thread()': 
/usr/local/include/boost/thread/detail/thread.hpp:255: undefined reference to `boost::thread::detach()' 
/tmp/ccJ7jCu1.o: In function `boost::thread::get_id() const': 
/usr/local/include/boost/thread/detail/thread.hpp:730: undefined reference to `boost::thread::native_handle()' 
/tmp/ccJ7jCu1.o: In function `boost::thread::join()': 
/usr/local/include/boost/thread/detail/thread.hpp:756: undefined reference to `boost::thread::join_noexcept()' 
/tmp/ccJ7jCu1.o: In function `boost::detail::thread_data<boost::_bi::bind_t<unsigned long, boost::_mfi::mf0<unsigned long, boost::asio::io_service>, boost::_bi::list1<boost::_bi::value<boost::asio::io_service*> > > >::~thread_data()': 
/usr/local/include/boost/thread/detail/thread.hpp:91: undefined reference to `boost::detail::thread_data_base::~thread_data_base()' 
/tmp/ccJ7jCu1.o:(.rodata._ZTIN5boost6detail11thread_dataINS_3_bi6bind_tImNS_4_mfi3mf0ImNS_4asio10io_serviceEEENS2_5list1INS2_5valueIPS7_EEEEEEEE[_ZTIN5boost6detail11thread_dataINS_3_bi6bind_tImNS_4_mfi3mf0ImNS_4asio10io_serviceEEENS2_5list1INS2_5valueIPS7_EEEEEEEE]+0x10): undefined reference to `typeinfo for boost::detail::thread_data_base' 
collect2: error: ld returned 1 exit status 

затем я попытался использовать эту команду для компиляции: НКА -I/USR/local/include/boost/-lboost_thr Свинец -lboost-ASIO -lboost_noncopyable -lboost_bind -lboost_logic -lboost_tuple -lboost_array connection.cpp mime_types.cpp main.cpp reply.cpp request_handler.cpp server.cpp -o hserv и я имел эту ошибку:

/usr/bin/ld: cannot find -lboost-asio 
/usr/bin/ld: cannot find -lboost_noncopyable 
/usr/bin/ld: cannot find -lboost_bind 
/usr/bin/ld: cannot find -lboost_logic 
/usr/bin/ld: cannot find -lboost_tuple 
/usr/bin/ld: cannot find -lboost_array 
collect2: error: ld returned 1 exit status 

, тогда я попытался использовать эту команду g ++ -I/usr/local/include/boost/connection.cpp mime_types.cpp main.cpp reply.cpp request_handler.cpp server.cpp -o hserv -lboost-asio -lboost_noncopyable - lboost_bind -lboost_logic -lboost_tuple -lboost_array

и эта ошибка была

/usr/bin/ld: cannot find -lboost-asio 
/usr/bin/ld: cannot find -lboost_noncopyable 
/usr/bin/ld: cannot find -lboost_bind 
/usr/bin/ld: cannot find -lboost_logic 
/usr/bin/ld: cannot find -lboost_tuple 
/usr/bin/ld: cannot find -lboost_array 
collect2: error: ld returned 1 exit status 
+0

Показать команду компиляции. –

+0

BTW, исполняемые файлы Linux часто не заканчиваются на '.exe' условно .... –

+0

Вы установили пакет' libboost-all-dev' под вашу систему Ubuntu или Debian ... –

ответ

2

Ваша команда компиляции, вероятно, следует начать с g++ -Wall -g -I/usr/include/boost

-Wall где просит все предупреждения, -g запрашивает информацию об отладке, и -I/usr/include/boost добавляет включают в каталог на пути включения.

И вы действительно должны использовать строитель, такой как GNU Make. Пришло время узнать, как написать Makefile. Затем вы должны добавить в ваш Makefile линию как

CXXFLAGS= -Wall -g -I/usr/include/boost 

Если request.hpp ваш собственный файл в текущем каталоге (не один из некоторой системной библиотеки), вы должны включить его в двойные кавычки символы, такие как

#include "request.hpp" 

и не использовать <request.hpp> или добавить -I. в вашу команду компиляции.

Обязательно выполните команды pwd и ls, в которых вы выполняете компиляцию в правой директории.Команда ls должна показывать вам как request.hpp, так и connection.cpp. Используйте команду cd (которая вызывает нулевой вызов chdir(2)). Уделите время, чтобы прочитать больше о bash scripting

Вы можете пройти -v (который показывает реальные запускаемый для компиляции) и -H (который показывает вложенные файлы) на свой компилятор.

Помните, что порядок аргументов для компилятора g++ важен; исходные файлы должны идти перед объектными файлами и библиотеками, и все они должны перейти от высокоуровневых к низкоуровневым (например, системные библиотеки). Прочтите главу о invoking GCC. Вам могут потребоваться некоторые параметры -L.

BTW, имеется несколько доступных HTTP-библиотек HTTP, например. libonion (который поддерживает как HTTP, так и HTTPS).

+0

Я использовал ваше предложение, и у меня есть эта ошибка еще – User123422

+0

'request.hpp' не является файлом boost, это один из файлов в примере. – juanchopanza

+0

@Basile Starynkevitch Вам известно, поддерживает ли libonion HTTPS? Мне нужно запросить конфигурацию моей программы через HTTPS, скажем, мобильное устройство. –

0

Я столкнулся с той же проблемой при компиляции с Ogre. Я скопировал весь файл boost (.a и .so) в/usr/local/lib в/usr/lib, он работает.