在Ubuntu 11.10上编译C++和OpenSSL
Compile C++ and OpenSSL on Ubuntu 11.10
我在Ubuntu 11.10上编译C++和OpenSSL项目时遇到了一个严重的问题。编译命令为:
g++ -Wall -lssl -lm -lcrypto -I ./src ./src/server.cpp -o ./bin/server
我收到这些错误:
server.cpp:(.text+0x8ff): undefined reference to `RSA_new'
server.cpp:(.text+0x92d): undefined reference to `PEM_read_RSAPrivateKey'
server.cpp:(.text+0xa85): undefined reference to `RSA_size'
server.cpp:(.text+0xaa1): undefined reference to `RSA_size'
server.cpp:(.text+0xae7): undefined reference to `RSA_private_decrypt'
server.cpp:(.text+0xd84): undefined reference to `BF_set_key'
server.cpp:(.text+0xf1d): undefined reference to `BF_ecb_encrypt'
server.cpp:(.text+0x13c6): undefined reference to `BF_ecb_encrypt'
collect2: ld returned 1 exit status
make: *** [server] Error 1
我成功安装了openssl和libssl-dev,但问题仍然存在。我试图在Linux Mint 12上用3.0内核编译这个项目,但我也遇到了同样的问题。在我的旧Linux操作系统2.6内核上,该项目编译并运行良好(使用相同的Makefile和相同的源代码)。请帮帮我!
通常,您需要在引用-l
链接标志的代码后面有这些链接标志。尝试
g++ -Wall -I ./src ./src/server.cpp -o ./bin/server -lssl -lm -lcrypto
正如这个答案的注释所说,链接器只查找未定义的符号,以包括在参数的列出顺序中。
也就是说,如果您的cpp文件使用库,则库必须列在cpp文件之后。
这些错误来自加密库,请检查ssl和加密库是否在/usr/lib中可用,或者如果没有安装它们,请检查是否在您安装的位置可用,并让您在编译命令中设置libssl和libcrypto的库搜索路径?
相关文章:
- Openssl 1.1.1d无效使用不完整的类型"struct dsa_st"
- 如何在openssl-ecc中获取十六进制格式的私钥
- LINK 尝试使用 OpenSSL evp aes 256 c++ 时出错
- 如何在OpenSSL中从configuration.h.in获取configuration.h
- OpenSSL TLS服务器-使用客户端证书白名单
- 通过 Openssl 命令行加密,通过 c++ 解密
- 使用已使用 java 编码的 openssl 解码数据
- OpenSSL没有共享密码
- OpenSSL 解密功能无法正常工作
- OpenSSL BIO and SSL_read
- 如何在OpenSSL库的名称中添加后缀'd'?
- 避免碎片化的ClientHellos with OpenSSL (DTLS)
- Boost.Asio/OpenSSL HTTPS GET certificate trouble
- 使用 OpenSSL 从内存中读取原始 SSL/TLS 证书
- 验证openssl c++中的签名,这是由JAVA DSA签名的?
- OpenSSL: EC_POINT_set_compressed_coordinates_GFp segfault
- 在 C/C++ 中加载 OpenSSL 自定义引擎
- 我的应用程序无法在安卓上使用OpenSSL进行链接
- OpenSSL fips in C++ wrapper Library 如何?错误:指纹不匹配
- 比较两个公钥与OpenSSL API