我正在尝试为ubuntu安装gnu arm工具链 . 我首先从CodeSourcery下载了tar . 但是当我进入bin文件夹时,我无法运行任何二进制文件 . 我已经尝试过./而没有把它放在PATH中,它一直告诉我“Command not Found”但文件就在我面前的文件夹中 . 然后我尝试了sudo apt-get install gcc-arm-linux-gnueabi,除非它说已成功安装,我找不到它的地方gcc-arm-linux-gnueabi . 有人可以帮忙吗?
它有点违反直觉 . 工具链叫做gcc-arm-linux-gnueabi . 要调用这些工具,请执行以下命令: arm-linux-gnueabi-xxx
其中xxx是 gcc 或 ar 或 ld 等
尝试以下命令:
which gcc-arm-linux-gnueabi
该命令很可能安装在 /usr/bin 中 .
/usr/bin
您已经在运行x86_64用户空间的盒子上安装了为i686编译的工具链 .
使用i686 VM .
你在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/
固定,使用:
sudo apt-get install gcc-arm*
CodeSourcery约定是对所有可执行文件使用前缀 arm-none-linux-gnueabi- ,而不是你提到的 gcc-arm-linux-gnueabi . 因此,CodeSourcery gcc的标准名称为 arm-none-linux-gnueabi-gcc .
arm-none-linux-gnueabi-
gcc-arm-linux-gnueabi
安装CodeSourcery G后,需要将CodeSourcery目录添加到 PATH 中 .
PATH
通常,我更喜欢将CodeSourcery安装到像 /opt/arm-2010q1 这样的目录中 . 如果您不知道安装它的位置,可以使用 locate arm-none-linux-gnueabi-gcc 找到它,但是在 locate 正常工作之前,您可能需要强制使用 sudo updatedb 更新您的定位数据库 .
/opt/arm-2010q1
locate arm-none-linux-gnueabi-gcc
locate
sudo updatedb
确定CodeSourcery的安装位置后,通过编辑 ~/.bashrc 将其添加到PATH中,如下所示:
~/.bashrc
PATH=/opt/arm-2010q1/bin:$PATH
此外,定义是习惯和非常方便的
CROSS_COMPILE=arm-none-linux-gnueabi-
在 .bashrc 中,因为定义了 CROSS_COMPILE ,大多数工具会自动使用适当的编译器进行ARM编译,而无需执行任何操作 .
.bashrc
CROSS_COMPILE
尝试在VM下的ubunto 14.04.03 64bit 上交叉编译raspberry pi内核时遇到了同样的错误 . 解决方案被发现here:
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
请注意path命令中的x64版本
如果你在64位操作系统上,那么你需要安装这些额外的库 .
sudo apt-get install lib32z1 lib32ncurses5 lib32bz2-1.0
我也面临同样的问题并在安装以下依赖项后解决了它:
sudo apt-get install lib32z1-dev
如果你使用64位版本的ubuntu或debian(参见例如'cat / proc / version'),你应该只使用64位交叉编译器,如果你克隆的话
git clone https://github.com/raspberrypi/tools
然后是64位工具
tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian-x64
将该目录用于gcc-toolchain . 我在这里可以获得一个有用的编译教程Building and compiling Raspberry PI Kernel(使用上面的-x64路径作为$ )
10 回答
它有点违反直觉 . 工具链叫做gcc-arm-linux-gnueabi . 要调用这些工具,请执行以下命令: arm-linux-gnueabi-xxx
其中xxx是 gcc 或 ar 或 ld 等
尝试以下命令:
该命令很可能安装在
/usr/bin
中 .您已经在运行x86_64用户空间的盒子上安装了为i686编译的工具链 .
使用i686 VM .
你在64位操作系统上编译吗?尝试:
我在尝试编译Raspberry Pi内核时遇到了同样的问题 . 我在Ubuntu 12.04 64位上进行交叉编译,工具链需要ia32-libs才能在64位系统上运行 .
见http://hertaville.com/2012/09/28/development-environment-raspberry-pi-cross-compiler/
固定,使用:
CodeSourcery约定是对所有可执行文件使用前缀
arm-none-linux-gnueabi-
,而不是你提到的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
找到它,但是在locate
正常工作之前,您可能需要强制使用sudo updatedb
更新您的定位数据库 .确定CodeSourcery的安装位置后,通过编辑
~/.bashrc
将其添加到PATH中,如下所示:此外,定义是习惯和非常方便的
在
.bashrc
中,因为定义了CROSS_COMPILE
,大多数工具会自动使用适当的编译器进行ARM编译,而无需执行任何操作 .尝试在VM下的ubunto 14.04.03 64bit 上交叉编译raspberry pi内核时遇到了同样的错误 . 解决方案被发现here:
请注意path命令中的x64版本
如果你在64位操作系统上,那么你需要安装这些额外的库 .
我也面临同样的问题并在安装以下依赖项后解决了它:
如果你使用64位版本的ubuntu或debian(参见例如'cat / proc / version'),你应该只使用64位交叉编译器,如果你克隆的话
然后是64位工具
将该目录用于gcc-toolchain . 我在这里可以获得一个有用的编译教程Building and compiling Raspberry PI Kernel(使用上面的-x64路径作为$ )