- 使用arm-2009q3.tar这一款交叉编译器。三星公司开发S5PV210时使用的,错误最少。
- 在linux系统下的应用程序一般安装在那里呢?
从技术角度讲,都可以。但是有些约定俗称的,比如/bin安装系统自带的用户常使用的应用程序,/sbin中放置系统自带的与系统管理相关的应用程序,/usr下安装用户的应用程序。 - 安装的过程还是比较简单的,把arm-2009q3.tar.bz2从共享文件夹/mnt/hgfs/ubuntu16_shared中拷到linux中,然后把arm-2009q3.tar.bz2这一压缩文件解压,值得一提的是解压命令
tar
-c 建立新的打包文件
-r 向打包文件末尾追加文件
-x 从打包文件中解出文件
-o 将文件解开到标准输出
-v 处理过程中输出相关信息
-f 对普通文件操作
-z 调用 gzip 来压缩打包文件,与-x 联用时调用 gzip 完成解压缩
-j 调用 bzip2 来压缩打包文件,与-x 联用时调用 bzip2 完成解压缩
-Z 调用 compress 来压缩打包文件,与-x 联用时调用 compress 完成解压缩
常见的压缩文件一般有两种方式,tar.gz和tar.bz2。tar.gz使用tar -zxvf xxx.tar.gz
来解压,而tar.bz2使用tar -jxvf xxx.tar.bz2
我的比较俗气的记忆方式是.bz2是用-jxvf,jb一组。
最后的可执行程序路径是:/usr/local/arm/arm-2009q3/bin
- 在上面的安装完成之后,其实已经是可以使用交叉编译工具了的,但是每次使用的时候要加上目录,即
/usr/local/arm/arm-2009q3/bin/arm-none-linux-gnueabi-gcc
,单独直接使用arm-none-linux-gnueabi-gcc
会出现找不到命令的情况,所以这里涉及了一个重要的问题:环境变量。
- 环境变量相当于操作系统的全局变量,我们要用的全局变量PATH的意义是:指定命令的搜索路径。
- 可以用echo命令来打印出PATH的值。
echo $PATH
结果显示为/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games
- 将
/usr/local/arm/arm-2009q3/bin
加到PATH中,以后使用arm-linux-gcc命令的时候就可以直接使用不加目录了。具体方法是使用export PATH=/usr/local/arm/arm-2009q3/bin:$PATH
- 但是在某一终端执行上述命令后,只会在上述终端有效,关掉以后就没用了。在linux的宿主目录下有一个文件叫 /root/.bashrc,每个终端在启动时都会调用该文件,所以将上面的语句写到.bashrc中就可以了!
- 最后就是诸如
arm-none-linux-gnueabi-gcc
这样的命令比较复杂,所以需要创建方便的符号链接,比如ln arm-none-linux-gnueabi-gcc -s arm-linux-gcc
之后就可以直接使用arm-linux-gcc这个命令了。 - 注意,如果使用的是64位的ubuntu系统(我用的ubuntu16),是不兼容这个交叉编译链的,需要通过
sudo apt-get install lib32ncurses5 lib32z1
来安装32位的库支持。
至此,交叉编译工具就安装完毕啦!喜闻乐见!