尝试运行boost库的源代码附带的HTTP服务器示例时,出现以下错误:boost_1_59_0/libs/asio/example/cpp11/http/server/
。
我已经在boost_1_59_0
目录中运行了以下命令:
$ ./bootstrap.sh
$ sudo ./bjam install
$ sudo ./b2 install
安装所有目标后,我尝试使用以下命令编译main.cpp和server.cpp g++ -std=c++0x -o main main.cpp -I "/home/user/Desktop/boost_1_59_0" -L "/home/user/Desktop/boost_1_59_0/libs/" -lboost_system
。关于如何编译此服务器示例的任何建议?
我boost_1_59_0/libs/asio/example/cpp11/http/server/
按照@Richard Hodges的建议从main.cpp之后链接了该文件夹中的所有文件。它仍然不起作用,我遇到了有关lpthread的错误,因此我将其添加到了编译选项中。该程序已编译,但执行失败,返回错误,提示它找不到库libboost_system.so.1.59.0。我尝试将文件夹链接在一起,-L /path/to/library
但是没有用。
解决方案:
我的编译命令:
g++ -std=gnu++0x -o main main.cpp server.cpp connection.cpp connection_manager.cpp reply.cpp mime_types.cpp request_handler.cpp request_parser.cpp -I "/home/user/Desktop/boost_1_59_0" -lboost_system -lpthread
我用以下命令解决了它:
$ LD_LIBRARY_PATH="/usr/local/lib/"
$ sudo ldconfig
然后,我只运行可执行文件,它开始工作了!
这是我构想的一个简单的makefile,可以正常工作:
all:server
CPPFLAGS+=-std=c++11 -Wall -pedantic
CPPFLAGS+=-g -O2
CPPFLAGS+=-pthread
LDFLAGS+=-lboost_system
%.o:%.cpp
$(CXX) $(CPPFLAGS) $^ -c -o $@
server:$(patsubst %.cpp,%.o,$(wildcard *.cpp))
$(CXX) $(CPPFLAGS) $^ -o $@ $(LDFLAGS)
它运行make
:
g++ -std=c++11 -Wall -pedantic -g -O2 -pthread connection.cpp -c -o connection.o
g++ -std=c++11 -Wall -pedantic -g -O2 -pthread connection_manager.cpp -c -o connection_manager.o
g++ -std=c++11 -Wall -pedantic -g -O2 -pthread main.cpp -c -o main.o
g++ -std=c++11 -Wall -pedantic -g -O2 -pthread mime_types.cpp -c -o mime_types.o
g++ -std=c++11 -Wall -pedantic -g -O2 -pthread reply.cpp -c -o reply.o
g++ -std=c++11 -Wall -pedantic -g -O2 -pthread request_handler.cpp -c -o request_handler.o
g++ -std=c++11 -Wall -pedantic -g -O2 -pthread request_parser.cpp -c -o request_parser.o
g++ -std=c++11 -Wall -pedantic -g -O2 -pthread server.cpp -c -o server.o
g++ -std=c++11 -Wall -pedantic -g -O2 -pthread connection.o connection_manager.o main.o mime_types.o reply.o request_handler.o request_parser.o server.o -o server -lboost_system
测试程序运行:
$ ./server 0.0.0.0 9889 . &
$ GET http://localhost:9889/main.cpp > main.cpp.0
检查文件
$ md5sum main.cpp*
be5dc1c26b5942101a7895de6baedcee main.cpp
be5dc1c26b5942101a7895de6baedcee main.cpp.0
完成后,别忘了杀死服务器
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句