Sourcery CodeBech Lite安装及使用

简介

GNU ARM toolchina: Sourcery CodeBech Lite在Ubuntu上的安装,卸载以及使用。

一. 下载

Sourcery CodeBech的下载页面:
http://www.mentor.com/embedded-software/sourcery-tools/sourcery-codebench/overview/
在网页的最后: 有链接 Learn more and download Lite edition可以下载Lite version。
http://www.mentor.com/embedded-software/sourcery-tools/sourcery-codebench/editions/lite-edition/
此处选择target Processor 以及 OS。打开下载页面后, 选择host processor 以及 OS。
我是Ubuntu系统, 所以选择IA32 GNU/Linux Tar.

二. 安装

参照Gettting Started Guid (pdf).

1.$ cd ~; mkdir CodeSourcery
2.把下载的arm-2012.03-57-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz2, 移动到~/CodeSourcery
3.$ bunzip2 ~/CodeSourcery/arm-2012.03-57-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz2
4.$ tar xf  ~/CodeSourcery/arm-2012.03-57-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz2
5.把~/CodeSourcery/arm-2012.03/bin 添加到PATH
(在~/.bashrc中添加PATH = ~/CodeSourcery/arm-2012.03/bin:$PATH)
6.验证安装是否成功:
$ arm-none-linux-gnueabi-g++ -v
如果显示如下信息,则表示安装成功。
> gcc version 4.6.3 (Sourcery CodeBench Lite 2012.03-57)

三. 卸载

1. 直接删除~/CodeSourcery;
2. 修改PATH环境变量即可。

四. 使用

本节主要介绍其在TQ2440开发板上的使用。TQ2440的处理器是 Samsung S3C2440AL(ARM920T).
为了使Soucery CodeBench产生的程序能够在target上运行, target必须安装target board对应的sysroot(由etc, lib, sbin以及usr子目录组成)。对于S3C2440AL选择 Install path to Sourcery CodeBench/arm-none-linux-gnueabi/libc/armv4t下的 etc, lib, sbin以及usr子目录。

1. 安装sysroot及运行binary
安装sysroot有三种选择:
a. 直接在target的filesystem的root下安装。
这种方法适合从头开始构建target board的Linux filesystem. 如果target board已经有Linux filesystem,那么覆盖原来的c libraries, 有可能导致已有的程序不能运行,或者target board不能正常开机。
b. 在target的root之外其他地方安装。
在Host上编译程序时使用-rpath以及--dynamic-link linker选项指定sysroot的位置。在TQ2440上,我比较喜欢这种方法。下面以HelloArm程序为例,说明其使用 main.cpp:
 #include <iostream>
 using namespace std;
  
 int main()
 {
     cout<<"Hello ARM!!"<<endl;
 }

把armv4t/lib/ld-linux.so.3 copy到u盘的lib目录下(ld-linux.so.3是一个link,link向ld-2.15.so, 可以把ld-2.15.socopy到u盘的lib目录下,并把重命名为ld-linux.so.3),同样吧armvt/usr/lib下的libstdc++.so.6copy到u盘的lib目录下。
命令:
arm-none-linux-gnueabi-g++ -o HelloArm -march=armv4t -Wl,-rpath=/udisk/lib:/udisk/usr/lib -Wl,-dynamic-linker=/udisk/lib/ld-linux.so.3 main.cpp

编译生成HelloArm.

命令:

$ file HelloArm

> HelloArm: ELF 32-bit LSB executable, ARM, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.16, not stripped

即可查看生成的HelloARM的信息。

把HelloArm copy到TQ2440开发板,在minicom里, 直接运行:

/udisk/HelloArm

> Hello ARM!!

即表示运行成功。如果出现error: Permission denied, 那么需要同时把上面copy的lib以及HelloArm binary都改成可执行。 

事实上, TQ2440自带的系统/lib下同样有libstdc++.so.6, 重命名此文件为其他名字比如libstdc++.so.6__, 再次运行HelloARM,同样可以成功。如果同时重命名/udisk/lib下的libstdc++.so.6为libstdc++.so.6__ 则HelloARM不能成功运行,提示: Failed to find the shared library: libstdc++.so.6.....

c. 在target的root之外其他地方安装, 但执行时指定sysroot位置。

由于debugger不支持这种方式,故不推荐。
















 

你可能感兴趣的:(c,ubuntu,OS,gcc,Path,download)