热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Ubuntu9.04安装arm-linux-gcc交叉编译工具

最近要开发嵌入式Linux,但是手头上大多文档中介绍交叉编译环境的都是基于RedHat9的,这个版本虽说很经典,但是毕竟实在是太古老了,自己机器上本身装的是Ubuntu9.04,因此小小的研究了一下,在Ubuntu9.04中安装交叉编译环境arm-linux-gcc下面所有yourname替换为你自己的位于/home目录下的用户名首先是准本工作:需要的安装包:crosstool-0.43

最近要开发嵌入式Linux,但是手头上大多文档中介绍交叉编译环境的都是基于RedHat 9的,这个版本虽说很经典,但是毕竟实在是太古老了,自己机器上本身装的是Ubuntu 9.04,因此小小的研究了一下,在Ubuntu 9.04中安装交叉编译环境 arm-linux-gcc下面所有yourname替换为你自己的位于/home目录下的用户名

首先是准本工作:

需要的安装包:

crosstool-0.43.tar.gz 可以在http://kegel.com/crosstool/crosstool-0.43.tar.gz获得

创建一个文件夹

mkdir /home/yourname/downloads也可以用mkdir ~/downloads

将crosstool-0.43.tar.gz复制到downloads目录下(下载完成后默认应该实在桌面上)

另外,还有一些安装包:
binutils-2.16.1.tar.bz2
glibc-2.3.2.tar.bz2
glibc-linuxthreads-2.3.2.tar.bz2
gcc-3.3.6.tar.bz2       
linux-2.6.15.4.tar.bz2
gcc-4.1.0.tar.bz2       
linux-libc-headers-2.6.12.0.tar.bz2
gdb-6.5.tar.bz2
这些在安装过程中会自动下载,也可以自己提前下载好,放在/home/yourname/downloads下面,不过我建议提前下好,因为一会需要修改一下glibc里的一个文件。         

下面是一些安装是可能遇到的问题,提前些出来,省得大家忙活半天编译到一半发现错了还得重新编译,如果你想见识一下这些问题,可以直接跳转到下面的安装过程。
1.安装过程中会提示缺少下面两个包
bison
flex
如果以前没有装过,下载安装一下(具体包名我忘记了,可以直接输入bison查看,如果没装过,会提示你可以下载哪些包安装,flex类似)
sudo apt-get install bison
sudo apt-get install flex
另外网上说还需要一个mm4,不过我装的时候没有提示,好象是安装flex时,解决依赖性时自动装上了。

2.还有一个莫名其妙的错误,提示说gcc版本太旧或者未安装,但是你用sudo apt-get install gcc 的时后会发现gcc已经是最新版本了,事实上这个错误是因为gcc版本太新了。解决方法如下:
sudo apt-get install gcc-3.4
cd /usr/bin
sudo rm gcc
ln -s gcc-3.4 gcc

3.安装是还出现了如下错误:
/home/xxs/crosstool-0.43/build/arm-arm9tdmi-linux-gnu/gcc-4.1.1-glibc-2.3.2/build-glibc/csu/version-info.h:1:1: missing terminating " character
系统在编译生成version.o时候发现version-info.h文件有错误

解决方法是需要修改一个文件
解压glibc-2.3.2.tar.bz2
找到glibc-2.3.2/csu目录下的Makefile按如下修改
文件末尾有2处echo
echo
"\"Compiled on a $$os $$version system" \
                        "on
`date +%Y-%m-%d`.\\n\"" ;; \
改为:
echo
"\"Compiled on a $$os $$version system" \
                        "on
`date +%Y-%m-%d`.\\\\n\"" ;; \
echo
"\"Available extensions:\\n\"";
改为:
echo
"\"Available extensions:\\\\n\""    \
保存并重新压缩为glibc-2.3.2.tar.bz2 覆盖原来downloads目录下的glibc-2.3.2.tar.bz2

解决好上面的一些小问题就可以开始安装了

1.创建一个安装目录
sudo mkdir /opt/crosstool
这是因为安装文件默认是安装到这个目录里的

2.为你自己添加权限
sudo chown yourname /opt/crosstool

3.解压crosstools-0.43.tar.gz(此时安装包应该位于/home/yourname/downloads/目录下,不是的话自己改一下)
tar -zvxf crosstools-0.43.tar.gz
进入cross目录
cd cross-0.43
可以ls一下看看里面的文件,里面有一些脚本文件,具体功能可以到http://kegel.com/crosstool上查看FAQ

4.运行./demo-arm.sh进行安装
这步要注意,网上有人说需要修改脚本文件里的一些设置,我没改也装上了,不知道为什么。

5.剩下的就等着编译安装吧,很漫长~~

修改环境变量
安装完成后,默认的那装目录就是开始创建的那个/opt/crosstools/
1.添加环境变量
gedit ~/.bashrc
在最后添加如下
if [ -d /opt/crosstool/gcc-4.1.0-glibc-2.3.2/arm-unknow-linux-gnu ]; then
    PATH=/opt/crosstool/gcc-4.1.0-glibc-2.3.2/arm-unknow-linux-gnu/bin:$PATH
fi
就是把安装的工具bin目录添加到PATH变量中。
保存
2.source ~/.bashrc
3.重启终端。
然后可以测试一下
arm-unknow-linux-gnu-gcc
正常的话就会出现
arm-unknow-linux-gnu-gcc: no input files
说明程序能用了。

剩下的就是继续探索~
革命尚未成功,同志还需努力

*****************************************************

在安装的时候还出现了patch错误,错误具体是什么忘记了,是一个.sh文件它明明在文件夹里面可是说找不到,后来重新装了一个patch , apt-get install patch,再次安装的时候就好了。

花了好长时间终于安装好了,可是在设置环境变量是没有反应,找到目录运行./arm-unknow-linux-gnu-gcc显示no input files

可是,环境变量没有设置好,只能在文件目录执行,不知道哪出了问题


推荐阅读
  • 在Docker中,将主机目录挂载到容器中作为volume使用时,常常会遇到文件权限问题。这是因为容器内外的UID不同所导致的。本文介绍了解决这个问题的方法,包括使用gosu和suexec工具以及在Dockerfile中配置volume的权限。通过这些方法,可以避免在使用Docker时出现无写权限的情况。 ... [详细]
  • 成功安装Sabayon Linux在thinkpad X60上的经验分享
    本文分享了作者在国庆期间在thinkpad X60上成功安装Sabayon Linux的经验。通过修改CHOST和执行emerge命令,作者顺利完成了安装过程。Sabayon Linux是一个基于Gentoo Linux的发行版,可以将电脑快速转变为一个功能强大的系统。除了作为一个live DVD使用外,Sabayon Linux还可以被安装在硬盘上,方便用户使用。 ... [详细]
  • imx6ull开发板驱动MT7601U无线网卡的方法和步骤详解
    本文详细介绍了在imx6ull开发板上驱动MT7601U无线网卡的方法和步骤。首先介绍了开发环境和硬件平台,然后说明了MT7601U驱动已经集成在linux内核的linux-4.x.x/drivers/net/wireless/mediatek/mt7601u文件中。接着介绍了移植mt7601u驱动的过程,包括编译内核和配置设备驱动。最后,列举了关键词和相关信息供读者参考。 ... [详细]
  • Ubuntu安装常用软件详细步骤
    目录1.GoogleChrome浏览器2.搜狗拼音输入法3.Pycharm4.Clion5.其他软件1.GoogleChrome浏览器通过直接下载安装GoogleChro ... [详细]
  • 本文介绍了Linux Shell中括号和整数扩展的使用方法,包括命令组、命令替换、初始化数组以及算术表达式和逻辑判断的相关内容。括号中的命令将会在新开的子shell中顺序执行,括号中的变量不能被脚本余下的部分使用。命令替换可以用于将命令的标准输出作为另一个命令的输入。括号中的运算符和表达式符合C语言运算规则,可以用在整数扩展中进行算术计算和逻辑判断。 ... [详细]
  • 本文讨论了在Linux系统中,使用chown命令将django项目目录下的static目录的拥有者从root改为eureka的问题。作者尝试了多种命令,包括chown和sudo chown等,但都没有成功修改拥有者。文章提供了相关目录的权限信息,并补充了项目所在磁盘和操作系统的信息。 ... [详细]
  • 本文总结了Linux下多线程执行shell脚本的4种方法,包括切换到工作目录执行、使用绝对路径执行、直接使用bash或sh执行。同时介绍了为什么需要加上"./"来执行脚本的原因。 ... [详细]
  • Vagrant虚拟化工具的安装和使用教程
    本文介绍了Vagrant虚拟化工具的安装和使用教程。首先介绍了安装virtualBox和Vagrant的步骤。然后详细说明了Vagrant的安装和使用方法,包括如何检查安装是否成功。最后介绍了下载虚拟机镜像的步骤,以及Vagrant镜像网站的相关信息。 ... [详细]
  • STM32与FPGA的对比及学习建议
    本文对比了野火STM32F103指南针板和Xilinx的PYNQ-Z2板(ZYNQ-7020),介绍了野火STM32F103指南针板的学习资料和讲解视频的详细程度,建议初学者学习野火的资料。同时,介绍了STM32开发所用的Keil程序和C指针的重要性。对于ZYNQ-7020的开发,提到了其自带的Linux、Ubuntu18.4系统以及使用SD卡烧入镜像的方法。 ... [详细]
  • 本文介绍了在Android Studio中使用命令行build gradle的方法,并解决了一些常见问题,包括手动配置gradle环境变量和解决External Native Build Issues的方法。同时提供了相关参考文章链接。 ... [详细]
  • 本文介绍了在Ubuntu系统中清理残余配置文件和无用内容的方法,包括清理残余配置文件、清理下载缓存包、清理不再需要的包、清理无用的语言文件和清理无用的翻译内容。通过这些清理操作可以节省硬盘空间,提高系统的运行效率。 ... [详细]
  • 本文介绍了在Ubuntu 11.10 x64环境下安装Android开发环境的步骤,并提供了解决常见问题的方法。其中包括安装Eclipse的ADT插件、解决缺少GEF插件的问题以及解决无法找到'userdata.img'文件的问题。此外,还提供了相关插件和系统镜像的下载链接。 ... [详细]
  • 程序员如何选择机械键盘轴体?红轴和茶轴对比
    本文介绍了程序员如何选择机械键盘轴体,特别是红轴和茶轴的对比。同时还介绍了U盘安装Linux镜像的步骤,以及在Linux系统中安装软件的命令行操作。此外,还介绍了nodejs和npm的安装方法,以及在VSCode中安装和配置常用插件的方法。最后,还介绍了如何在GitHub上配置SSH密钥和git的基本配置。 ... [详细]
  • 如何使用PLEX播放组播、抓取信号源以及设置路由器
    本文介绍了如何使用PLEX播放组播、抓取信号源以及设置路由器。通过使用xTeve软件和M3U源,用户可以在PLEX上实现直播功能,并且可以自动匹配EPG信息和定时录制节目。同时,本文还提供了从华为itv盒子提取组播地址的方法以及如何在ASUS固件路由器上设置IPTV。在使用PLEX之前,建议先使用VLC测试是否可以正常播放UDPXY转发的iptv流。最后,本文还介绍了docker版xTeve的设置方法。 ... [详细]
  • Linux下部署Symfoy2对app/cache和app/logs目录的权限设置,symfoy2logs
    php教程|php手册xml文件php教程-php手册Linux下部署Symfoy2对appcache和applogs目录的权限设置,symfoy2logs黑色记事本源码,vsco ... [详细]
author-avatar
木色雪魂K
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有