尝试在Ubuntu虚拟机上为arm平台编译Linux内核
$make ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabi-
失败如下
arm-none-linux-gnueabi-gcc: not found
试图安装
$sudo apt-get install arm-none-linux-gnueabi-gcc
E: unable to locate package arm-none-linux-gnueabi-gcc
哪里可以找到正确的包裹?如何将其包含在系统中? (我在网上发现了一些对我不起作用的链接)。如果你能提供正确的解决方案或参考,那就太好了。
答案 0 :(得分:4)
从https://sourcery.mentor.com/GNUToolchain/下载arm-2013.05-24-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz2
或https://sourcery.mentor.com/sgpp/lite/arm/portal/subscription?@template=lite
获取arm-none-linux-gnueabi工具链的正确版本(即定位GNU/Linux
而不是EABI
)。
解开它
tar xvf arm-2013.05-24-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz2
打开bashrc
vi .bashrc
最后添加以下命令
export PATH=$PATH:{path to toolchain}arm-2013.05/bin
例如export PATH=$PATH:/home/vinay/under_linux/arm-2013.05/bin
保存并退出终端。
然后你可以在没有每次导出的情况下进行交叉编译。
另外,正确的工具链可根据您的要求选择两种工具链。
Cross compile error "arm-none-eabi-g++ cannot find entry symbol"
答案 1 :(得分:3)
Ubuntu软件包的名称是gcc-arm-linux-gnueabi / gcc-arm-linux-gnueabihf。
为了构建内核,你使用哪一个并没有多大区别。为了构建其他任何东西,“gnueabihf”是硬浮版本。对于任何现代ARM处理器(此语句不包括Raspberry PI),这是您想要的。