预备实验:交叉编译环境建立 知识点储备: 1、熟练掌握shell指令:sudo 、cd 、ls、tar、pwd、vim、source、export(阅读“Linux 系统命令及其使用详解”,完成附录一“Linux指令的随堂测试”) 2、掌握添加环境变量的手段 (参见附录二“关于在ubuntu下设置环境变量的三种方法”) 3、掌握编写Makefile的方法(阅读“跟我一起写Makefile”,完成附录三的“Makefile的随堂测试”) 4、关于64位ububuntu12.4系统安装32位依赖库的问题解答见附录四。 一、交叉编译的安装 步骤: 1、将压缩包arm-linux-gcc-4.4.3.tar.gz存放在一个目录下,这个目录就是你等会解压缩的目录,以后这个目录就不能随便删掉了,我的存放路径是 /home/song/software,如下图,记住这个路径,等会还会用到。

2、使用tar命令:tar zxvf arm-gcc-4.4.3.tar.gz将software文件夹下的arm-linux-gcc-4.4.3.tar.gz解压缩安装到当前目录下如下图

通过下图可以看到解压成功了,并且解压后的文件存放在了/home/song/software/opt/FriendlyARM/toolschain/4.4.3文件夹下,如下图所示,这个存放路径可得记住,如下图

3、接下来配置系统环境变量,把交叉编译工具链的路径添加到环境变量PATH中去,这样就可以在任何目录下使用这些工具。记下上一步中的安装路径,使用命令:vim /etc/profile 编辑profile文件,添加环境变量。

在profile中最后一行添加: export(此处一个空格接下一行)PATH=$PATH:/home/song/software/opt/FriendlyARM/toolschain/4.4.3/bin
这个路径就是那个bin目录所在的路径,可能你的不一样,按照你实际的目录填就可以了,如下图32行

编写完保存就好了 4、使用命令:source /etc/profile 使环境变量生效 5、在终端上输入命令 arm-linux 再按Tab键,可以看到下图,说明环境变量设置成功了

6、使用命令:arm-linux-gcc -v 会出现下面的错误提示:/home/song/software/opt/FriendlyARM/toolschain/4.4.3/bin/arm-linux-gcc: 15: exec: /home/song/software/opt/FriendlyARM/toolschain/4.4.3/bin/.arm-none-linux-gnueabi-gcc: not found

说是出现这种问题的原因是由于Ubuntu12.04用的是64位的,解决方法就是使用命令:sudo apt-get install ia32-libs 装一些32位的库

7、待安装完32位的库之后,再使用命令:arm-linux-gcc -v,这一次就成功了,如下图

8、验证,编译一个hello.c文件

使用命令:arm-linux-gcc hello.c -o hello 看是否编译成功

可见成功生成了二进制文件。

二、设备驱动的安装 在实验之前需要安装两种驱动,分别是USB转串口驱动和 USB下载驱动。 (1)USB转串口驱动 现在很多的电脑都没有串口了,对于我们开发人员来说,只能购买一个 USB 转串口,本文对 USB 转串口在ARM 开发板上的使用做一个简单的介绍: 首先我们需要安装 USB 转串口的驱动,打开设备管理器,右击端口,选择“更新驱动程序软件”如图所示: 会出现如何搜索驱动程序软件?选择“浏览计算机查找”并找到解压后的“USB转串口驱动”目录,选择目录下的 ,点击进行安装,安装完成即可,若安装不成功则禁用端口,并以管理员身份运行windows 7_vista_32_64目录下的 进行安装驱动。 安装完成以后,接上 USB 转串口,这时在我的电 脑的设备管理器中,我们可以看到它,如下图所示:

这时我们看到的是 ,但有时候我们看到COM号是大于4的,改成COM1-4, 更改方案: 右键端口,选择“属性”选项,点击“端口设置”→“高级”

注意左下角的就是我们需要更改的端口号,改成COM1-4任何中的一个。 (2)UBS下载驱动 插入下载线后,设备管理器会出现其他设备,

按以上方面点击右键选择“更新程序软件驱动”选择浏览路径,选择解压后的文件路径到 ,并安装,选择“始终安装”。 三、代码的编写以及烧录 插入USB接口和串口转USB接口,按ARM板上RESET键 若驱动安装良好,则最上方显示 串口名 以及 连接成功

此时出现如图程序

按a键进入下载,点击USB下载——uboot——选择对应的二进制文件即可 片刻即可下载成功

附录一:随堂练习--linux 常用指令

  1. 利用sudo -s 指令切换到root用户
  2. 利用pwd显示当前路径
  3. 利用ls -l指令列出当前文件夹下的各个文件的属性
  4. 将路径切换到opt目录之下
  5. 在opt目录下新建arm 文件夹,并修改属性,使其具有可读写可执行的权限
  6. 在arm 文件夹下,利用vim编写hello.c 文件,输入以下内容,并保存退出
  7. include

    main() {printf("Hello World!\n"); }
  8. 在opt 目录下新建tmp文件夹,将步骤5编写的hello.c 文件拷贝到tmp文件夹下
  9. 将tmp 文件夹压缩为tmp.tgz (# tar cvfz tmp.tgz tmp)
  10. 删除tmp 文件夹
  11. 将tmp.tgz解压缩到当前文件夹下(tar xvfz tmp.tgz)
  12. 进入tmp 文件夹,利用cat、 more、 less 指令查看hello.c,体会区别
  13. 利用date 指令查看当前的时间
  14. 利用date 指令设置当前时间
  15. 利用ps指令显示当前的进程号
  16. 利用Kill指令删除某一运行的进程
  17. 利用echo指令输出一段字符串“#It is add”到hello.c 文件中
  18. 利用export 指令查看环境变量$PATH
  19. 利用find命令查找/opt 目录下所有的c 文件
  20. 用ctrl+c 中止进程
  21. 用mount 指令挂载u盘
  22. 试编写shell 指令脚本

附录二:在ubuntu下设置环境变量有三种方法

一、临时设置

export PATH=/home/yan/share/usr/local/arm/3.4.1/bin:$PATH

二、当前用户的全局设置

$ vim ~/.bashrc,添加行:

export PATH=/home/yan/share/usr/local/arm/3.4.1/bin:$PATH

使生效

$ source .bashrc

三、所有用户的全局设置

$ vim /etc/profile

在里面加入:

export PATH=/home/yan/share/usr/local/arm/3.4.1/bin:$PATH

使生效

$ source profile

测试当前的环境变量;

输入 $ echo $PATH ,查看输出是否已包含路径


用户登录后加载profile和bashrc的流程如下:

1)/etc/profile-------->/etc/profile.d/*.sh 2)$HOME/.bash_profile-------->$HOME/.bashrc---------->/etc/bashrc

说明: bash首先执行/etc/profile脚本,/etc/profile脚本先依次执行/etc/profile.d/*.sh 随后bash会执行用户主目录下的.bash_profile脚本,.bash_profile脚本会执行用户主目录下的.bashrc脚本, 而.bashrc脚本会执行/etc/bashrc脚本

至此,所有的环境变量和初始化设定都已经加载完成. bash随后调用terminfo和inputrc,完成终端属性和键盘映射的设定.

PATH变量特殊说明一下:

1、如果是超级用户登录,在没有执行/etc/profile之前,PATH已经设定了下面的路径: /usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin 2、如果是普通用户,PATH在/etc/profile执行之前设定了以下的路径: /usr/local/bin:/bin:/usr/bin


关于ubuntu14.04以上版本的环境变量修改可参考:

http://www.cnblogs.com/ITBread/p/3925014.html

http://www.linuxdiyf.com/linux/14436.html

附录三 Makefile的随堂测试 1、输入书中P32的例子,运行gcc变量 2、了解Makefile中变量的赋值方法,说明“=、:=、?=、+=”的区别 3、参考书中P51页Makefile的写法,重新对P32的例子编译,并注释P52页例子中Makefile的每条语句

附录四:关于64位ububuntu12.4系统安装32位依赖库的问题解答 Q:在ubuntu12.04上,要运行32的程序,需要安装32位的兼容库。会遇到如下问题: 以前在10.04上成功安装过,方法是 sudo apt-get install ia32-libs 但是在12.04上遇到了困难,遇到下面这种错误 $ sudo apt-get install ia32-libs 正在读取软件包列表... 完成 正在分析软件包的依赖关系树 正在读取状态信息... 完成 有一些软件包无法被安装。如果您用的是 unstable 发行版,这也许是 因为系统无法达到您要求的状态造成的。该版本中可能会有一些您需要的软件 包尚未被创建或是它们已被从新到(Incoming)目录移出。 下列信息可能会对解决问题有所帮助:

下列软件包有未满足的依赖关系: ia32-libs : 依赖: ia32-libs-multiarch E: 无法修正错误,因为您要求某些软件包保持现状,就是它们破坏了软件包间的依赖关系 网上也没有找到合适的方法。

A:安装需要的32位库,输入如下命令: $ sudo apt-get install libc6:i386 libgcc1:i386 gcc-4.6-base:i386 libstdc++5:i386 libstdc++6:i386

Q:还是出现问题,例如还是有些安装包安装不上。

A:更新自带的源 1、 更新ia32-libs软件 装好ubuntu系统后的第一见事就是替换自带的更新源,原因是系统自带的源有些在中国访问不了,可以访问的速度又特别慢。幸好国内的一些公司和大学提供了速度不错的更新源。下面介绍如何使用更快的更新源

方法/步骤:

  1. 1 备份sources.list文件(其中opt/etc-apt-source.list为备份路径): cp /etc/apt/sources.list opt/etc-apt-source.list
  2. 2 打开sources.list: sudo gedit /etc/apt/sources.list

  3. 3 修改sources.list,将sources.list内容全部替换为以下内容:

    电子科大(教育网用户推荐)

    deb http://ubuntu.uestc.edu.cn/ubuntu/ precise main restricted universe multiverse deb http://ubuntu.uestc.edu.cn/ubuntu/ precise-backports main restricted universe multiverse deb http://ubuntu.uestc.edu.cn/ubuntu/ precise-proposed main restricted universe multiverse deb http://ubuntu.uestc.edu.cn/ubuntu/ precise-security main restricted universe multiverse deb http://ubuntu.uestc.edu.cn/ubuntu/ precise-updates main restricted universe multiverse deb-src http://ubuntu.uestc.edu.cn/ubuntu/ precise main restricted universe multiverse deb-src http://ubuntu.uestc.edu.cn/ubuntu/ precise-backports main restricted universe multiverse deb-src http://ubuntu.uestc.edu.cn/ubuntu/ precise-proposed main restricted universe multiverse deb-src http://ubuntu.uestc.edu.cn/ubuntu/ precise-security main restricted universe multiverse deb-src http://ubuntu.uestc.edu.cn/ubuntu/ precise-updates main restricted universe multiverse

    中国科技大学(教育网用户推荐)

    deb http://debian.ustc.edu.cn/ubuntu/ precise main restricted universe multiverse deb http://debian.ustc.edu.cn/ubuntu/ precise-backports restricted universe multiverse deb http://debian.ustc.edu.cn/ubuntu/ precise-proposed main restricted universe multiverse deb http://debian.ustc.edu.cn/ubuntu/ precise-security main restricted universe multiverse deb http://debian.ustc.edu.cn/ubuntu/ precise-updates main restricted universe multiverse deb-src http://debian.ustc.edu.cn/ubuntu/ precise main restricted universe multiverse deb-src http://debian.ustc.edu.cn/ubuntu/ precise-backports main restricted universe multiverse deb-src http://debian.ustc.edu.cn/ubuntu/ precise-proposed main restricted universe multiverse deb-src http://debian.ustc.edu.cn/ubuntu/ precise-security main restricted universe multiverse deb-src http://debian.ustc.edu.cn/ubuntu/ precise-updates main restricted universe multiverse

    北京理工(教育网用户推荐)

    deb http://mirror.bjtu.edu.cn/ubuntu/ precise main multiverse restricted universe deb http://mirror.bjtu.edu.cn/ubuntu/ precise-backports main multiverse restricted universe deb http://mirror.bjtu.edu.cn/ubuntu/ precise-proposed main multiverse restricted universe deb http://mirror.bjtu.edu.cn/ubuntu/ precise-security main multiverse restricted universe deb http://mirror.bjtu.edu.cn/ubuntu/ precise-updates main multiverse restricted universe deb-src http://mirror.bjtu.edu.cn/ubuntu/ precise main multiverse restricted universe deb-src http://mirror.bjtu.edu.cn/ubuntu/ precise-backports main multiverse restricted universe deb-src http://mirror.bjtu.edu.cn/ubuntu/ precise-proposed main multiverse restricted universe deb-src http://mirror.bjtu.edu.cn/ubuntu/ precise-security main multiverse restricted universe deb-src http://mirror.bjtu.edu.cn/ubuntu/ precise-updates main multiverse restricted universe

    163(非教育网推荐)

    deb http://mirrors.163.com/ubuntu/ precise main restricted deb-src http://mirrors.163.com/ubuntu/ precise main restricted deb http://mirrors.163.com/ubuntu/ precise-updates main restricted deb-src http://mirrors.163.com/ubuntu/ precise-updates main restricted deb http://mirrors.163.com/ubuntu/ precise universe deb-src http://mirrors.163.com/ubuntu/ precise universe deb http://mirrors.163.com/ubuntu/ precise-updates universe deb-src http://mirrors.163.com/ubuntu/ precise-updates universe deb http://mirrors.163.com/ubuntu/ precise multiverse deb-src http://mirrors.163.com/ubuntu/ precise multiverse deb http://mirrors.163.com/ubuntu/ precise-updates multiverse deb-src http://mirrors.163.com/ubuntu/ precise-updates multiverse deb http://mirrors.163.com/ubuntu/ precise-backports main restricted universe multiverse deb-src http://mirrors.163.com/ubuntu/ precise-backports main restricted universe multiverse deb http://mirrors.163.com/ubuntu/ precise-security main restricted deb-src http://mirrors.163.com/ubuntu/ precise-security main restricted deb http://mirrors.163.com/ubuntu/ precise-security universe deb-src http://mirrors.163.com/ubuntu/ precise-security universe deb http://mirrors.163.com/ubuntu/ precise-security multiverse deb-src http://mirrors.163.com/ubuntu/ precise-security multiverse deb http://extras.ubuntu.com/ubuntu precise main deb-src http://extras.ubuntu.com/ubuntu precise main

    sohu(非教育网推荐)

    deb http://mirrors.sohu.com/ubuntu/ precise main restricted deb-src http://mirrors.sohu.com/ubuntu/ precise main restricted deb http://mirrors.sohu.com/ubuntu/ precise-updates main restricted deb-src http://mirrors.sohu.com/ubuntu/ precise-updates main restricted deb http://mirrors.sohu.com/ubuntu/ precise universe deb-src http://mirrors.sohu.com/ubuntu/ precise universe deb http://mirrors.sohu.com/ubuntu/ precise-updates universe deb-src http://mirrors.sohu.com/ubuntu/ precise-updates universe deb http://mirrors.sohu.com/ubuntu/ precise multiverse deb-src http://mirrors.sohu.com/ubuntu/ precise multiverse deb http://mirrors.sohu.com/ubuntu/ precise-updates multiverse deb-src http://mirrors.sohu.com/ubuntu/ precise-updates multiverse deb http://mirrors.sohu.com/ubuntu/ precise-backports main restricted universe multiverse deb-src http://mirrors.sohu.com/ubuntu/ precise-backports main restricted universe multiverse deb http://mirrors.sohu.com/ubuntu/ precise-security main restricted deb-src http://mirrors.sohu.com/ubuntu/ precise-security main restricted deb http://mirrors.sohu.com/ubuntu/ precise-security universe deb-src http://mirrors.sohu.com/ubuntu/ precise-security universe deb http://mirrors.sohu.com/ubuntu/ precise-security multiverse deb-src http://mirrors.sohu.com/ubuntu/ precise-security multiverse deb http://extras.ubuntu.com/ubuntu precise main deb-src http://extras.ubuntu.com/ubuntu precise main

  4. 4 保存对source.list的修改。

更新源信息: sudo apt-get update

重新执行 $ sudo apt-get install libc6:i386 libgcc1:i386 gcc-4.6-base:i386 libstdc++5:i386 $sudo apt-get update

results matching ""

    No results matching ""

    results matching ""

      No results matching ""