linux编译c程序_Linux编译安装openssl和生成系统动态连接库dynamic/shared libraries

时间:2020-11-13  来源:Perl  阅读:


openssl:多用途的命令行工具,各功能分别使用子命令实现
libcrypto:公共加密库(存放了各种加密算法)
libssl:ssl协议的实现

yum -y install perl gcc

wget -4 http://zlib.net/zlib-1.2.8.tar.gz
tar -zxvf zlib-1.2.8.tar.gz
cd zlib-1.2.8
./configure --shared
make
make install

cp libz.a /usr/local/lib
chmod 644 /usr/local/lib/libz.a
cp libz.so.1.2.8 /usr/local/lib
chmod 755 /usr/local/lib/libz.so.1.2.8
cp zlib.3 /usr/local/share/man/man3
chmod 644 /usr/local/share/man/man3/zlib.3
cp zlib.pc /usr/local/lib/pkgconfig
chmod 644 /usr/local/lib/pkgconfig/zlib.pc
cp zlib.h zconf.h /usr/local/include
chmod 644 /usr/local/include/zlib.h /usr/local/include/zconf.h

wget -4 --no-check-certificate https://www.openssl.org/source/openssl-1.0.1t.tar.gz
tar -zxvf openssl-1.0.1t.tar.gz
cd openssl-1.0.1t
./config --prefix=/usr shared zlib
make
make install

installing libcrypto.a
installing libssl.a
installing libcrypto.so.1.0.0
installing libssl.so.1.0.0
make[1]: Entering directory `/usr/lib64"
make[2]: Entering directory `/usr/lib64"
make[2]: Leaving directory `/usr/lib64"
make[2]: Entering directory `/usr/lib64"
make[2]: Leaving directory `/usr/lib64"
make[1]: Leaving directory `/usr/lib64"
cp libcrypto.pc /usr/lib64/pkgconfig
chmod 644 /usr/lib64/pkgconfig/libcrypto.pc
cp libssl.pc /usr/lib64/pkgconfig
chmod 644 /usr/lib64/pkgconfig/libssl.pc
cp openssl.pc /usr/lib64/pkgconfig
chmod 644 /usr/lib64/pkgconfig/openssl.pc

另一种config方法
./config --prefix=/usr/local/openssl -fPIC shared zlib
cp -r /usr/local/openssl/include/openssl /usr/include/openssl Include 存放了使用OpenSSL 的库时需要的头文件。
cp -r /usr/local/openssl/lib/* /usr/lib64
这样可以继续编译nginx了

#-fPIC,在 Linux 下动态链接库,“标准” 的做法是编译成位置无关代码(Position Independent Code,PIC),然后链接成一个动态链接库,不加经常也能正常运行,只是创建 .so 的时候会有一个警告。
#ldd命令用于打印程序或者库文件所依赖的共享库列表

ldd $(which nginx)
linux-vdso.so.1 => (0x00007fff079e7000)
libdl.so.2 => /lib64/libdl.so.2 (0x00007fbceb888000)
libpthread.so.0 => /lib64/libpthread.so.0 (0x00007fbceb66b000)
libcrypt.so.1 => /lib64/libcrypt.so.1 (0x00007fbceb433000)
libpcre.so.0 => /lib64/libpcre.so.0 (0x00007fbceb206000)
libssl.so.1.0.0 => /usr/lib64/libssl.so.1.0.0 (0x00007fbceafa2000)
libcrypto.so.1.0.0 => /usr/lib64/libcrypto.so.1.0.0 (0x00007fbceabc2000)
libz.so.1 => /lib64/libz.so.1 (0x00007fbcea9ac000)
libc.so.6 => /lib64/libc.so.6 (0x00007fbcea618000)
/lib64/ld-linux-x86-64.so.2 (0x00007fbceba91000)
libfreebl3.so => /lib64/libfreebl3.so (0x00007fbcea414000)

如果--prefix=/usr 目录是其他目录则需要使用ldconfig(一个动态链接库管理命令),为了让动态链接库为系统所共享
echo "/usr/local/openssl/lib">>/etc/ld.so.conf #非必须
ldconfig -v
ldconfig做的这些东西都与运行程序时有关,跟编译没有关系。

dynamic/shared libraries
/lib /lib64是内核级的
/usr/lib /usr/lib64是系统级的
/usr/local/lib /usr/local/lib64是用户级的

 

 

linux编译c程序_Linux编译安装openssl和生成系统动态连接库dynamic/shared libraries

http://m.bbyears.com/jiaocheng/110334.html

推荐访问:linux内核编译 linux编译命令
相关阅读 猜你喜欢
本类排行 本类最新