在Intel 64位Red Hat 7.5上交叉编译到ARM64(AARCH64)找不到dlfcn.h,cstddef.h等

问题描述 投票:0回答:1

我有一个程序可以在 Red Hat 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 致命错误未找到的下一个包含,等等

我该如何进行这项工作?

c++ linux gcc arm
1个回答
0
投票

我有一段时间遇到过类似的问题,不幸的是我了解到在 RedHat 上开发并不像在 Debian 上那么容易(至少对我来说)。最后,我成功安装了 aarch64 的交叉编译工具链,现在我正在使用它。 我使用的 redHat 版本是: Red Hat Enterprise Linux Server release 7.9 (Maipo) 我为此版本下载了以下软件包。

  1. 跨-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)。

如果一切顺利,您可以尝试命令“aarch64-linux-gnu-gcc -v”来显示aarch64 gcc的版本。

© www.soinside.com 2019 - 2024. All rights reserved.