我在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上构建的,现在交叉编译是在ubuntu18.04上完成的
您的libcrypto.so正在引用glibc(所有东西的基本库(2.28版本中的一个函数,该函数在您于20.04构建时存在,但现在您在18.04上构建的是另一个不兼容的glibc版本。
阻力最小的路径可能是使用当前的工具链重建openssl。