Linux EC2环境下编译Boost Beast的http_server_async_ssl.cpp遇阻求助
解决Boost Beast SSL示例编译找不到OpenSSL头文件的问题
先确认EC2上OpenSSL头文件的位置,执行命令:
find / -name openssl -type d 2>/dev/null
通常预装的OpenSSL头文件会在/usr/include/openssl或者/usr/local/include/openssl目录下。编译SSL版本的示例时,除了Boost的头文件,还需要指定OpenSSL的头文件路径,并且链接OpenSSL的核心库(libssl和libcrypto)。直接用下面的命令替换原来的普通HTTP编译命令:
c++ http_server_async_ssl.cpp -I /home/ec2-user/boost_1_86_0 -I /usr/include -o server_ssl -pthread -lssl -lcrypto如果头文件不在
/usr/include,把上面的-I /usr/include换成你找到的实际路径即可。更简便的方式是用
pkg-config自动获取编译和链接参数(如果EC2上没装pkg-config,先执行sudo yum install pkgconfig或者sudo apt install pkg-config安装),然后用这个命令:c++ http_server_async_ssl.cpp -I /home/ec2-user/boost_1_86_0 $(pkg-config --cflags openssl) -o server_ssl -pthread $(pkg-config --libs openssl)这个命令会自动读取OpenSSL的头文件路径和需要链接的库,避免手动找路径的麻烦。
编译完成后,运行SSL服务器前,你还需要准备SSL证书和密钥文件(示例代码里默认找
server.pem),可以用OpenSSL生成:openssl req -x509 -newkey rsa:4096 -keyout key.pem -out cert.pem -days 365 -nodes cat key.pem cert.pem > server.pem
内容的提问来源于stack exchange,提问作者Caleb Taylor
相关产品推荐
相关产品推荐

