libcrypto.so:未定义对“fcntl@GLIBC_2.28”的引用
Posted
技术标签:
【中文标题】libcrypto.so:未定义对“fcntl@GLIBC_2.28”的引用【英文标题】:libcrypto.so: undefined reference to `fcntl@GLIBC_2.28' 【发布时间】:2020-10-23 07:31:55 【问题描述】:我正在 x86 上执行 ARM 交叉编译,并且我有一个如下所示的工具链:
SET(CMAKE_SYSTEM_NAME Linux)
include(CMakeForceCompiler)
SET(CMAKE_C_COMPILER arm-linux-gnueabihf-gcc)
SET(CMAKE_CXX_COMPILER arm-linux-gnueabihf-g++)`
我已经编写了自己的脚本来交叉编译我的代码以生成二进制文件。在我的脚本中,我安装了以下工具:
apt-get install -y debootstrap build-essential cmake libssl-dev:armhf gcc-arm-linux* g++-arm-linux* openssl:armhf libssl-dev:armhf curl:armhf libcurl4-gnutls-dev:armhf libtirpc-dev:armhf
我的 ubuntu 18.04 操作系统上安装了 openssl 1.1.1f,运行脚本时出现以下错误:
libcrypto.so: undefined reference to `fcntl@GLIBC_2.28'
注意:这个 libcrypto.so 库是我在 ubuntu 20.04 上构建的,现在交叉编译是在 ubuntu 18.04 上完成的
【问题讨论】:
【参考方案1】:您的 libcrypto.so 引用了 glibc(一切的基本库)版本 2.28 中的函数,该函数在您在 20.04 上构建期间存在,但现在您在 18.04 上使用不同的、不兼容的版本进行构建glibc。
阻力最小的路径可能是使用您当前的工具链重建 openssl。
【讨论】:
你能指导我安装那个 glibc 吗? 一个系统中一次只能有一个 glibc 版本。当然,更改它会修复 libcrypto。它会破坏其他一切。如果你想要一个认真的学习体验,当然,去吧。我想我自己不会这样做。 在我的交叉编译脚本中,我已经安装了以下工具:apt-get install -y debootstrap build-essential cmake libssl-dev:armhf gcc-arm-linux* g++-arm-linux* openssl:armhf libssl-dev:armhf curl:armhf libcurl4-gnutls-dev:armhf libtirpc-dev:armhf
。但仍然出现上述问题中定义的错误以上是关于libcrypto.so:未定义对“fcntl@GLIBC_2.28”的引用的主要内容,如果未能解决你的问题,请参考以下文章
UnsatisfiedLinkError: libcrypto.so.1.0.0 not found
ssh:重定位错误:ssh:符号 EVP_enc_null,版本 OPENSSL_1.0.0 未在带有链接时间参考的文件 libcrypto.so.1.0.0 中定义
centos中缺少libcrypto.so.10 和 libssl.so.10?