【crow】C++微服务框架镜像 crow

1,828 阅读1分钟

前言

crow是一个高性能且易用的c++ web框架, 本文记录使用docker搭建可用的 crow 框架镜像

项目地址

github.com/ipkn/crow

本次构建完成镜像地址

docker pull likecooper/crow_env:v1

源镜像

基于官方 gcc 镜像构建可用crow环境

docker pull gcc

安装依赖库

在mac本机构建需要安装google-perftools

  • Mac

brew install boost google-perftools

在Linux或Linux镜像上需要安装一下库

  • Linux

sudo apt-get install build-essential libtcmalloc-minimal4 && sudo ln -s /usr/lib/libtcmalloc_minimal.so.4 /usr/lib/libtcmalloc_minimal.so

安装框架源码

cd /usr/local  or cd  /opt

git clone  https://github.com/ipkn/crow.git
cd  crow 
mkdir build
cd build
cmake ..
make
ctest 

遇到问题

  • brew 安装的boost包默认为 1.75, boost1.7以后有些包变化报错
socket_.get_io_service()

解决办法: 修改方式参考 github.com/ipkn/crow/p…

# 修改此文件即可
sudo vim /usr/local/crow/include/crow/socket_adaptors.h
  • sudo make报错openssl未发现:
ld: library not found for -lOPENSSL_SSL_LIBRARY-NOTFOUND
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make[2]: *** [examples/example_websocket] Error 1
make[1]: *** [examples/CMakeFiles/example_websocket.dir/all] Error 2
make: *** [all] Error 2

解决办法: 重新cmake, 选项指定openssl目录文件(..的含义是上级目录, 如果是当前目录则一个 . 就可以)

 sudo cmake .. -DOPENSSL_ROOT_DIR=/usr/local/opt/openssl -DOPENSSL_INCLUDE_DIR=/usr/local/opt/openssl/include -DOPENSSL_SSL_LIBRARY=/usr/local/opt/openssl/lib
  • 编译报错
root@ad111334e526:/usr/local/crow/build# g++ -o helloword helloword.cpp
/usr/bin/ld: /tmp/ccz3EKk0.o: in function `boost::asio::detail::posix_event::posix_event()':
helloword.cpp:(.text._ZN5boost4asio6detail11posix_eventC2Ev[_ZN5boost4asio6detail11posix_eventC5Ev]+0x3e): undefined reference to `pthread_condattr_setclock'
/usr/bin/ld: /tmp/ccz3EKk0.o: in function `boost::asio::detail::posix_thread::~posix_thread()':
helloword.cpp:(.text._ZN5boost4asio6detail12posix_threadD2Ev[_ZN5boost4asio6detail12posix_threadD5Ev]+0x26): undefined reference to `pthread_detach'
.....
....

引用 boost库, 最终编译命令:

g++ -o helloword helloworld.cpp -lboost_system -lpthread