linux 在Intel 64位Red Hat 7.5上交叉编译到ARM 64(AARCH 64)找不到dlfcn. h、cstddef. h等

hec6srdp  于 12个月前  发布在  Linux
关注(0)|答案(1)|浏览(194)

我有一个在红帽64位Linux上用gcc编译的程序。我运行它,它可以很好地创建一个共享目标文件:

gcc -ansi -std=c++11-shared -fPIC...etc

字符串
我试图在同一台机器上交叉编译64位ARM(AARCH64)。
我安装了交叉编译工具:

sudo yum install gcc-aarch64-linux-gnu
sudo yum install gcc-c++-aarch64-linux-gnu


然而,当我运行同样的命令,工作正常,只是运行作为

aarch64-linux-gnu-gcc -ansi -std=c++11 -shared -fPIC...etc


它会得到错误,但不会构建:

fatal error: dlfcn.h: No such file or directory
 #include <dlfcn.h>


如果我将其注解掉,它会遇到cstddef. h fatal error not found等的下一个包含项
我该怎么做?

rqqzpn5f

rqqzpn5f1#

我曾经遇到过类似的问题,不幸的是,我了解到在RedHat上开发并不像在Debian上那么容易(至少对我来说是这样)。最后,我设法安装了一个aarch 64的交叉编译工具链,我现在正在使用它。我使用的redHat版本是:* Red Hat Enterprise Linux Server release 7.9(Maipo)*,我下载了这个版本的以下软件包。

  1. cross-gcc-common-4.8.5-16.el7.1.noarch.rpm
  2. cross-binutils-common-2.27-9.el7.1.noarch.rpm
  3. binutils-aarch64-linux-gnu-2.27-9.el7.1.x86_64.rpm
  4. gcc-aarch64-linux-gnu-4.8.5-16.el7.1.x86_64.rpm
    然后使用命令“rpm -Uvh <package_name>.rpm“按顺序安装软件包(您很可能需要sudo)。
    如果一切顺利,您可以尝试命令“aarch 64-linux-gnu-gcc -v”来显示aarch 64 gcc的版本。

相关问题