• 欢迎访问少将博客,学会感恩,乐于付出,珍惜缘份,成就彼此、推荐使用最新版火狐浏览器和Chrome浏览器访问本网站。
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏少将博客吧
  • 欢迎加博主微信:jiang_shaobo

ubuntu11.10 下 arm-linux-gcc4.4.3

点滴 admin 6年前 (2014-03-12) 192次浏览 已收录 0个评论 扫描二维码

参考了前人的成果,结合自己实践。

1 下载arm-linux-gcc-4.4.3.tgz到任意的目录下,进入这个文件夹

$ sudo tar xvzf arm-linux-gcc-4.4.3.tgz ?C /


注意:C 后面有个空格,并且 C 是大写的,它是英文单词“Change”的第一个字母,
在此是改变目录的意思。


执行该命令,将把 arm-linux-gcc 安装到/opt/Friendlyarm/4.4.3 目录。

在/usr/local/下建立 arm的文件夹


mkdir arm

chmod 777 arm

然后把 opt下的4.4.3 目录复制到 /usr/local下

sudo cp -r/opt/Friendlyarm/4.4.3 /usr/local/


2.  修改环境变量,把交叉编译器的路径加入到PATH。


网上很多修改环境变量的方法,很杂。有 redhat 上面的,federo(是这么写的吧)。下面一共三种方法,我都在UBUNTU11.10上试过,可行。


方法一:修改/etc/bash.bashrc文件(此文件只对当前用户适用)
$sudo gedit /etc/bash.bashrc


在最后加上export PATH=$PATH:/usr/local/arm/4.4.3/bin


方法二:修改/etc/profile文件(此文件属于系统级别的环境变量,设置在里面的东西对所有用户适用):


$sudo gedit /etc/profile


增加路径设置,在末尾添加如下,保存/etc/profile文件:
export PATH=$PATH:/usr/local/arm/4.4.3/bin


方法三:修改/etc/environment文件


$sudo gedit /etc/environment


原文件应为PATH=”/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin: /usr/games“

将其改为

PATH=”/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/arm/4.4.3/bin”

保存退出即可

关于路径设置问题,可以 用终端逐步寻找,比如 在 终端下 cd /usr/local/ 用TAB键 一直找到 /bin

关于环境变量问题:

环境变量是什么?例如path,当要求系统运行一个程序而没有告诉它程序所在的完整路径时,系统除了在当前目录下面寻找此程序外,还应到path中指定的路径去找。用户通过设置环境变量,来更好的运行进程。

如果上面不加入环境变量,要运行arm-linux-gcc这个程序,则每次都要把arm-linux-gcc的完整路径写出来。/usr/local/arm/4.4.3/bin arm-linux-gcc 文件名 -o 输出文件名

这样非常的麻烦,所以加到path里面,让电脑知道这个程序在哪里。


3. 立即使新的环境变量生效,不用重启电脑:

对应方法一:$ source /root/.bashrc
对应方法二:$ source /etc/profile
方法三立即生效


4. 检查是否将路径加入到PATH:
  $ echo $PATH

显示内容/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/arm/4.4.3/bin 说明已经将交叉编译器的路径加入PATH。至此,交叉编译环境安装完成。

5. 测试是否安装成功
$ arm-linux-gcc -v
上面的命令会显示arm-linux-gcc信息和版本,这是我显示的信息:
Using built-in specs.
Target: arm-none-linux-gnueabi
Configured with: /opt/FriendlyARM/mini2440/build-toolschain/working/src/gcc-4.4.3/configure –build=i386-build_redhat-linux-gnu –host=i386-build_redhat-linux-gnu –target=arm-none-linux-gnueabi –prefix=/opt/FriendlyARM/toolschain/4.4.3 –with-sysroot=/opt/FriendlyARM/toolschain/4.4.3/arm-none-linux-gnueabi//sys-root –enable-languages=c,c++ –disable-multilib –with-arch=armv4t –with-cpu=arm920t –with-tune=arm920t –with-float=soft –with-pkgversion=ctng-1.6.1 –disable-sjlj-exceptions –enable-__cxa_atexit –with-gmp=/opt/FriendlyARM/toolschain/4.4.3 –with-mpfr=/opt/FriendlyARM/toolschain/4.4.3 –with-ppl=/opt/FriendlyARM/toolschain/4.4.3 –with-cloog=/opt/FriendlyARM/toolschain/4.4.3 –with-mpc=/opt/FriendlyARM/toolschain/4.4.3 –with-local-prefix=/opt/FriendlyARM/toolschain/4.4.3/arm-none-linux-gnueabi//sys-root –disable-nls –enable-threads=posix –enable-symvers=gnu –enable-c99 –enable-long-long –enable-target-optspace
Thread model: posix
gcc version 4.4.3 (ctng-1.6.1)

6.编译Hello World程序,测试交叉工具链
写下下面的Hello World程序,保存为hello.c
#include
int main()
{
printf(“Hello World!
“);
return 0;
}
执行下面的命令:
$ arm-linux-gcc hello.c -o hello

ls 下

看到hello 执行文件

$ file hello 在hello的目录下

可以看到hello: ELF 32-bit LSB executable,ARM, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.32, not stripped
这样说明可以在ARM上运行,此时不能在pc上运行

????????????????????????????????????????????????????????????????

1.用export命令查看现在环境变量

root@ubuntu:~# export
declare -x COLORTERM=”gnome-terminal”
declare -x DEFAULTS_PATH=”/usr/share/gconf/gnome.default.path
declare -x DESKTOP_SESSION=”gnome”
declare -x DISPLAY=”:0.0″
declare -x GDMSESSION=”gnome”
declare -x HOME=”/root
declare -x LANG=”en_CA.UTF-8″
declare -x LOGNAME=”root”
declare -x MANDATORY_PATH=”/usr/share/gconf/gnome.mandatory.path
declare -x OLDPWD
declare -x ORBIT_SOCKETDIR=”/tmp/orbit-root”
declare -x PATH=”/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games”
declare -x PWD=”/root”
declare -x QT_IM_MODULE=”xim”

(注:中间省略了内容)

单独看看PATH环境变量:

root@ubuntu:~# echo $PATH

/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games

2.设置变量的三种方法

1./etc/profile文件中添加变量【对所有用户生效(永久的)】

用VI在文件/etc/profile文件中增加变量,该变量将会对Linux下所有用户有效,并且是“永久的”。

例如:编辑/etc/profile文件,添加以下:

# vi /etc/profile

export PATH=”$PATH:/opt/eldk”

注:修改文件后要想马上生效还要运行# source /etc/profile不然只能在下次重进此用户时生效。

2.用户目录下的.bashrc文件中增加变量【对单一用户生效(永久的)】

用VI在用户目录下的.bashrc文件中增加变量,改变量仅会对当前用户有效,并且是“永久的”。

例如:编辑root用户目录下的.bashrc

$ vi /root/.bashrc

添加如下内容:

export PATH=“$PATH:/opt/eldk”

注:修改文件后要想马上生效还要运行$ source /root/.bashrc不然只能在下次重进此用户时生效。

3.直接运行export命令定义变量【只对当前shell(BASH)有效(临时的)】

在shell的命令行下直接使用[export 变量名=变量值] 定义变量,该变量只在当前的shell(BASH)或其子shell(BASH)下是有效的,shell关闭了,变量也就失效了,再打开新shell时就没有这个变量,需要使用的话还需要重新定义。

root@ubuntu:~# export PATH=$PATH:/opt/eldk

————————————————————————————————————————————————————————————————————————
“/bin”、“/sbin”、“/usr/bin”、“/usr/sbin”、“/usr/local/bin”等路径已经在系统环境变量中了,如果可执行文件在这几个标准位置,在终端命令行输入该软件可执行文件的文件名和参数(如果需要参数),回车即可。

  如果不在标准位置,文件名前面需要加上完整的路径。不过每次都这样跑就太麻烦了,一个“一劳永逸”的办法是把这个路径加入环境变量。命令“PATH=$PATH:路径”可以把这个路径加入环境变量,但是退出这个命令行就失效了。要想永久生效,需要把这行添加到环境变量文件里。有两个文件可选:“/etc/profile”和用户主目录下的“.bashrc”,“/etc/profile”对系统里所有用户都有效,用户主目录下的“.bashrc”只对这个用户有效。

  “PATH=$PATH:路径1:路径2:…:路径n”,意思是可执行文件的路径包括原先设定的路径,也包括从“路径1”到“路径n”的所有路径。当用户输入一个一串字符并按回车后,shell会依次在这些路径里找对应的可执行文件并交给系统核执行。那个“$PATH”表示原先设定的路径仍然有效,注意不要漏掉。某些软件可能还有“PATH”以外类型的环境变量需要添加,但方法与此相同,并且也需要注意“$”。

  注意,与DOS/Window不同,UNIX类系统环境变量中路径名用冒号分隔,不是分号。另外,软件越装越多,环境变量越添越多,为了避免造成混乱,建议所有语句都添加在文件结尾,按软件的安装顺序添加。

  格式如下():

  #软件名-版本号

  PATH=$PATH:路径1:路径2:…:路径n

  其他环境变量=$其他环境变量:…

  在“profile”和“.bash_profile”中,“#”是注释符号,写在这里除了视觉分隔外没有任何效果。

  设置完毕,注销并重新登录,设置就生效了。如果不注销,直接在shell里执行这些语句,也能生效,但是作用范围只限于执行了这些语句的shell。

  相关的环境变量生效后,就不必老跑到软件的可执行文件目录

喜欢 (0)
[🍬谢谢你请我吃糖果🍬🍬~]
分享 (0)
关于作者:
少将,关注Web全栈开发、项目管理,持续不断的学习、努力成为一个更棒的开发,做最好的自己,让世界因你不同。
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址