linux下库文件问题
作者:互联网
openssl
yum install openssl openssl-devel
二进制文件安装在/usr/bin
目录下, 库文件安装在/usr/lib
或者/usr/lib64
目录下,头文件安装在/usr/include
目录下,但是只有动态库没有静态库:
➜ build ls /usr/lib64/libssl*
/usr/lib64/libssl3.so /usr/lib64/libssl.so.1.1
/usr/lib64/libssl.so /usr/lib64/libssl.so.1.1.1c
➜ build ls /usr/lib64/libssl*.a
zsh: no matches found: /usr/lib64/libssl*.a
boost
yum install boost boost-devel
二进制文件安装在/usr/bin
目录下, 库文件安装在/usr/lib
或者/usr/lib64
目录下,头文件安装在/usr/include
目录下,同样只有动态库没有静态库:
openssl 编译
下载openssl源码,编译openssl
➜ openssl git:(OpenSSL_1_1_1-stable) ./config --prefix=/home/macrored/code/openssl
然而使用ldd指令查看编译出来的动态库链接的不是自己(只是调试openssl,不进行安装,想让openssl独立运行),这和--prefix
选项有点违背
➜ openssl git:(OpenSSL_1_1_1-stable) ✗ ldd apps/openssl
linux-vdso.so.1 (0x00007fffc1958000)
libssl.so.1.1 => /lib64/libssl.so.1.1 (0x00007fdf7dc53000)
libcrypto.so.1.1 => /lib64/libcrypto.so.1.1 (0x00007fdf7d770000)
libdl.so.2 => /lib64/libdl.so.2 (0x00007fdf7d56c000)
libpthread.so.0 => /lib64/libpthread.so.0 (0x00007fdf7d34c000)
libc.so.6 => /lib64/libc.so.6 (0x00007fdf7cf8a000)
libz.so.1 => /lib64/libz.so.1 (0x00007fdf7cd73000)
/lib64/ld-linux-x86-64.so.2 (0x00007fdf7dee7000)
LIBRARY_PATH是程序编译期间查找动态链接库时指定查找共享库的路径
LD_LIBRARY_PATH是程序加载运行期间查找动态链接库时指定除了系统默认路径之外的其他路径
编译前设置LIBRARY_PATH也不生效,只能手动改Makefile的编译选项
使用-wl,-rpath= 来指定动态库的搜索路径
LIBDIR=#lib
CFLAGS=-Wall -g -Wl,-rpath=$(LIBRPATH)
这样编译完成后,链接的就是自己了。
(在安装homebrew后使用-Wl,-rpath链接依旧失效,原因未知,可能是ld)
标签:文件,编译,openssl,下库,so.1,usr,linux,lib64,libssl 来源: https://www.cnblogs.com/macrored/p/13550813.html