ubuntu系统下,编译.cpp文件生成可执行程序时怎么静态链接库openssl库,使程序到另一个环境下也可以正常运行,解决error while loading shared libraries: libcrypto.so.1.1报错问题
时间: 2024-10-25 15:17:53 浏览: 27
08 fatal error_ openssl_sha.h_ No such file or directory 解决方案 -
在Ubuntu系统下,如果想通过编译.cpp文件并静态链接OpenSSL库(libssl.a和libcrypto.a),以便在不同环境中都能正常运行,你需要按照以下步骤操作:
1. 首先,确保已经安装了OpenSSL。你可以通过命令行输入 `sudo apt-get install libssl-dev` 来安装。
2. 找到OpenSSL的头文件目录,通常它位于 `/usr/include/openssl/`。在编译cpp文件前,添加这个路径到你的编译选项中。例如,在使用g++编译时,可以在命令中加入 `-I/usr/include/openssl/`。
3. 编译时将动态链接改为静态链接,可以使用 `-static-libssl -static-libcrypto` 参数。完整的命令可能看起来像这样:
```
g++ -o your_program_name -std=c++11 -I/usr/include/openssl/ your_source.cpp -static-libssl -static-libcrypto
```
4. 这样编译出来的程序就会包含OpenSSL的所有必要功能,并不需要外部的libcrypto.so.1.1库,因此即使在没有此库的环境中也能运行。
5. 完成编译后,你可以直接运行你的可执行文件 `./your_program_name`。
阅读全文