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?

centos中缺少libcrypto.so.10 和 libssl.so.10?

libcrypto.so.0.9.7:无法打开共享对象文件

libcrypto.so.10:无法打开共享对象文件:没有这样的文件或目录