问题描述
我正在尝试为ubuntu安装gnu arm工具链。我首先从CodeSourcery下载了tar。但是,当我进入bin文件夹时,我无法运行任何二进制文件。我尝试过使用./和不使用./并将其放在PATH中,它一直告诉我“找不到命令”,但文件在我前面的文件夹中。然后我尝试了sudo apt-get安装gcc-arm-linux-gnueabi,除了它说成功安装之后,无法在whereis gcc-arm-linux-gnueabi中找到它。有人可以帮忙吗?
最佳方法
您在64位OS上编译吗?尝试:
sudo apt-get install ia32-libs
尝试编译Raspberry Pi内核时,我遇到了同样的问题。我在64位Ubuntu 12.04上为cross-compiling,该工具链要求ia32-libs可以在64位系统上工作。
次佳方法
固定,使用:
sudo apt-get install gcc-arm*
第三种方法
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强制更新您的locate db。
在确定CodeSourcery的安装位置之后,通过如下编辑~/.bashrc将其添加到PATH中:
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上交叉编译raspberry pi内核时遇到相同的错误。找到解决方案here:
-在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
注意path命令中的x64版本
第六种方法
安装以下依赖项后,我也遇到了相同的问题并解决了该问题:
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路径用作$ {CCPREFIX})
参考资料