/opt/rh/devtoolset-9/root/usr/libexec/gcc/x86_64-redhat-linux/9/ld: 找不到 -lz 找不到 -lssl 找不到 -lcrypto

发布时间 2023-12-25 10:11:09作者: 乐swap火


我用的cmake命令是:
target_link_libraries(${MyProjectName} -L/usr/lib64/mysql -lmysqlclient -lpthread -lz -lm -lssl -lcrypto -ldl) 

将 ${MyProjectName} 这个目标(可执行文件或库文件)链接到以下的库文件:
/usr/lib64/mysql/libmysqlclient.so
/usr/lib64/libpthread.so
/usr/lib64/libz.so
/usr/lib64/libm.so
/usr/lib64/libssl.so
/usr/lib64/libcrypto.so
/usr/lib64/libdl.so

这些库文件提供了一些函数或变量,例如:
libmysqlclient.so 提供了 MySQL 数据库的客户端接口1
libpthread.so 提供了 POSIX 线程的实现2
libz.so 提供了压缩和解压缩的功能3
libm.so 提供了数学函数,如 sin, cos, sqrt 等4
libssl.so 和 libcrypto.so 提供了 SSL/TLS 协议和加密算法的支持
libdl.so 提供了动态加载共享库的功能
这个命令是 CMake 的一种语法,用于指定链接给定目标和/或其依赖项时要使用的库或标志。链接库目标的使用要求会传播到目标和其依赖项的编译选项中。

发现其实这些文件是软连接
找到对应文件创建软连接就行
sudo ln -s libcrypto.so.10 libcrypto.so