栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

centOS7编译安装openssl并使用C接口

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

centOS7编译安装openssl并使用C接口

centOS7编译安装openssl并使用C接口。
1.编译安装:
下载OpenSSL安装包

sudo wget http://www.openssl.org/source/openssl-1.1.0j.tar.gz --no-check-certificate

解压文件,进入解压后文件夹,

sudo tar -xf openssl-1.1.0j.tar.gz
cd openssl-1.1.0j

设置OpenSSL安装

sudo  ./config  --prefix=/usr/local/openssl

编译安装:

make
sudo make install

检查版本及路径

openssl version
which openssl

2.编译包含openssl的程序报错:

原因:centOS下有默认版本的openssl,和自己安装的版本不兼容,Makefile写的不好,导致头文件在系统默认的路径导入而库为自己指定路径。
此时的Makefile:

修改后的Makefile:
crawler:main.o CCraawlers.o
g++ -o crawler main.o CCraawlers.o -L/usr/local/openssl/lib -lssl -lcrypto
CCraawlers.o:CCraawlers.cpp CCraawlers.h
g++ -c CCraawlers.cpp -o CCraawlers.o -I/usr/local/openssl/include
main.o:main.cpp
g++ -c main.cpp -o main.o -I/usr/local/openssl/include

(其实这样的Makefile简直太烂了。)

或者直接命令行编译:

 g++ -o test *.cpp -I/usr/local/openssl/include -L/usr/local/openssl/lib -lssl -lcrypto

3.应用程序运行出错:
ldd + 可执行文件 查看依赖的动态库链接情况

发现openssl的库链接异常。
此时:

sudo vim /etc/ld.so.conf

加入动态库所在路径(/usr/local/openssl/lib)如下图:

sudo ldconfig

再次ldd查看:

链接成功!

收获:
1.GCC/G++指定-I和-L、-l选项的头文件和库文件应该是同一版本,至少需要兼容!
2.GCC/G++是编译器,编译器,编译器!编译通过并不代表能跑起来程序,程序运行的操作系统的范畴,动态库的加载是操作系统管理的,所以有些可执行程序运行时异常可以考虑用ldd查看其依赖的动态库是否链接异常。如果找不到要在/etc/ld.so.conf.d下面添加对应配置(路径),并重新载入动态库。(ldconfig)

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/734091.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号