uclinux编译不完全指南

First Post:
Last Update:

以下编译环境在Ubuntu 16.04 Lts ia86

请严格按照教程 以免出现意想不到的意外情况

推荐版本ubuntu 16.04目前软件源容易找到,并且建议使用ssh连接到虚拟机.较老版本的ubuntu对vmtools的支持很差,经常出现无法拖拽,传输文件的情况.

本篇文章拉取Git:stm32f429-linux-builder,实际上也是readme文档的一次实践.

首先下载arm-uclinuxeabi-gnu中的文件,搭建arm/uclinux 工具链

  • 推荐使用ssh连接到虚拟机传输文件,推荐软件mobaxtem.

  • 放置的目录为系统根目录/ 我并不确定放置其他目录的工作是否正常.

  • 不论什么方法,把文件放到根目录就行了.

1
2
tar jxvf arm-2010q1-189-arm-uclinuxeabi-i686-pc-linux-gnu.tar.bz2
export PATH="$PATH:/arm-2010q1/bin"
  • 代码解释:解压压缩包并且添加PATH.
  • 贴出的代码为Git中写出的方法,export方法并不是一个很好的方法,关闭终端后即失效

推荐方法:修改当前用户环境变量(影响所有用户)

1
sudo nano /etc/profile

在文件末尾添加:

1
export PATH="$PATH:/arm-2010q1/bin"

刷新变量:

1
source /etc/profile

测试变量:

1
arm-uclinuxeabi-gcc -v

成功出现版本即可.

安装genromfs:

1
sudo apt-get install genromfs
  • 工具链安装完成

拉取git:

1
git clone http://github.com/jserv/stm32f429-linux-builder

cd进目录:

1
cd stm32f429-linux-builder

执行make:

1
make

请注意,由于perl版本的问题,可能会出现以下的报错

Can’t use ‘defined(@array)’ (Maybe you should just omit the defined()?) at /stm32f429-linux-builder/uclinux/kernel/timeconst.pl line 373.

解决方案如下

  • 打开uclinux/kernel/timeconst.pl文件.
  • 删除if (!defined(@val))中的defined.

保存后即可正常编译.