我正在尝试为 ubuntu 安装 gnu arm 工具链。我首先从 CodeSourcery 下载了 tar。但是,当我进入 bin 文件夹时,我无法运行任何二进制文件。我尝试过使用 ./ 和不使用并将其放入 PATH 中,它一直告诉我“找不到命令”,但文件就在我面前的文件夹中。然后我尝试了 sudo apt-get install gcc-arm-linux-gnueabi ,除非它说它已成功安装,但我无法使用 whereis gcc-arm-linux-gnueabi 找到它。任何人都可以帮忙吗?
11 回答
固定,使用:
sudo apt-get install gcc-arm*
您是否在 64 位操作系统上编译?尝试:
sudo apt-get install ia32-libs
尝试编译 Raspberry Pi 内核时,我遇到了同样的问题。我在 Ubuntu 12.04 64 位上进行交叉编译,工具链需要 ia32-libs 才能在 64 位系统上运行。
请参阅http://hertaville.com/2012/09/28/development-environment-raspberry-pi-cross-compiler/
arm-none-linux-gnueabi-
CodeSourcery 约定是对所有可执行文件使用前缀,而不是gcc-arm-linux-gnueabi
你提到的。因此,CodeSourcery gcc 的标准名称将是arm-none-linux-gnueabi-gcc
.
安装 CodeSourcery G++ 后,需要将 CodeSourcery 目录添加到PATH
.
通常,我更喜欢将 CodeSourcery 安装到类似/opt/arm-2010q1
或类似的目录中。如果您不知道安装位置,您可以使用 找到它locate arm-none-linux-gnueabi-gcc
,但是您可能需要强制更新您的定位数据库,sudo updatedb
然后locate
才能正常工作。
确定 CodeSourcery 的安装位置后,通过如下编辑将其添加到 PATH ~/.bashrc
:
PATH=/opt/arm-2010q1/bin:$PATH
此外,定义是习惯性的,非常方便
CROSS_COMPILE=arm-none-linux-gnueabi-
在您的 中.bashrc
,因为CROSS_COMPILE
已定义,大多数工具将自动使用适当的编译器进行 ARM 编译,而无需您做任何事情。
如果您使用的是 64 位操作系统,那么您需要安装这些附加库。
sudo apt-get install lib32z1 lib32ncurses5 lib32bz2-1.0
尝试在 VM 下的 ubunto 14.04.03 64bit上交叉编译树莓派内核时遇到相同的错误。解决方案在这里找到:
-在 Ubuntu 机器上安装用于交叉编译的软件包。
sudo apt-get install gcc-arm-linux-gnueabi make git-core ncurses-dev
- 下载工具链
cd ~
git clone https://github.com/raspberrypi/tools
- 将工具链添加到您的路径
PATH=$PATH:~/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian:~/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian-x64/bin
注意路径命令中的 x64 版本
我也遇到了同样的问题并在安装以下依赖项后解决了它:
sudo apt-get install lib32z1-dev
如果您使用的是 ubuntu 或 debian 的 64 位版本(参见例如“cat /proc/version”),如果您克隆了,您应该简单地使用 64 位交叉编译器
git clone https://github.com/raspberrypi/tools
然后64位工具在
tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian-x64
将该目录用于 gcc-toolchain。此处提供了我遵循的有用的编译教程构建和编译 Raspberry PI Kernel(使用上面的 -x64 路径作为 ${CCPREFIX})
它有点违反直觉。该工具链称为 gcc-arm-linux-gnueabi。要调用这些工具,请执行以下命令:arm-linux-gnueabi-xxx
其中 xxx 是gcc或ar或ld等
您已经在运行 x86_64 用户空间的机器上安装了为 i686 编译的工具链。
使用 i686 虚拟机。
尝试以下命令:
which gcc-arm-linux-gnueabi
该命令很可能安装在/usr/bin
.
我不得不在 Ubuntu 中为 ARM 交叉编译 C 代码。这对我有用:
$ sudo apt install gcc-arm-none-eabi
后来在qemu模拟器上测试了一下
#Install qemu
sudo apt-get install qemu qemu-user-static qemu-system-arm
#Cross compile "helloworld.c"
$ arm-none-eabi-gcc --specs=rdimon.specs -Wl,--start-group -lgcc -lc -lm -lrdimon -Wl,--end-group helloworld.c -o helloworld
#Run
qemu-arm-static helloworld