交叉编译工具链的安装配置

交叉编译工具链的安装配置
交叉编译工具链的安装配置

交叉工具链的生成

https://www.360docs.net/doc/3b3518131.html,/uid-9185047-id-3158569.html

软件平台:ubuntu 10.10

主机编译器:gcc 4.5.1

硬件平台:s3c2410

1、准备环境

sudo apt-get install bison flex texinfo automake libtool cvs patch libncurses5-dev aria2 curl g++ subversion gawk cvsd expat gperf libexpat-dev

注:有的没安装,第4步无法生成makefile,要先安装gperf

2、下载crosstool-ng软件包

crosstool-ng-1.17.0.tar.bz2

3、相应目录的建立

sudo mkdir -p /usr/local/arm

sudo chmod 777 /usr/local/arm // 将arm目录权限设置为777

cd /usr/local/arm

mkdir 4.7.2

sudo mkdir -p /home/crosstool

cd /home/s3c2410/crosstool

sudo mkdir crosstool-build crosstool-install src-4.7.2

(编译目录、安装目录、目标源码目录)

4、安装crosstool-ng

cp crosstool-ng-1.17.0.tar.bz2 /home/s3c2410/crosstool/

解压crosstool-ng-1.17.0.tar.bz2,

tar -xvf crosstool-ng-1.17.0.tar.bz2

进入目录,进行配置:

cd /home/s3c2410/crosstool/crosstool-ng-1.17.0

将/home/s3c2410/crosstool/crosstool-install/lib/ct-ng.1.17.0/下的https://www.360docs.net/doc/3b3518131.html,p cp到/etc/bash_completion.d

配置安装目录为/home/s3c2410/crosstool/crosstool-install

注:有的没安装gperf,无法生成makefile,要先安装gperf

sudo ./configure --prefix=/home/crosstool/crosstool-install

sudo make --编译

sudo make install --安装

5、配置编译的交叉编译工具链

cd /home/s3c2410/crosstool/crosstool-build --进入编译目录

cp

/home/s3c2410/crosstool/crosstool-ng-1.17.0/samples/arm-unknown-linu x-gnueabi/* ./

sudo cp crosstool.config .config --把crosstool-config --当作默认的配置文件

sudo /home/crosstool/crosstool-install/bin/ct-ng menuconfig --图形界面进行配置,若该句无法执行可能是终端窗口太小

弹出以下菜单,此菜单主要用于交叉编译工具链的环境配置。Paths and misc options --->

(/home/crosstool/src-4.7.2) Local tarballs directory --目标源码目录

(/usr/local/arm/4.7.2) Prefix directory --最后生成的交叉编译工具链存放的目录

(2) Number of parallel jobs --主机是双核处理器的可以选2 另一说双核写4,我写的4

Target options --->

(armv4t) Architecture level

(arm9tdmi) Emit assembly for CPU

(arm920t) Tune for CPU

(vfp) Use specific FPU

Toolchain options --->

(unknown) Tuple's vendor string

这里可以设置个性化,不填就是unknow,可以设置自己的个性名如填“doc”,

这样产生的编译器前缀就是:arm-doc-linux-gnueabi-

Operating System --->

Linux kernel version (3.6.3) --->

linux-3.6.11.tar.xz/ linux-3.6.3.tar.xz/linux-3.7.2.tar.bz2

下面这些与目标源码有关:

Binary utilities --->

binutils version (2.21.1a) --->

binutils-2.21.1a.tar.bz2/binutils-2.21.1.tar.bz2/

binutils-2.22.tar.bz2/ binutils-2.23.1.tar.bz2

C compiler --->

gcc version (4.7.2) --->

gcc-4.7.2.tar.bz2/ gcc-4.5.2.tar.bz2

[ ] Fortran

[ ] Java

无法直接修改的,可以在最后手动从 .config 中加“#”屏蔽

C-library --->

glibc version (2.14.1) --->

glibc-2.15.tar.bz2/glibc-2.14.1.tar.bz2/

glibc-linuxthreads-2.1.2.tar.gz

glibc-2.1.2.tar.gz/ glibc -2.16.0.tar.xz

glibc-ports-2.16.0.tar.gz/ glibc-ports-2.14.1.tar.xz [*] Force unwind support (READ HELP!)

Debug facilities --->

[ ] gdb --->

Companion libraries --->

GMP version (5.0.2) --->

gmp-5.0.2.tar.bz2/ gmp-5.1.1.tar.bz2

MPFR version (3.1.0) --->

mpfr-3.1.0.tar.xz/ mpfr-3.1.2.tar.xz/ mpfr-3.1.2.tar.bz2 PPL version (0.11.2) --->

ppl-0.11.2.tar.bz2/ ppl-1.0.tar.bz2/ ppl-1.0.tar.xz CLooG/ppl version (0.15.11) --->

cloog-ppl-0.15.11.tar.gz

MPC version(0.9)--->

mpc-0.9.tar.gz/ mpc-1.0.1.tar.gz/ mpc-2.4.1.tar.gz libelf version (0.8.13) --->

libelf-0.8.13.tar.gz

保存退出。

vi .config

前面无法在设置窗口中设置java和fortran的,用“#”将所有带JA V A 和FORTRAN的屏蔽

CT_MPFR=y

后面增加一行

CT_MPC=y

CT_MPFR_VERSION="3.1.0"

后面增加两行

CT_MPC_V_0_8_13=y

CT_MPC_VERSION="0.8.13"

保存退出。

注:若编译失败再次用菜单图形化设置后,注意查看.config之前修改的内容是否还原了,最好在查看一次。

6、编译交叉工具链

编译的时候会自动下载下面的软件包,也可以自己先下载好放在

src-4.5.1目录下,这样编译的是时候就比较快了。

linux-3.6.11.tar.xz/ linux-3.6.3.tar.xz/linux-3.7.2.tar.bz2

binutils-2.21.1a.tar.bz2/ binutils-2.21.1.tar.bz2/

binutils-2.22.tar.bz2/ binutils-2.23.1.tar.bz2 glibc-2.15.tar.bz2/glibc-2.14.1.tar.bz2/glibc-linuxthreads-2.1.2.tar.gz glibc-2.1.2.tar.gz/ glibc -2.16.0.tar.xz

glibc-ports-2.16.0.tar.gz/ glibc-ports-2.14.1.tar.xz

libelf-0.8.13.tar.gz

gcc-4.7.2.tar.bz2

mpfr-3.1.0.tar.xz/ mpfr-3.1.2.tar.xz/ mpfr-3.1.2.tar.bz2

gmp-5.0.2.tar.bz2/ gmp-5.1.1.tar.bz2

mpc-0.9.tar.gz/ mpc-1.0.1.tar.gz/ mpc-2.4.1.tar.gz

ppl-0.11.2.tar.bz2/ ppl-1.0.tar.bz2/ ppl-1.0.tar.xz

cloog-ppl-0.15.11.tar.gz

//没能自动下载成功的,解决方法:自己网上搜索下载后放到/home/s3c2410/crosstool/src-4.5.1下即可。

duma_2_5_15.tar.gz/ duma_2_5_15.zip

strace-4.7.tar.bz2

expat-2.1.0.tar.gz

ltrace_0.5.3.orig.tar.gz/ ltrace_0.3.10. tar.gz

ncurses-5.8.tar.gz/ ncurses-5.9.tar.gz

dmalloc-5.5.2.tgz/ dmalloc-5.4.2.tgz

在终端执行

sudo /home/s3c2410/crosstool/crosstool-install/bin/ct-ng build --开始编译

expat文件的问题,由于事先已经下载的相关文件存放在资源目录中,所以,应该是下载文件问题。因此,将资源目录下的该文件删除,让安装软件自己去下载。

root@ubuntu:/home/sdust/crosstool/crosstool-build#

root@ubuntu:/home/sdust/crosstool/crosstool-build# rm ../src5/exp* root@ubuntu:/home/sdust/crosstool/crosstool-build# ls ../src5/e* [ERROR] configure: error: expat is missing or unusable

[ERROR] make[2]: *** [configure-gdb] Error 1

[ALL ] make[2]: Leaving directory `/home/andy/crosstool-ng/build13/.build/mipsel-ls2f-linux-gnu/build/build-gdb-cross' [ERROR] make[1]: *** [all] Error 2

[ALL ] make[1]: Leaving directory

`/home/andy/crosstool-ng/build13/.build/mipsel-ls2f-linux-gnu/build/build-gdb-cross' [ERROR]

[ERROR] >>

[ERROR] >> Error happened in: main[scripts/crosstool-NG.sh]

[ERROR] >>

[ERROR] >> For more info on this error, look at the file: 'build.log'

[ERROR] >> There is a list of known issues, some with workarounds, in:

[ERROR] >> '/home/andy/crosstool-ng/install/share/doc/ct-ng-1.13.0/B - Known issues.txt'

[ERROR]

[ERROR] Build failed in step 'Extracting and patching toolchain components'

一开始以为是没有装expat,sudo apt-get install expat后发现该软件已经装好,到/usr/lib目录下并没有发现libexpat.so文件,到网上查了下也没有相关的信息。因为之前在编译android 文件系统的机器上用crosstool-ng编译成功过一个交叉编译链,所以觉得应该是没有安装相关包,所以在本机器上直接将编译android文件系统需要的相关包安装上(详见没博客上得编译android文件系统有关文章),并sudo apt-get install libexpat-dev后再次编译,最后成功编译出需要的工具链。

编译了两个小时左右,不过很庆幸的是没出现错误(其实我试了很多次了)。接下看下成果。

sudo cd usr/local/arm/4.7.2/bin/

sudo ./arm-unknown-linux-gnueabi-gcc -v

打印如下信息:

Using built-in specs.

COLLECT_GCC=./arm-unknown-linux-gnueabi-gcc

COLLECT_LTO_WRAPPER=/usr/local/arm/4.7.2/libexec/gcc/arm-unkn own-linux-gnueabi/4.5.1/lto-wrapper

Target: arm-unknown-linux-gnueabi

Configured with: /home/s3c2410/crosstool/crosstool-build/.build/src/gcc-4.5.1/configure

--build=i686-build_pc-linux-gnu --

host=i686-build_pc-linux-gnu --target=arm-unknown-linux-gnueabi --prefix=/usr/local/arm/4.5.1 --with-

sysroot=/usr/local/arm/4.5.1/arm-unknown-linux-gnueabi/sysroot

--enable-languages=c,c++ --disable-multilib --with-arch=armv6 --with- cpu=arm1176jzf-s --with-tune=arm1176jzf-s --with-fpu=vfp --with-float=soft --with-pkgversion='crosstool-NG 1.13.2' --disable-sjlj

-exceptions --enable-__cxa_atexit --disable-libmudflap --disable-libgomp --disable-libssp --with-

gmp=/home/s3c2410/crosstool/crosstool-build/.build/arm-unknown-linux -gnueabi/build/static --with-

mpfr=/home/s3c2410/crosstool/crosstool-build/.build/arm-unknown-linux -gnueabi/build/static --with-

ppl=/home/s3c2410/crosstool/crosstool-build/.build/arm-unknown-linux-gnueabi/build/static --with-

cloog=/home/s3c2410/crosstool/crosstool-build/.build/arm-unknown-linu x-gnueabi/build/static --with-host-libstdcxx='-static-libgcc -

Wl,-Bstatic,-lstdc++,-Bdynamic -lm' --enable-threads=posix --enable-target-optspace --with-local-prefix=/usr/local/arm/4.5.1/arm- unknown-linux-gnueabi/sysroot --disable-nls --enable-c99 --enable-long-long

Thread model: posix

gcc version 4.5.1 (crosstool-NG 1.13.2)

接下来将命令都链接成arm-linux-,这样以后操作比较方便。

先ls一下,一一完成链接。

sudo ln -s arm-unknown-linux-gnueabi-addr2line arm-linux-addr2line sudo ln -s arm-unknown-linux-gnueabi-ar arm-linux-ar

sudo ln -s arm-unknown-linux-gnueabi-as arm-linux-as

sudo ln -s arm-unknown-linux-gnueabi-c++ arm-linux-c++

sudo ln -s arm-unknown-linux-gnueabi-c++filt arm-linux-c++filt

sudo ln -s arm-unknown-linux-gnueabi-cpp arm-linux-cpp

sudo ln -s arm-unknown-linux-gnueabi-g++ arm-linux-g++

sudo ln -s arm-unknown-linux-gnueabi-gcc arm-linux-gcc

sudo ln -s arm-unknown-linux-gnueabi-gcc-4.7.2 arm-linux-gcc-4.7.2 sudo ln -s arm-unknown-linux-gnueabi-gcov arm-linux-gcov

sudo ln -s arm-unknown-linux-gnueabi-gprof arm-linux-gprof

sudo ln -s arm-unknown-linux-gnueabi-ld arm-linux-ld

sudo ln -s arm-unknown-linux-gnueabi-ldd arm-linux-ldd

sudo ln -s arm-unknown-linux-gnueabi-nm arm-linux-nm

sudo ln -s arm-unknown-linux-gnueabi-objcopy arm-linux-objcopy sudo ln -s arm-unknown-linux-gnueabi-objdump arm-linux-objdump sudo ln -s arm-unknown-linux-gnueabi-populate arm-linux-populate sudo ln -s arm-unknown-linux-gnueabi-ranlib arm-linux-ranlib

sudo ln -s arm-unknown-linux-gnueabi-readelf arm-linux-readelf

sudo ln -s arm-unknown-linux-gnueabi-size arm-linux-size

sudo ln -s arm-unknown-linux-gnueabi-strings arm-linux-strings

sudo ln -s arm-unknown-linux-gnueabi-strip arm-linux-strip

sudo ln -s arm-unknown-linux-gnueabi-gcc arm-linux-cc

sudo ln -s arm-unknown-linux-gnueabi-ct-ng.config arm-linux-ct-ng.config

sudo ln -s arm-unknown-linux-gnueabi-elfedit arm-linux-elfedit

sudo ln -s arm-unknown-linux-gnueabi-gcc-ar arm-linux-gcc-ar

sudo ln -s arm-unknown-linux-gnueabi-gcc-nm arm-linux-gcc-nm sudo ln -s arm-unknown-linux-gnueabi-gcc-ranlib arm-linux-gcc-ranlib sudo ln -s arm-unknown-linux-gnueabi-ld.bfd arm-linux-ld.bfd

sudo ln -s arm-unknown-linux-gnueabi-gdbtui arm-linux-gdbtui

sudo ln -s arm-unknown-linux-gnueabi-gdb arm-linux-gdb

vim /etc/bash.bashrc

在该文件最后添加链接路径:

export PATH=$PATH:/usr/local/arm/4.7.2/bin/

export PATH

保存文件。

sudo source /etc/profile

到此arm-linux-gcc4.7.2-armv4t-vfp交叉编译器制作完成,以后就可以用arm-linux-gcc来编译其他程序了。

[linux] ubuntu下nfs安装配置

1、安装Ubuntu nfs服务器端:

[root@10.10.90.97 ~]# apt-get install nfs-kernel-server

2、配置/etc/exports

Ubuntu nfs允许挂载的目录及权限在文件/etc/exports中进行了定义。

例如,要将根目录下的data目录共享出来,那么需要在/etc/exports 文件末尾添加如下一行:

/presonal *(rw,sync,no_subtree_check)

#/data *(rw,sync,no_root_squash)

其中:/data 是要共享的目录

* 代表允许所有的网络段访问

rw 是可读写权限

sync 是资料同步写入内存和硬盘

no_root_squash 是Ubuntu nfs客户端分享目录使用者的权限,如果客户端使用的是root用户,那么对于该共享目录而言,该客户端就具有root权限。

其它Ubuntu nfs常用的参数有:

ro 只读访问

rw 读写访问sync 所有数据在请求时写入共享

async nfs在写入数据前可以响应请求

secure nfs通过1024以下的安全TCP/IP端口发送insecure nfs通过1024以上的端口发送

wdelay 如果多个用户要写入nfs目录,则归组写入(默认)

no_wdelay 如果多个用户要写入nfs目录,则立即写入,当使用async时,无需此设置。

hide 在nfs共享目录中不共享其子目录

no_hide 共享nfs目录的子目录

subtree_check 如果共享/usr/bin之类的子目录时,强制nfs检查父目录的权限(默认)

no_subtree_check 和上面相对,不检查父目录权限

all_squash 共享文件的UID和GID映射匿名用户anonymous,适合公用目录。

no_all_squash 保留共享文件的UID和GID(默认)

root_squash root用户的所有请求映射成如anonymous用户一样的权限(默认)

no_root_squas root用户具有根目录的完全管理访问权限anonuid=xxx 指定nfs服务器/etc/passwd文件中匿名用户的UID

anongid=xxx 指定nfs服务器/etc/passwd文件中匿名用户的GID

3、Ubuntu nfs重启服务

[root@10.10.90.97 ~]# /etc/init.d/portmap restart

[root@10.10.90.97 ~]# /etc/init.d/nfs-kernel-server restart

4、测试Ubuntu nfs

此时可以运行以下命令来显示一下共享出来的目录:

[root@10.10.90.20 ~]# showmount -e

或者可以使用以下命令把它挂载在客户端机器磁盘上,例如将/data 挂载到/mnt下:

[root@10.10.90.20 ~]# mount -t nfs 10.10.90.97:/data /mnt

可以运行df命令查看是否挂载成功。查看后可以使用以下命令卸载:

[root@10.10.90.20 ~]# umount /mnt

可以将挂载命令写入/etc/fatab中,然后mount

10.10.90.97:/data /mnt nfs _netdev,vers=3,noatime,nodiratime 0 0

[root@10.10.90.20 ~]# monut -a

计算机10-2

丁凯

Ubuntu8.04下的ARM交叉编译工具链(arm-linux-)详细介绍.

原文链接与:https://www.360docs.net/doc/3b3518131.html,/u1/58901/showart_1335004.html 实验室的机器配置太低,速度太慢实在是受不了。说是已经升级了,内存从128M升级到了256M。My god!这年头还能到什么地方找那么多128的内存条去阿?哇嘎嘎。真是服了。。。哈哈 打开一个pdf文件要等老半天。基本上没有办法工作。于是想在自己的笔记本上做一个交叉编译环境。我的机器配置也不高,但是相对于实验室的机器来说已经相当不错了。我的机器是单操作系统:只有Ubuntu8.0.4。感觉和windows XP差不多。XP下有的东西,ubuntu下基本上也有。 ps:昨天是我的生日。昨天上午有课,一下午还有今天上午就是在交叉编译的过程中度过的。感觉整个过程挺考验耐心的。下面进入正题。 待续。。。最近两天内补充完整。 ************************************************************************************* 在进行嵌入式在进行嵌入式开发之前,首先要建立一个交叉编译环境,这是一套编译器、连接器和libc库等组成的开发环境。本文结合自己做嵌入式交叉编译开发工作的经验,同时结合自己的体会,做了一个介绍 随着消费类电子产品的大量开发和应用和Linux操作系统的不断健壮和强大,嵌入式系统越来越多的进入人们的生活之中,应用范围越来越广。 在裁减和定制Linux,运用于你的嵌入式系统之前,由于一般嵌入式开发系统存储大小有限,通常你都要在你的强大的pc机上建立一个用于目标机的交叉编译环境。这是一个由编译器、连接器和解释器组成的综合开发环境。交叉编译工具主要由binutils、gcc 和glibc 几个部分组成。有时出于减小libc 库大小的考虑,你也可以用别的c 库来代替glibc,例如uClibc、

Arm linux交叉编译

1、编译C++程序,链接是需要添加 -lstdc++ g++和gcc本质一样的,本质上还是gcc,我们实验室所有的c++程序都是用gcc编译的,一般的程序用gcc足够了。对于C++ 程序,编译的时候用gcc 或者g++ 都可以。但是在进行连接的时候最好用g++,因为用g++ 会自动进行C++ 标准库的连接;用gcc 连接C++ 程序也可以,但是需要人为指定连接C++ 标准库,否则就会出现 undefined reference to `__gxx_personality_v/0' 之类的错误。可见-lstdc++ 所对应的是标准C++库。 2、linux OpenCV 静态链接错误,链接是需要添加–ldl undefined reference to `dlopen' undefined reference to `dlerror' undefined reference to `dlsym' 对dlopen, dlerror, dlsym 未定义的引用,缺少链接库,链接时加上选项-ldl 3、对icvPuts, icvGets, gzputs, gzgets, gzopen, gzclose 未定义的引用,编译错误如下 ./obj/local/armeabi-v7a/libopencv_core.a(persistence.cpp.o): In function `icvPuts(CvFileStorage*, char const*)':persistence.cpp:(.text._ZL7icvPutsP13CvFileStoragePKc+0x20): undefined reference to `gzputs'./obj/local/armeabi-v7a/libopencv_core.a(persistence.cpp.o): In function `icvGets(CvFileStorage*, char*, int)':persistence.cpp:(.text._ZL7icvGetsP13CvFileStoragePci+0x26): undefined reference to `gzgets'./obj/local/armeabi-v7a/libopencv_core.a(persistence.cpp.o): In function 缺少zlib库引起的,编译链接时加上-lz 4、如何在configure时,将编译参数传入,改变默认的编译器gcc成arm-linux编译器 按照INSTALL中的介绍,也是常用的方法,在configure的时候,加上–host=arm-linux,结果没有实现我们要的效果,没有将编译器从默认的gcc改成arm-linux-gcc,编译器还是用的默认的gcc。 参数传递必须像CFLAGS=-O2 ./configure一样,将参数设置放在configure的前面: CC=arm-linux-gcc ./configure才能识别的。(如果CC参数放在configure后面:./configure CC=arm-linux-gcc 则不能识别。) –prefix=/usr/crifan/lrzsz,表示具体安装到哪里 完整的配置: CFLAGS=-O2 CC=arm-linux-gcc ./configure–cache-file=cache_file_0 –prefix=/usr/crifan/lrzsz 5、zlib的交叉编译 交叉编译zlib-1.2.3.tar.bz2:

交叉编译几种常见的报错

交叉编译几种常见的报错 由于是第一次交叉编译,不知道会出现什么问题,思路就是先把gcc和ld都改成arm的,然后遇到什么问题在解决什么问题,以下过程都是在这个思路下进行。 1.指定arm的编译器和连接器: 只是把gcc改为arm-none-linux-gnueabi-gcc,ld改为arm-none-linux-gnueabi-ld,其他的都没有 修改。出现以下错误: arm-none-linux-gnueabi-ld: warning: library search path "/usr/local/lib" is unsafe for cross-compilation arm-none-linux-gnueabi-ld: skipping incompatible /usr/local/lib/libfreetype.so when searching for -lfreetype arm-none-linux-gnueabi-ld: skipping incompatible /usr/local/lib/libfreetype.a when searching for -lfreetype arm-none-linux-gnueabi-ld: cannot find -lfreetype 分析原因是:链接的这些库文件都是在PC编译器下编译出来的,现在把它们和用arm-none-linux-gnueabi-gcc编译出来的文件做链接,当然会出错。 解决方法:这些库重新用arm-gcc重新编译生成相应的库。 下面使用是重新编译库文件的过程: 重新编译freetype 根据交叉编译的文档,我创建了一个文件夹/usr/local/arm-linux来存放编译后的库文件。执行: ./configure –host=arm-none-linux-gnueabi –prefix=/usr/local/arm-linux 注意:host的参数应该是交叉编译环境的前缀。 另外,freetype自动生成的include文件夹有点小问题,编译完成后的include目录结构是 /include/ft2build.h和

交叉编译器简介

交叉编译器 在一种计算机环境中运行的编译程序,能编译出在另外一种环境下运行的代码,我们就称这种编译器支持交叉编译。这个编译过程就叫交叉编译。简单地说,就是在一个平台上生成另一个平台上的可执行代码。这里需要注意的是所谓平台,实际上包含两个概念:体系结构(Architecture)、操作系统(Operating System)。同一个体系结构可以运行不同的操作系统;同样,同一个操作系统也可以在不同的体系结构上运行。举例来说,我们常说的x86 Linux平台实际上是Intel x86体系结构和Linux for x86操作系统的统称;而x86 WinNT平台实际上是Intel x86体系结构和Windows NT for x86操作系统的简称。 有时是因为目的平台上不允许或不能够安装我们所需要的编译器,而我们又需要这个编译器的某些特征;有时是因为目的平台上的资源贫乏,无法运行我们所需要编译器;有时又是因为目的平台还没有建立,连操作系统都没有,根本谈不上运行什么编译器。 交叉编译这个概念的出现和流行是和嵌入式系统的广泛发展同步的。我们常用的计算机软件,都需要通过编译的方式,把使用高级计算机语言编写的代码(比如C代码)编译(compile)成计算机可以识别和执行的二进制代码。比如,我们在Windows平台上,可使用Visual C++开发环境,编写程序并编译成可执行程序。这种方式下,我们使用PC平台上的Windows 工具开发针对Windows本身的可执行程序,这种编译过程称为native compilation,中文可理解为本机编译。然而,在进行嵌入式系统的开发时,运行程序的目标平台通常具有有限的存储空间和运算能力,比如常见的ARM 平台,其一般的静态存储空间大概是16到32MB,而CPU的主频大概在100MHz到500MHz之间。这种情况下,在ARM平台上进行本机编译就不太可能了,这是因为一般的编译工具链(compilation tool chain)需要很大的存储空间,并需要很强的CPU运算能力。为了解决这个问题,交叉编译工具就应运而生了。通过交叉编译工具,我们就可以在CPU能力很强、存储控件足够的主机平台上(比如PC上)编译出针对其他平台的可执行程序。 要进行交叉编译,我们需要在主机平台上安装对应的交叉编译工具链(cross compilation tool chain),然后用这个交叉编译工具链编译我们的源代码,最终生成可在目标平台上运行的代码。常见的交叉编译例子如下: 1、在Windows PC上,利用ADS(ARM 开发环境),使用armcc编译器,则可编译出针对ARM CPU的可执行代码。 2、在Linux PC上,利用arm-linux-gcc编译器,可编译出针对Linux ARM平台的可执行代码。

常用单片机编译环境及下载工具的使用

常用单片机编译环境及下载工具的使用 二、环境使用简介说明 1.AVR Studio 4 打开软件,进入欢迎界面。显示出最近打开过的工程文件,选择一个,按“Open” 或双击可直接进入工程。

如果想新建一个工程,选择“New Project”。 在“Location”处,按右侧的按钮可选择工程存放的路径。在“Project name” 处可输入工程名,“Initial file”默认和工程名称相同。 按“Next” 在此处选择器件,“Debug platform”选择“AVR Simulator”,“Device”选择“ATmega8”或“ATmega128”。此时不选择,也可以在进入工程后,选择“Debug”菜单下的“Select Platform and Device”更改。 选择好后,按“Finish”完成。进入工程,编辑“avrsudio.asm”工程文件,按“Build”进行编译。

还有编译出来的程序,占用的空间大小。

如果编译出错,会显示红灯,在此显示出错信息,双击显示红灯的行,可直接定位出错的位置,黄灯提示是无错误,只有告警。 常见错误: 改过程序后,要保存后再编译,否则编译出的程序为上次保存的代码。 2. ICC AVR 打开软件后,一般都会打开上次退出时打开的工程,如果是第一次打开,可以选择“Project”下的“New”来新建一个工程

在此处选择路径和工程名称,点“保存”。 点击第一个工具图标,新建一个文件,鼠标放在上面会出现,“New File”的提示。现在可以写程序了,保存为.c的文件。 在右侧“file”处,单击鼠标右键,选择“Add File(s)”,把刚才的文件加入工程里。选择“Options”或工具图标的“Project Options”,“STOP”图标后面的一个。

Vmware安装Ubuntu及交叉编译器

在虚拟机下Linux(Ubuntu)的安装 1.创建新的虚拟机 2.点击自定义 3、选Workstation版本的兼容性,然后点击下一步

4、选择稍后安装操作系统,然后下一步。 也可以选择第二项“安装程序光盘映像文件ISO”,之后会VMware会自动得知你的iso是Linux(Ubuntu),只要求你输入全名,和用户名密码等简单的用户设定,这是一个简单安装,可以跳过下面的步骤。我觉得是因为这个OS的自动安装,不完全,导致一些核心命令无法使用、无反应等一些问题。所以有更高要求,不能选这项,需要完全、自定义的安装。 5、客户机操作系统选择Linux,版本选择Ubuntu 64位,然后下一步。

6、设置虚拟机名称(即每次启动VMware左上方显示的名字),之后选择你想的在WINDOWS操作系统里的安装路径(默认在C 盘,很不方便,不要安装在C盘)。 7、设置虚拟机处理器数量,选择处理器数量为2(看情况而定,我是i7处理器,配置较好无压力的,感觉双核比单核好一些)

8、.内存大小选择,使用自动推荐的1G内存(本机内存8G)。 9、网络类型选择,本次选择默认的“NAT”

注:使用“NAT”的话,需要外面的WIN7使用一根线连接上网,才能在Ubuntu里上网(如同Ubuntu是你的真正OS的感觉,不需要手工配置任何IP信息),不能默认使用无线连接。这点对有些笔记本同学可能会造成麻烦。当然不是说不能通过手动配置IP相关解决,但是为了避免每次都配置的麻烦,请直接使用“bridged”桥接手动配置。 9. 默认即可,直接“下一步”

10、选择“将虚拟磁盘存储为单个文件” 11.虚拟机文件的存放地址,点击“下一步”即可 12、点击“完成”

ARM、linux常用服务器+交叉编译工具链

ARM、linux常用服务器+交叉编译工具链 1. tftp服务器在安装linux时通常可供选择是否安装tftp服务器 启动后可通过在控制终端输入netstat -a|grep tftp查看是否已经安装若已安装则为如下打印信息: [root@localhost /]# netstat -a|grep tftp 若没有安装则可使用 –ivh tftp-server-0.42-3.1.i386.rpm 进行安装然后建立主要工作目录mkdir /tftpboot 接下来配置tftp服务器 /etc/init.d/tftp # default: off # description: The tftp server serves files using the trivial file transfer \par # protocol. The tftp protocol is often used to boot diskless \par # workstations, download configuration files to network-aware printers, \par # and to start the installation process for some operating systems. tftp _type = dgram

= udp = yes = root = /usr/sbin/in.tftpd _args =-s /tftpboot = no _source = 11 = 100 2 = IPv4 注意修改server_args = -s /tftpboot为你tftp工作目录。 接下来便是重启tftp 服务器了/etc/init.d/xinetd restart打印出如下信息[root@localhost /]# /etc/init.d/xinetd restart xinetd: [ OK ] xinetd: [ OK ] 表示重启成功接下来便可查看是否已经安装成功 [root@localhost /]# netstat -a|grep tftp

汇编编译工具MASM的使用

实验二汇编编译工具MASM的使用 2.1. 实验目的 1、学习如何安装MASM; 2、学习如何使用和使用编译和链接汇编语言程序。 2.2. 基础知识 2、DOS汇编与WIN32汇编 在DOS下编写汇编程序,程序员可以管理系统的所有资源,访问和改动系统中所有的内存,修改内存控制块,修改中断向量表截获中断,直接对I/O端口进行读写。DOS是个单任务操作系统,只有一个运行级别,任何进程和DOS操作系统都是同等级别的。因此,DOS系统中各个进程会互相影响,如果某个进程死机的话,整个系统都会垮掉。DOS工作在实模式下,程序员可以寻址1M的内存,通过段寄存器来指定段的初始地址,每个段的大小为64K。超过1M的部分,就只能把他作为XMS使用。1M以上的内存空间只能用作数据存放而无法在其中执行程序。 Win32是指32位的Windows操作系统,进程有多种运行级别,操作系统工作在最高级别——0级,而应用程序工作在3级。在第三级别,进程无法直接访问I/O端口,无法访问其它进程运行的内存,连向自己的运行代码写入数据都是非法的。只有对于最高级别的进程,系统才是全开放的。Windows工作在保护模式下,所有的资源对进程来说都是被“保护”的。

在内存方面,Windows使用了处理器的分页机制,程序员不必用一个段寄存器去指定段的地址,因为在保护模式下,段寄存器的含义是不同的(参见80386手册方面的书籍)。程序员可以直接指定一个32位的地址来寻址4GB的内存。在程序结构方面,Windows程序也有很大的不同,它是“基于消息”的。 在上面列举的汇编工具中,一些是DOS汇编工具,一些是Win32汇编工具。初学者可以从DOS汇编入手,先掌握汇编编程的思路、基本语法和编程技巧,待入门后再学习Win32汇编。 当然,学习DOS汇编并不一定需要安装和使用DOS操作系统。程序员可以在Win32环境中安装MASM 6.0或其它16位汇编工具,在命令提示符状态下编译和链接DOS汇编程序。 DOS汇编程序在Win32环境中运行时,操作系统会模拟实模式运行16位进程。对于一些可能会影响整个操作系统工作的指令,Win32操作系统会拒绝执行。 2.3. MASM的安装 首先从Internet下载masm60.zip,这是一个ZIP压缩文件。可以用WINZIP或WINRAR 等压缩解压软件指定一个目录将其解压,目录名例如为F:\MASM60。 运行“命令提示符”,在解压目录中运行setup程序,开始安装MASM。

嵌入式Linux开发交叉编译器的安装

实验三嵌入式Linux开发交叉编译器的安装 班级:B08511 姓名:张媛媛学号:20084051112 成绩: 一、实验目的 安装ARM平台下的嵌入式Linux开发的交叉编译器arm-linux-gcc,编译简单的程序并通过NFS方式运行于开发板上,比较与gcc生成的可执行文件的不同; 二、实验设备 硬件:PC机开发板 三、实验原理 嵌入式系统的交叉开发环境一般包括交叉编译器、交叉调试器和系统仿真器,其中交叉编译器用于在宿主机上生成能在目标机上运行的代码,而交叉调试器和系统仿真器则用于在宿主机与目标机间完成嵌入式软件的调试。在采用宿主机/目标机模式开发嵌入式应用软件时,首先利用宿主机上丰富的资源和良好的开发环境开发和仿真调试目标机上的软件,然后通过串口或者用网络将交叉编译生成的目标代码传输并装载到目标机上,并在监控程序或者操作系统的支持下利用交叉调试器进行分析和调试,最后目标机在特定环境下脱离宿主机单独运行。 本次实验涉及到的是嵌入式Linux开发的交叉编译器arm-linux-gcc,从体系结构角度来讲,借助其编译生成的程序是由ARM平台下机器指令构成的可执行程序。 四、实验内容 (1)arm-linux-gcc-3.4.1.tgz为编译器的文件压缩包(实验室机器中位于windows系统的“c:\嵌入式Linux实验\Tools”),为3.4.1版本的交叉编译工具,用来编译常用的一些代码;可通过虚拟机与Windows系统的共享文件夹将其拷贝到Linux系统中; 安装命令:tar xvfz arm-linux-gcc-3.4.1.tgz –C / (2)设置环境变量 可以在/etc/bash.bashrc文件中加入: export PATH=$PATH:/usr/local/arm/3.4.1/bin 就可以直接使用arm-linux-gcc的一些命令; (3)查看arm-linux-gcc编译器版本 输入arm-linux-gcc –v可查看编译器版本,如图3-1: 图3-1 编译器版本

交叉编译工具链的安装配置

交叉工具链的生成 https://www.360docs.net/doc/3b3518131.html,/uid-9185047-id-3158569.html 软件平台:ubuntu 10.10 主机编译器:gcc 4.5.1 硬件平台:s3c2410 1、准备环境 sudo apt-get install bison flex texinfo automake libtool cvs patch libncurses5-dev aria2 curl g++ subversion gawk cvsd expat gperf libexpat-dev 注:有的没安装,第4步无法生成makefile,要先安装gperf 2、下载crosstool-ng软件包 crosstool-ng-1.17.0.tar.bz2 3、相应目录的建立 sudo mkdir -p /usr/local/arm sudo chmod 777 /usr/local/arm // 将arm目录权限设置为777 cd /usr/local/arm mkdir 4.7.2 sudo mkdir -p /home/crosstool cd /home/s3c2410/crosstool sudo mkdir crosstool-build crosstool-install src-4.7.2 (编译目录、安装目录、目标源码目录) 4、安装crosstool-ng cp crosstool-ng-1.17.0.tar.bz2 /home/s3c2410/crosstool/ 解压crosstool-ng-1.17.0.tar.bz2, tar -xvf crosstool-ng-1.17.0.tar.bz2 进入目录,进行配置: cd /home/s3c2410/crosstool/crosstool-ng-1.17.0 将/home/s3c2410/crosstool/crosstool-install/lib/ct-ng.1.17.0/下的https://www.360docs.net/doc/3b3518131.html,p cp到/etc/bash_completion.d 配置安装目录为/home/s3c2410/crosstool/crosstool-install 注:有的没安装gperf,无法生成makefile,要先安装gperf sudo ./configure --prefix=/home/crosstool/crosstool-install sudo make --编译 sudo make install --安装

了解Linux安装ARM交叉编译器的步骤

了解Linux安装ARM交叉编译器的步骤 安装交叉编译环境 gcc是linux环境下的asm和c语言编译器,生成的是可以在x86平台上运行的可执行程序;而在开发板上运行的程序则需要arm平台专用的编译器,也称为交叉编译器; 交叉编译器可以由开发人员手工定制,也可用使用别人已经编译好的,比如arm-linux-gcc; (1)安装交叉编译器 ---------------------- $>cd /home/zhang/tools/ $>tar xzvf crosstools-451.tar.gz -C /usr/local/ $>cd /usr/local $>ls 可以看到一个子目录toolschain/,该目录下存放了用于arm平台的交叉编译器和其他工具。arm-linux-gcc等可执行程序位于bin子目录下。 (2)环境变量的设置 ---------------------- 如果希望在控制台中直接运行arm-linux-gcc,则必须把arm-linux-gcc所在的路径记录到控制台的默认环境变量PATH中,这需要修改某些配置文件。 如果使用root用户,则可以修改如下文件: $>vim ~/.bashrc 在文件的最后加入以下内容: export PATH=/usr/local/toolschain/4.5.1/bin:$PATH //写入/etc/profile或/etc/bashrc也可 退出vim后,使新的环境变量生效: $>source ~/.bashrc 可以用如下命令验证是否可直接运行交叉编译器: $>which arm-linux-gcc 如显示/usr/local/toolschain/4.5.1/bin/arm-linux-gcc则说明环境变量配置好;

ARM、linux常用服务器+交叉编译工具链

1.tftp服务器在安装linux时通常可供选择是否安装tftp服务器 启动后可通过在控制终端输入netstat -a|grep tftp查看是否已经安装若已安装则为如下打印信息: [root@localhost /]# netstat -a|grep tftp udp 0 0 *:tftp *:* 若没有安装则可使用 rpm –ivh tftp-server-0.42-3.1.i386.rpm 进行安装然后建立主要工作目录mkdir /tftpboot 接下来配置tftp服务器 vim /etc/init.d/tftp # default: off # description: The tftp server serves files using the trivial file transfer \ # protocol. The tftp protocol is often used to boot diskless \ # workstations, download configuration files to network-aware printers, \ # and to start the installation process for some operating systems. service tftp { socket_type = dgram protocol = udp wait = yes user = root server = /usr/sbin/in.tftpd server_args = -s /tftpboot disable = no per_source = 11 cps = 100 2 flags = IPv4 } 注意修改server_args = -s /tftpboot为你tftp工作目录。 接下来便是重启tftp 服务器了/etc/init.d/xinetd restart打印出如下信息 [root@localhost /]# /etc/init.d/xinetd restart Stopping xinetd: [ OK ] Starting xinetd: [ OK ] 表示重启成功接下来便可查看是否已经安装成功 [root@localhost /]# netstat -a|grep tftp udp 0 0 *:tftp *:* 2.nfs服务器 首先查看nfs服务器是否被安装(这里为red-had5)rpm –q nfs-utils若打印出如下信息则表示已经被安装 [root@localhost ~]# rpm -q nfs-utils nfs-utils-1.0.9-24.el5 若没有安装nfs服务器则先下载相应的nfs服务器包百度一个即可 然后rpm –ivh nfs- utils-1.0.9-24.el5.i386.rpm这里使用的nfs版本为utils-1.0.9-24.el5故不同版本安装不同,然后进入nfs配置

Fortran编译器及下载地址

Fortran 编译器 --------------------------------------------------------------------------------------- 1. Fortran Powerstation 4.0 Fortran Powerstation 4.0是最老的版本 下载ftp://2006:2006@https://www.360docs.net/doc/3b3518131.html,/36/https://www.360docs.net/doc/3b3518131.html,-002123.ZIP --------------------------------------------------------------------------------------- 2.CVF Compaq Visual Fortran (CVF), 当今PC平台上功能相当强大与完整的Fortran程序开发工具,还用于Abaqus的开发。 1997年,微软将Fortran PowerStation卖给DEC之后,微软就不再出版Fortran编译器了。后来DEC并入了Compaq,再后来Compaq又和HP合并了。现在最新的版本是HP出的Fortran for Windows v6.6,现在HP/Compaq已经不再开发Fortran了,CVF 6.6是最终的版本了,Compaq的Fortran开发小组已经投入Intel旗下,目前Intel 已经有Intel Visual Fortran 11.0。Compaq Visual Fortran 6.6官方的单价也相当昂贵。 Compaq Visual Fortran 6.6 下载: https://www.360docs.net/doc/3b3518131.html,/SoftDown.asp?ID=11937 Compaq Visual Fortran 6.6 绿色版下载: https://www.360docs.net/doc/3b3518131.html,/down/10915.html Compaq Visual Fortran 6.5 下载: https://www.360docs.net/doc/3b3518131.html,/soft/fortran6.5.rar ftp://2006:2006@https://www.360docs.net/doc/3b3518131.html,/36/https://www.360docs.net/doc/3b3518131.html,-002124.rar ---------------------------------------------------------------------------------------

汇编编译工具MASM的安装和使用

老师给的实验内容,在此和大家分享。 1、常用汇编语言工具 2、DOS汇编与WIN32汇编 在DOS下编写汇编程序,程序员可以管理系统的所有资源,访问和改动系统中所有的内存,修改内存控制块,修改中断向量表截获中断,直接对I/O 端口进行读写。DOS是个单任务操作系统,只有一个运行级别,任何进程和DOS操作系统都是同等级别的。因此,DOS系统中各个进程会互相影响,如果某个进程死机的话,整个系统都会垮掉。DOS工作在实模式下,程序员可以寻址1M的内存,通过段寄存器来指定段的初始地址,每个段的大小为64K。 超过1M的部分,就只能把他作为XMS使用。1M以上的内存空间只能用作数据存放而无法在其中执行程序。 Win32是指32位的Windows操作系统,进程有多种运行级别,操作系统工作在最高级别——0级,而应用程序工作在3级。在第三级别,进程无法直接访问I/O端口,无法访问其它进程运行的内存,连向自己的运行代码写入数据都是非法的。只有对于最高级别的进程,系统才是全开放的。Windows 工作在保护模式下,所有的资源对进程来说都是被“保护”的。在内存方面,Windows使用了处理器的分页机制,程序员不必用一个段寄存器去指定段的地址,因为在保护模式下,段寄存器的含义是不同的(参见80386手册方面的书籍)。程序员可以直接指定一个32位的地址来寻址4GB的内存。在程序结构方面,Windows程序也有很大的不同,它是“基于消息”的。 在上面列举的汇编工具中,一些是DOS汇编工具,一些是Win32汇编工具。初学者可以从DOS汇编入手,先掌握汇编编程的思路、基本语法和编程技巧,待入门后再学习Win32汇编。

交叉编译mtd-utils工具(linux下flash工具)

一、下载源码包并解压 wget ftp://https://www.360docs.net/doc/3b3518131.html,/pub/mtd‐utils/mtd‐utils‐1.5.1.tar.bz2 wget https://www.360docs.net/doc/3b3518131.html,/zlib‐1.2.8.tar.gz wget https://www.360docs.net/doc/3b3518131.html,/opensource/lzo/download/lzo‐2.03.tar.gz wget https://https://www.360docs.net/doc/3b3518131.html,/pub/linux/utils/util‐linux/v2.21/util‐linux‐2.21.1.tar.gz tar zxvf zlib‐1.2.8.tar.gz tar zxvf lzo‐2.03.tar.gz tar jxvf mtd‐utils‐1.5.1.tar.bz2 tar zxvf util‐linux‐2.21.1.tar.gz 二、编译安装zlib 1) cd zlib‐1.2.8 CC=arm‐none‐linux‐gnueabi‐gcc ./configure ‐‐prefix= /usr/local/arm‐2007q1/arm‐none‐linux‐gnueabi ‐‐shared (注意:这里的/usr/local/arm‐2007q1/arm‐none‐linux‐gnueabi是交叉编译工具默认目录。) 2) make make install cd .. 3) 安装完成后会在/usr/local/arm‐2007q1/arm‐none‐linux‐gnueabi /目录下生成三个目录:include、lib、share。 安装完后检查一下目录/usr/local/arm‐2007q1/zlib/ 假如 include 中没有 zlib.h 之类的头文件,lib 中没有 libz.so.1.2.3 ,那就自己手动拷到这些目录下去,记着拷的时候把所有的 *.h 都需要拷过去,在拷库的时候用 cp ‐Ca libz.* /…./lib 就行,要用上 ‐Ca 选项。 三、编译安装lzo 1) cd lzo‐2.03/ CC=arm‐none‐linux‐gnueabi‐gcc ./configure ‐‐host=arm‐none‐linux‐gnueabi ‐‐prefix=/usr/local/arm‐2007q1/arm‐none‐linux‐gnueabi

交叉编译环境搭建

交叉编译环境搭建 一、Emdebian介绍 Emdebian vision In the Emdebian vision someone wishing to build a GNU / Linux based device would: 1. Port the linux kernel to their hardware (including writing any specific device drivers). 2. Select the prebuilt emdebian packages needed to support their application. 3. Package their application as Debian package(s) using Debian and Emdebian tools. 4. Build a root filesystem using Emdebian tools from the steps above. Emdebian is involved in steps 2,3,4 above (there are far too many embedded device hardware variations to make prebuilt kernels practical). Thus EmDebian is a binary distribution for embedded devices (whereas most of the other contenders in this space are source distributions [of course being Debian and open source the source code is still available if required]. What emdebian does In short, what EmDebian does is wrap around the regular debian package building tools to provide a more fine grained control over package selection, size, dependencies and content to enable creation of very small and efficient debian packages for use on naturally resource limited embedded targets. 二、搭建GCC编译开发环境 安装G++/GCC编译环境 sudo apt-get install gcc g++ make gdb

为什么要用编译器

编译器的发展 1.语言的发展 在本世纪40年代,计算机刚出现,程序都是用机器语言(machine language)编写的。是机器实际操作的数字代码,例如: C7 06 0000 0002 缺点:费时、乏味,很快就被汇编语言(assembly language)代替。 在汇编语言中,都是以符号形式给出指令和存储地址的。例如,与前面的机器指令等价的汇编语言指令为:MOV X, 2 需要汇编程序(assembler)将汇编语言的符号代码和存储地址转换为相对应的机器语言的数字代码。 优点:大大提高了编程的速度和准确度,人们至今仍在使用,在编码需要极快的速度和极高的简洁程度时尤为如此。 缺点:编写不容易,阅读和理解很难;严格依赖于特定的机器,为一台计算机编写的代码在应用于另一台计算机时必须完全重写。 发展编程技术的下一个重要步骤就是高级语言,以一个更类似于数学定义或自然语言的简洁形式来编写程序的操作,与任何机器都无关,而且也可由一个程序翻译为可执行的代码。如x = 2 起初人们担心这是不可能的,或者即使可能,目标代码也会因效率不高而没有多大用处。 2.编译技术的发展 1954年至1957年间,IBM的John Backus带领一个小组开发FORTRAN语言及其编译器,使得上面的担忧不必要了。 但由于当时处理中所涉及到的大多数程序设计语言的翻译并不为人所掌握,所以这个项目的成功也伴随着巨大的辛劳。 几乎与此同时,人们也在开发着第一个编译器,Noam Chomsky开始自然语言结构的研究。使得编译器结构异常简单,甚至还带有了一些自动化。 Chomsky的研究导致了根据语言文法(grammar,结构规则)的难易程度以及识别它们所需的算法来为语言分类。文法有4个层次:0型、1型、2型和3型文法,且其中的每一个都是其前者的专门化。2型(或上下文无关文法context-free grammar)是程序设计语言中最有用的,代表着程序设计语言结构的标准方式。

交叉开发环境搭建(交叉编译器安装)

课堂实验5 交叉开发环境搭建 -交叉编译器安装【实验目的】 掌握交叉编译器安装方法。 【实验要求】 完成交叉编译器的安装及使用。 【实验预习】 1 交叉编译器介绍 在一种计算机环境中运行的编译程序,能编译出在另外一种环境下运行的代码,我们就称这种编译器支持交叉编译。这个编译过程就叫交叉编译。简单地说,就是在一个平台上生成另一个平台上的可执行代码,而这种工具就是交叉编译器(cross compiler)。 2 搭建交叉编译环境 (1)实验环境 交叉编译工具:arm-linux- 3.4.6 编译平台:Redhat Enterprise 4 (2)安装arm-linux-gcc交叉编译器的方法 a 获得交叉编译器包,例如arm-linux-gcc-3.4.1.tar.bz2(里面有arm-linux-gcc命令)。 b 解压后修改环境变量配置文件/etc/profile,添加上arm-linux-gcc命令的路径。 c执行source /etc/profile使新配置生效。 (3)环境变量配置文件说明 /etc/profile,/etc/bashrc 是系统全局环境变量设定文件。 ~/.bashrc,~/.bashrc用户目录下的私有环境变量设定文件(~是root目录)。 如想将一个路径加入到环境变量$PATH中(以便在任何目录下都可以访问到该路径中的命令),可以像下面这样做: 方法1. 控制台中:使用export命令增加环境变量: 例如:# export PA TH=$PA TH:/usr/local/arm/2.95.3/bin 例如:# PATH="$PA TH:/my_new_path" (关闭shell,会还原PATH) 方法2. 修改profile文件:

制作arm-linux交叉编译工具ForXscaleBig-Endian.

制作arm-linux交叉编译工具 ForXscaleBig-Endian 制作arm-linux交叉编译工具ForXscaleBig-Endian 类别:消费电子 HOWTO build arm-linux toolchain for ARM/XSCALE---------------------------------------------- These instructions document how to build an arm-linux tool chainthat contains big-endian target libraries. 1. Packages used: binutils-2.14.tar.gzgcc- 3.3.2.tar.gzglibc-2.2.5.tar.gzglibc-linuxthreads-2.2.5.tar.gz 2. binutils-2.14 tar xvzf binutils-2.1 4.tar.gzcd binutils-2.14mkdir xscale_linux_becd xscale_linux_be../configure --target=armbe-linux --prefix=/opt/xscale_linux_be --with-lib- path=/opt/xscale_linux_be/armbe-linux/lib --program- prefix=xscale_linux_be- makemake installchmod 777 /opt/xscale_linux_be 3. gcc-3.3.2 -- bootstrap gcc tar xvzf gcc- 3.3.2.tar.gzcd gcc-3.3.2cp $(ATTACHED t-linux file) gcc/config/arm/perl -pi -e 's/GCC_FOR_TARGET = \$\$r\/gcc\/xgcc /GCC_FOR_TARGET = \$\$r\/gcc\/xgcc -mbig-endian /g' Makefile.incd gccperl -pi -e 's/GCC_FOR_TARGET = \.\/xgcc /GCC_FOR_TARGET = \.\/xgcc -mbig-endian /g' Makefile.incd config/armperl -pi -e 's/^# MULTILIB_OPTIONS = mlittle-endian\/mbig-endian/MULTILIB_OPTIONS += mlittle-endian\/mbig-endian/' t-arm-elfperl -pi -e 's/^# MULTILIB_DIRNAMES = le be/MULTILIB_DIRNAMES += le be/' t-arm-elfperl -pi -e 's/^# MULTILIB_MATCHES = mbig-endian=mbe mlittle- endian=ml/MULTILIB_MATCHES += mbig-endian=mbe mlittle-endian=ml/' t-arm-elf export PATH=/opt/xscale_linux_be/bin:/opt/xscale_linux_be/armbe- linux/include:$PATH mkdir xscale_linux_becd xscale_linux_be../configure --program-prefix=xscale_linux_be- --prefix=/opt/xscale_linux_be --target=armbe-linux --disable-shared --disable-threads --with- headers=/home/john_ho/ixp422/src/snapgear/linux-2.4.x/include --with-gnu-as --with-gnu-ld --enable-multilib --enable-languages=cperl -pi -e 's/^program_transform_cross_name = s \^ \$\(target-alias\)- /program_transform_cross_name = s \^ xscale_linux_be- /g' gcc/Makefilemakemake install 4. glibc-2.2.5 (big-endian) tar xvzf glibc-2.2.5.tar.gzcd glibc-2.2.5tar xvzf glibc-linuxthreads- 2.2.5.tar.gz perl -pi -e

相关文档
最新文档