pkg_check_modules(OPENSSL REQUIRED openssl)为什么只有crypto没有ssl
时间: 2024-03-27 11:39:06 浏览: 189
在使用pkg_check_modules命令时,我们可以指定要查找的包的名称,该名称对应于.pc文件中的Name字段。如果我们使用的是OpenSSL库,那么我们需要查找的包的名称应该是"openssl",而不是"ssl"或"crypto"。
在使用pkg_check_modules命令查找OpenSSL库时,我们可以使用以下命令:
```
pkg_check_modules(OPENSSL REQUIRED openssl)
```
这将查找名为"openssl"的包,并将结果存储在名为"OPENSSL"的变量中。在这个变量中,我们可以访问OpenSSL的所有链接信息,包括OpenSSL的路径、链接选项和库名称。
如果我们只需要链接OpenSSL的crypto库,我们可以在target_link_libraries中指定链接库的名称:
```
target_link_libraries(my_target ${OPENSSL_CRYPTO_LIBRARY})
```
这将链接OpenSSL的crypto库到目标"my_target"中。如果我们需要链接OpenSSL的ssl库,我们可以在target_link_libraries中使用${OPENSSL_SSL_LIBRARY}变量指定链接库的名称。
总之,pkg_check_modules命令的参数应该与.pc文件中的Name字段相匹配,如果我们需要链接OpenSSL库的crypto库,应该使用"openssl"作为参数,然后在target_link_libraries中指定链接库的名称。
相关问题
pkg_check_modules(OPENSSL REQUIRED openssl)中的OPENSSL_LIBRARIES存在ssl;crypto为什么链接不上ssl
在使用pkg_check_modules命令查找OpenSSL库时,如果OpenSSL库同时包含ssl和crypto库,那么OPENSSL_LIBRARIES变量会包含两个库的名称,以分号分隔。例如:
```
OPENSSL_LIBRARIES = /usr/lib/x86_64-linux-gnu/libssl.so;/usr/lib/x86_64-linux-gnu/libcrypto.so
```
在链接库时,我们需要将两个库都链接到目标中,才能正常使用OpenSSL库。因此,我们可以在target_link_libraries中使用${OPENSSL_LIBRARIES}变量指定链接库的名称:
```
target_link_libraries(my_target ${OPENSSL_LIBRARIES})
```
这将链接OpenSSL的ssl和crypto库到目标"my_target"中,使得我们可以在代码中正常使用OpenSSL库的功能。
如果我们只需要链接OpenSSL的ssl或crypto库,我们可以使用${OPENSSL_SSL_LIBRARY}和${OPENSSL_CRYPTO_LIBRARY}变量指定链接库的名称。例如:
```
target_link_libraries(my_target ${OPENSSL_SSL_LIBRARY}) # 链接OpenSSL的ssl库
target_link_libraries(my_target ${OPENSSL_CRYPTO_LIBRARY}) # 链接OpenSSL的crypto库
```
总之,当使用pkg_check_modules命令查找OpenSSL库时,需要将OPENSSL_LIBRARIES变量中列出的所有库都链接到目标中,以便正常使用OpenSSL库的功能。
sudo yum install -y epel sudo yum install -y openssl11-devel wget https://www.python.org/ftp/python/3.10.9/Python-3.10.9.tgz tar zxvf Python-3.10.9.tgz cd Python-3.10.9 sed -i 's/PKG_CONFIG openssl /PKG_CONFIG openssl11 /g' configure ./configure --enable-optimizations sudo make altinstall The following should run without errors if SSL was properly compiled python3.10 -m ssl
你想要安装 Python 3.10.9 并检查 SSL 是否正常编译,以下是安装 Python 和检查 SSL 的步骤:
1. 首先,安装 EPEL 存储库和 openssl11-devel:
```shell
sudo yum install -y epel
sudo yum install -y openssl11-devel
```
2. 下载 Python 3.10.9 源代码包:
```shell
wget https://www.python.org/ftp/python/3.10.9/Python-3.10.9.tgz
```
3. 解压缩源代码包:
```shell
tar zxvf Python-3.10.9.tgz
```
4. 进入源代码目录:
```shell
cd Python-3.10.9
```
5. 在 configure 脚本中替换 PKG_CONFIG openssl 为 PKG_CONFIG openssl11:
```shell
sed -i 's/PKG_CONFIG openssl /PKG_CONFIG openssl11 /g' configure
```
6. 运行 configure 脚本并启用优化选项:
```shell
./configure --enable-optimizations
```
7. 编译并安装 Python 3.10.9:
```shell
sudo make altinstall
```
8. 最后,运行以下命令检查 SSL 是否正确编译:
```shell
python3.10 -m ssl
```
如果没有错误信息出现,说明 SSL 已经正确编译。请注意,这些步骤假设你已经在 CentOS 或类似的系统上运行,并且具有适当的权限。
阅读全文