arm-linux-gcc完结安装方法.
- 格式:pdf
- 大小:90.68 KB
- 文档页数:2
arm-linux-gcc配置安装1、⾸先去下载arm-linux-gcc压缩包密码:ygf33、把arm-linux-gcc压缩包放到你⾃⼰指定的⽬录,我的放在了/root/armlinux/arm4、解压缩:#tar -jxvf arm-linux-gcc-3.4.1.tar.bz2解压完成后,你的⽬录下会出现opt⽬录。
5、找到这个路径:/root/armlinux/arm/opt/FrinendlyARM/toolschain/4.4.3/bin6、配置环境变量:修改环境变量,把交叉编译器的路径加⼊到PATH。
(有三种⽅法,强烈推荐使⽤⽅法⼀) ⽅法⼀:修改/etc/bash.bashrc⽂件#vim /etc/bash.bashrc在最后加上:export PATH=$PATH:/root/armlinux/arm/opt/FrinendlyARM/toolschain/4.4.3/bin (红⾊部分是第5步找到的路径,路径每个⼈的/root/armlinux/arm/路径都不同,要看好⾃⼰把压缩包解压到了哪⾥) 使⽂件⽣效:source /etc/bash.bashrc ⽅法⼆:修改/etc/profile⽂件:(重启后失效)# vim /etc/profile增加路径设置,在末尾添加如下,保存/etc/profile⽂件:export PATH=$PATH:/root/armlinux/arm/opt/FrinendlyARM/toolschain/4.4.3/bin 使⽂件⽣效:source /etc/profile ⽅法三:#export PATH=$PATH:/root/armlinux/arm/opt/FrinendlyARM/toolschain/4.4.3/bin 注:(这只能在当前的终端下才是有效的!)如果出现错误:not a valid identifier(⼤部分出现于CentOS) yum install -y lsb-core 如果不对,⾃⾏百度需要安装的依赖7、检查安装是否成功:arm-linux-gcc -v。
arm-linux-gcc常用参数讲解gcc编译器使用方法我们需要编译出运行在ARM平台上的代码,所使用的交叉编译器为arm-linux-gcc。
下面将arm-linux-gcc编译工具的一些常用命令参数介绍给大家。
在此之前首先介绍下编译器的工作过程,在使用GCC编译程序时,编译过程分为四个阶段:1. 预处理(Pre-Processing)2. 编译(Compiling)3. 汇编(Assembling)4. 链接(Linking)Linux程序员可以根据自己的需要让GCC在编译的任何阶段结束,以便检查或使用编译器在该阶段的输出信息,或者对最后生成的二进制文件进行控制,以便通过加入不同数量和种类的调试代码来为今后的调试做好准备。
和其它常用的编译器一样,GCC也提供了灵活而强大的代码优化功能,利用它可以生成执行效率更高的代码。
以文件example.c为例说明它的用法0. arm-linux-gcc -o example example.c不加-c、-S、-E参数,编译器将执行预处理、编译、汇编、连接操作直接生成可执行代码。
-o参数用于指定输出的文件,输出文件名为example,如果不指定输出文件,则默认输出a.out1. arm-linux-gcc -c -o example.oexample.c-c参数将对源程序example.c进行预处理、编译、汇编操作,生成example.0文件去掉指定输出选项"-o example.o"自动输出为example.o,所以说在这里-o加不加都可以2.arm-linux-gcc -S -o example.sexample.c-S参数将对源程序example.c进行预处理、编译,生成example.s文件-o选项同上3.arm-linux-gcc -E -o example.iexample.c-E参数将对源程序example.c进行预处理,生成example.i文件(不同版本不一样,有的将预处理后的内容打印到屏幕上)就是将#include,#define等进行文件插入及宏扩展等操作。
Ubuntu18.04安装arm-linux-gcc交叉编译器的两种⽅法(附下载地址)⽅法⼀: 我们都知道Ubuntu有⼀个专门⽤来安装软件的⼯具apt,我们可以⽤它来全⾃动安装arm-linux-gcc。
此⽅法安装的是最新版的,但是此⽅法需要FQ,否则99%会失败,这就是为什么⽹上⼤多都⽤压缩包安装的原因: ⾸先Ctrl+Alt+T弹出终端,使⽤如下命令进⾏arm-linux-gcc的安装:sudo apt-get install gcc-arm-linux-gnueabihf 使⽤如下命令进⾏arm-linux-g++的安装:sudo apt-get install g++-arm-linux-gnueabihf 如果要卸载时使⽤如下命令进⾏移除,arm-linux-gcc的卸载:sudo apt-get remove gcc-arm-linux-gnueabihf arm-linux-g++的卸载:sudo apt-get remove g++-arm-linux-gnueabihfsudo tar -xjvf /tmp/arm-linux-gcc-3.4.5-glibc-2.3.6.tar.bz2 3.解压完成后,再在(/usr/local)中创建⼀个新⽬录arm,即在Terminal中输⼊以下命令:sudo mkdir /usr/local/arm 4.创建arm⽬录成功后,还需要给它解放全部权限,即在Terminal中输⼊以下命令:sudo chmod 777 /usr/local/arm 5.在解压出来的⽬录中找到并把整个arm-linux-gcc-3.4.5-glibc-2.3.6⽬录复制到刚刚建好的arm⽬录中,命令如下:sudo cp -r gcc-3.4.5-glibc-2.3.6 /usr/local/arm 6.打开(/etc/profile)配置环境变量和库变量,⽬的是以后可以在任何位置使⽤该交叉编译器,命令如下:sudo vi /etc/profile 7.⽤vi或者vim打开后,在⽂件最后添加两⾏,并输⼊以下代码:第⼀⾏是添加执⾏程序的环境变量,第⼆⾏是库⽂件的路径export PATH=$PATH:/usr/local/arm/gcc-3.4.5-glibc-2.3.6/binexport LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/arm/gcc-3.4.5-glibc-2.3.6/lib 8.使⽤source命令重新加载⽣效该配置⽂件source /etc/profile 9.检验是否安装成功,在 Terminal 输⼊以下命令输出版本信息:arm-linux-gcc -v 10.若有以下报错参考解决办法: 报错:bash: /usr/local/arm/4.2.2-eabi/usr/bin/arm-linux-gcc-4.2.2: No such file or directory 解决sudo apt-get install libc6-i386 该库中包括ia32-libs, lib32z1, lib32ncurses5等等依赖。
CentOS 7 编译环境搭建小记1、make: gcc:命令未找到make是gcc的编译器,执行以下安装命令安装:yum -y install gcc automake autoconf libtool make安装g++:yum install gcc gcc-c++2、./patch-modules_3.2.0.sh: 行 00: patch: 未找到命令Root权限:yum install patch3、[CentOS]安装软件:/lib/ld-linux.so.2: bad ELF interpreter解决是因为64位系统中安装了32位程序解决方法:yum install glibc.i686重新安装以后还有如下类系错误再继续安装包error while loading shared libraries: libstdc++.so.6: cannot open shared object file: No such file or directoryyum install libstdc++.so.64、make: arm-linux-gcc:命令未找到环境变量的设置gedit /etc/profile末尾添加:export PATH=$PATH:/usr/local/arm/4.4.3/bin,其中/usr/local/arm/4.4.3/bin为你自己需要设置的环境变量路径。
要使其立即生效,需在终端执行:source ~/.bashrc在终端输入 arm-linux-gcc -v 查看是否安装成功如若还有错误原因如下:exportPATH=$PATH:/usr/local/arm/4.4.3/bin是设置当前用户的PATH,而sudo执行make的时候,使用的是超级用户权限,那也就使用了超级用户的PATH(但是这个PATH里,并没有/usr/local/arm/4.4.3/bin)解决方法:超级用户权限执行命令:gedit /etc/profile在文件末端加上export PATH=$PATH:/usr/local/arm/4.4.3/bin,并保存,执行source /etc/profile查看是否成功。
arm-linux-gcc 4.3.2编译安装过程收藏arm-linux-gcc 4.3.2编译安装过程本文由《我的arm-gcc工具编译安装过程》修正而成,红字部分为与原作不同之处,希望对大家有所帮助。
原文地址:/blog/static/28351497200902193223687/我的编译环境是在ubuntu8.10 amd64,gcc版本为4.3.2,编译的linux内核版本为2.6.8,故后面需要修改少许内核头文件。
开始前确认环境里有texinfo, gawk(注意mawk编译glibc header时会有问题), bison, flex,没有就安装它们。
>sudo apt-get install texinfo gawk bison flex工作的目录是用户目录下源文件放在目录cross_source里编译的工作目录是cross_buildxxx 就是存放解压出来的源代码,例如binutils-2.19.tar.bz2,解压放在binutils-2.19 xxx_build 用于编译的目录,例如binutils-2.19.tar.bz2,编译目录是binutils-2.19_build用到的文件是binutils-2.19.tar.bz2gcc-core-4.3.2.tar.bz2gcc-g++-4.3.2.tar.bz2mpfr-2.3.2.tar.bz2gmp-4.2.4.tar.bz2linux-2.6.28.tar.bz2glibc-ports-2.7.tar.bz2glibc-2.7.tar.bz2首先创建目录>mkdir cross_source>mkdir cross_build>cd cross_build1编译,安装binutilsbinutils的配置和编译安装,binutils的编译一般不会遇到什么问题,至少我没有遇到。
>sudo apt-get install texinfo>tar -jxvf ../cross_source/binutils-2.19.tar.bz2根据[Bug gas/7026] New: ARM target wont build, error: format not a string literal and no format arguments,修改tc-arm.c>mkdir binutils-2.19_build>cd binutils-2.19_build>../binutils-2.19/configure --target=arm-linux --prefix=/usr/local/arm/4.3.2 >make>sudo make all install这就会把binutils的编译结果安装到/usr/local/arm/4.3.2/里binutils安装后需要把路径导出。
arm-linux-gcc交叉编译工具链安装
陈伟
解压arm-linux-gcc-3.4.1.tar.bz2
#tar zxvf arm-linux-gcc-3.4.1.tar.bz2
1.解压过程需要一段时间,解压后的文件形成了usr/local/ 文件夹,
进入该文件夹,将arm文件夹拷贝到/usr/local/下
#cd usr/local/
#cp -rv arm /usr/local/
现在交叉编译程序集都在/usr/local/arm/3.4.1/bin下面了
2.修改环境变量,把交叉编译器的路径加入到PATH。
修改~/.bashrc文件,编辑.bash_profile也行
#vim ~/.bashrc
在最后加上:
export PATH=$PATH:/usr/local/arm/3.4.1/bin export PATH
也可以:
#export PATH=$PATH:/usr/local/arm/3.4.1/bin
注:(这只能在当前的终端下才是有效的!)
3.立即使新的环境变量生效,不用重启电脑:
#source /root/.bashrc
4.检查是否将路径加入到PATH:
# echo $PATH
显示的内容中有/usr/local/arm/bin,说明已经将交叉编译器的路径加入PATH。
至此,交叉编译环境安装完成。
5. 测试是否安装成功
# arm-linux-gcc -v。
arm-linux-gcc交叉工具链的安装和使用分类:linux内核工具使用2013-01-18 01:01 2295人阅读评论(0) 收藏举报1、安装arm-linux-gcc交叉工具链[root@localhost Denny]# lsarm-linux-gcc-4.3.2.tgz Desktop gcc kernel modules shell实验 smb.conf tftp安装包 wireshark软件包at_remind.c file gdb makefiles samba安装包 smb test wireless[root@localhost Denny]# tar zxvf arm-linux-gcc-4.3.2.tgz-C / // -C 参数指的是解压到根目录下面[root@localhost /]# cd /usr/local/[root@localhost local]# lsarm bin etc games include lib libexec sbin share src[root@localhost local]# cd arm/4.3.2/arm-none-linux-gnueabi/bin/ lib/ libexec/ share/[root@localhost local]# cd arm/4.3.2/bin/ // 安装在 /usr/local/arm/4.3.2/bin/ 的“bin”目录下面[root@localhost bin]#[root@localhost bin]# /usr/local/arm/4.3.2/bin/arm-linux-gcc // arm-linux-gcc 使用方法1:跟上“全路径”[[root@localhost bin]# echo $PATH/usr/lib/qt-3.3/bin:/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bi n:/usr/sbin:/usr/bin:/usr/X11R6/bin:/root/bin[root@localhost bin]# export $PATHbash: export:`/usr/lib/qt-3.3/bin:/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/sbin:/usr/local/bin:/sbin:/b in:/usr/sbin:/usr/bin:/usr/X11R6/bin:/root/bin': not a valid identifier[root@localhost bin]# vi /etc/proprofile profile.d/ protocols[root@localhost bin]# vi /etc/profile // arm-linux-gcc 使用方法2:添加路径到环境变量中去,在系统的时候就可以“任何地方”使用 arm-linux-gcc[root@localhost bin]## Path manipulationif [ "$EUID" = "0" ]; thenpathmunge /sbinpathmunge /usr/sbinpathmunge /usr/local/sbinpathmunge /usr/local/arm/4.3.2/bin //环境变量添加的位置fi[root@localhost file]# cat hello.c#include <stdio.h>int main(){char *p="hello world!!";printf("%s:",*p); // 错误:字符串的输出 printf("%s:",p); 不用加*p(字符串指针),和其他指针不同return 0;}[root@localhost file]# vi hello.c[root@localhost file]# gcc hello.c -o hello // x86编译方式[root@localhost file]# ./hello // 在x86上能够运行hello world!!:[root@localhost file]# arm-linux-gcarm-linux-gcc arm-linux-gcc-4.3.2 arm-linux-gcov[root@localhost file]# arm-linux-gcc hello.c -o hello1 // ARM编译方式[root@localhost file]# lsfork hello hello1 hello.c lib_file sys_file time_file[root@localhost file]# ./hello1 // 在x86上不能够运行bash: ./hello1: cannot execute binary file[root@localhost file]#2、arm-linux-gcc交叉编译工具的使用今晚用了:arm-linux-objdump -S -D hello 反汇编指令时,遇到以下提示的错误:arm-linux-objdump: Can't disassemble for architecture UNKNOWN!现在还不知道是什么错误引起的,等着明天再解决了!!!!!!!原因是:由于上面用了“gcc hello.c -o hello x86编译方式” 和“arm-linux-gcc hello.c -o hello1 ARM编译方式”产生了hello 和hello1 对应不同平台的文件,当然用“arm-linux-objdump -S -D hello”用arm反汇编指令对x86平台产生的bin文件进行反汇编,肯定出现错误(1)、反汇编arm-linux-objdump 使用[root@localhost file]arm-linux-objdump -S -D helloarm-linux-objdump: Can't disassemble for architecture UNKNOWN![root@localhost file]# lsfork hello hello1 hello.c lib_file sys_file time_file // hello 是x86编译出来的,hello1是arm编译出来的[root@localhost file]# arm-linux-gcc -g hello.c -o hello1 // -g编译产生带有调试的信息的文件(反汇编后:c语言才能和汇编语言对应上)[root@localhost file]# arm-linux-objdump -D -S hello1 >log[root@localhost file]# lsfork hello hello1 hello.c lib_file log sys_file time_file[root@localhost file]# vi log // 查看对应的文件如下00008380 <main>:#include <stdio.h>int main(){8380: e92d4800 push {fp, lr}8384: e28db004 add fp, sp, #4 ; 0x48388: e24dd008 sub sp, sp, #8 ; 0x8char *p="hello world!!";838c: e59f3020 ldr r3, [pc, #32] ; 83b4 <main+0x34>8390: e50b3008 str r3, [fp, #-8]printf("%s:",p);8394: e59f001c ldr r0, [pc, #28] ; 83b8 <main+0x38>8398: e51b1008 ldr r1, [fp, #-8]839c: ebffffc7 bl 82c0 <_init+0x48>return 0;83a0: e3a03000 mov r3, #0 ; 0x0}(2)arm-linux-readelf 文件查看工具[root@localhost file]# arm-linux-readelf -a hello1 >logELF Header: //主要查看这个头文件Magic: 7f 45 4c 46 01 01 01 00 00 00 00 00 00 00 00 00Class: ELF32Data: 2's complement, little endian //采用的是小端模式(程序运行不起来,硬件平台是打断格式,交叉工具链是小端格式)Version: 1 (current)OS/ABI: UNIX - System VABI Version: 0Type: EXEC (Executable file)Machine: ARM //程序运行在ARM平台上Version: 0x1Entry point address: 0x82ccStart of program headers: 52 (bytes into file)Start of section headers: 2488 (bytes into file)Flags: 0x5000002, has entry point, Version5 EABISize of this header: 52 (bytes)Size of program headers: 32 (bytes)Number of program headers: 8Size of section headers: 40 (bytes)Number of section headers: 37Section header string table index: 34[root@localhost file]# arm-linux-readelf -d hello1 // -d 指的是查看程序所用的共享链接库Dynamic section at offset 0x470 contains 24 entries:Tag Type Name/Value0x00000001 (NEEDED) Shared library: [libc.so.6] // 程序所用到的共享链接库(程序运行不起来,可能找不到共享链接库,把所需要的库考到路径下)0x0000000c (INIT) 0x82780x0000000d (FINI) 0x84340x00000019 (INIT_ARRAY) 0x104640x0000001b (INIT_ARRAYSZ) 4 (bytes)0x0000001a (FINI_ARRAY) 0x104680x0000001c (FINI_ARRAYSZ) 4 (bytes)。
详解Linux安装GCC方法下载:/gnu/gcc/gcc-4.5.1/gcc-4.5.1.tar.bz2浏览:/gnu/gcc/gcc-4.5.1/查看Changes:/gcc-4.5/changes.htm现在很多程序员都应用GCC,怎样才能更好的应用GCC。
目前,GCC可以用来编译C/C++、FORTRAN、JAVA、OBJC、ADA等语言的程序,可根据需要选择安装支持的语言。
本文以在Redhat Linux安装GCC4.1.2为例(因在项目开发过程中要求使用,没有用最新的GCC 版本),介绍Linux安装GCC过程。
安装之前,系统中必须要有cc或者gcc等编译器,并且是可用的,或者用环境变量CC指定系统上的编译器。
如果系统上没有编译器,不能安装源代码形式的GCC 4.1.2。
如果是这种情况,可以在网上找一个与你系统相适应的如RPM等二进制形式的GCC软件包来安装使用。
本文介绍的是以源代码形式提供的GCC软件包的安装过程,软件包本身和其安装过程同样适用于其它Linux和Unix系统。
系统上原来的GCC编译器可能是把gcc等命令文件、库文件、头文件等分别存放到系统中的不同目录下的。
与此不同,现在GCC建议我们将一个版本的GCC安装在一个单独的目录下。
这样做的好处是将来不需要它的时候可以方便地删除整个目录即可(因为GCC没有uninstall功能);缺点是在安装完成后要做一些设置工作才能使编译器工作正常。
在本文中采用这个方案安装GCC 4.1.2,并且在安装完成后,仍然能够使用原来低版本的GCC编译器,即一个系统上可以同时存在并使用多个版本的GCC编译器。
按照本文提供的步骤和设置选项,即使以前没有安装过GCC,也可以在系统上安装上一个可工作的新版本的GCC编译器。
1 下载在GCC网站上()或者通过网上搜索可以查找到下载资源。
目前GCC的最新版本为4.2.1。
可供下载的文件一般有两种形式:gcc-4.1.2.tar.gz和gcc-4.1.2.tar.bz2,只是压缩格式不一样,内容完全一致,下载其中一种即可。
linux系统如何安装软件 (详细文字教程)在Linux中安装软件时,我们经常要考虑到这样几个个问题:(1).怎样安装软件;(2).软件安装在什么地方;(3).如何卸载删除不要的软件......下面,我们就一起来认识一下这些方面的问题。
一.认识Linu x应用软件安装包通常Linu x应用软件的安装包有三种:1) tar包,如softw are-1.2.3-1.tar.gz。
它是使用UN IX系统的打包工具t ar打包的。
2) rpm包,如softw are-1.2.3-1.i386.rpm。
它是Redh at Linux提供的一种包封装格式。
(现在用的全称叫RPMPackag e Manage r,以前叫Red hat Packag e Manage r)3) dpkg包,如softw are-1.2.3-1.deb。
它是Deba in Linux提供的一种包封装格式。
而且,大多数Lin ux应用软件包的命名也有一定的规律,它遵循:名称-版本-修正版-类型例如:1) softwa re-1.2.3-1.tar.gz 意味着:软件名称:softwa re版本号:1.2.3修正版本:1类型:tar.gz,说明是一个t ar包。
2) sfotwa re-1.2.3-1.i386.rpm软件名称:softwa re版本号:1.2.3修正版本:1可用平台:i386,适用于Int el 80x86平台。
类型:rpm,说明是一个r pm包。
注:由于rpm格式的通常是已编译的程序,所以需指明平台。
在后面会详细说明。
而softw are-1.2.3-1.deb就不用再说了吧!大家自己练习一下。
二、了解包里的内容:一个Linu x应用程序的软件包中可以包含两种不同的内容:1) 一种就是可执行文件,也就是解开包后就可以直接运行的。
Arm-linux-gcc-4.3.2安装详解Arm-linux-gcc-4.3.2安装详解(在redhat9.0和红旗6.0上都可以)1、首先成功下载arm-linux-gcc-4.3.2.tgz(网上资源丰富所以不再列出地址,也可以向本人索取*************)2、解压此文件包tar?-zxvf?arm-linux-gcc-4.3.2.tgz–C/(注意C 是大写的)3、根据根据解压的过程可以看出arm-linux-gcc-4.3.2.tgz被解压在/usr/local/arm/4.3.2目录下(不同的机子也许可能不同吧)4、此时在终端输入/usr/local/arm/4.3.2/bin/arm-linux-gcc?-v 命令就可以查看arm-linux-gcc的版本信息了,但是每次这样输入比较麻烦,下面可以更改配置。
在终端输入命令vi/etc/profile命令打开profile文件,找到下面内容的if[-z"$INPUTRC"-a!-f"$HOME/.inputrc"];thenINPUTRC=/etc/inputrcfiexportPATHUSERLOGNAMEMAILHOSTNAMEHISTSIZEINPUTRCexportPATH=/usr/local/arm/4.3.2/bin:$PATHforiin/etc/profile.d/.sh;do添加红色字体的部分就可以了,当然如果你此前装有其他交叉编译器可能类似红色字体部分的内容还有其他,只要屏蔽了就可以。
5、在终端输入?source?/etc/profile命令6、安装成功在终端输入arm-linux-gcc?-v查看版本信息以后就可以方便应用了。
Ubuntu11.04中搭建交叉编译环境(arm-linux-gcc-4.6.1版本)声明:本文主要参考/xt_xiaotian/article/details/6836739,并根据实际情况作了一定的修改与说明编译环境:内核名称:Linux内核发行版:2.6.38-11-generic内核版本:#50-Ubuntu SMP Mon Sep 12 21:18:14 UTC 2011硬件架构名称:i686硬件平台:i386操作系统:GNU/Linux当前系统gcc版本号:4.5.2在Linux中建立整个ARM交叉编译环境的整体过程为:1、下载源码包2、建立编译目录并设置环境变量3、安装内核头文件4、安装二进制工具(binutils)5、建立初始编译器工具链(简版gcc)6、建立glibc库7、建立全套编译器工具链(full gcc)8、验证一、下载源码包GNU的所有源码文件都可以到这个地址下载:/gnu/Linux Kernel源代码可以去这里下载:mpc可以去这里下载:下载的源码包如下:binutils-2.21.1.tar.bz2gcc-4.6.1.tar.gzglibc-2.14.tar.gzglibc-linuxthreads-2.5.tar.bz2glibc-ports-2.13.tar.gzgmp-5.0.2.tar.bz2linux-2.6.32.45.tar.gzmpc-0.9.tar.gzmpfr-2.4.2.tar.gz注:mpfr不建议使用3.0.0版本。
mpfr-3.0.0有Bug,会导致gcc编译不过。
二、建立编译目录并设置环境变量选定自己的工作目录,如我选择/opt/embedded作为自己的工作目录。
然后再embedded 中建立build-tools、kernel、tools三个文件夹。
实例:root@ubuntu:/opt/ming# cd /opt/root@ubuntu:/opt# mkdir embeddedroot@ubuntu:/opt# cd embedded/root@ubuntu:/opt/embedded# mkdir build-tools kernel toolsroot@ubuntu:/opt/embedded# cd build-tools/root@ubuntu:/opt/embedded/build-tools# mkdir build-binutils build-boot-gcc build-glibc build-gcc各文件夹的作用如下:/opt/embedded:交叉编译环境的主目录/opt/embedded/build-tools:存放binutils、gcc、glibc等GNU源码和用来编译这些源代码的目录/opt/embedded/kernel:用来存放Linux内核源代码/opt/embedded/tools:用来存放编译好的交叉编译工具和库文件/opt/embedded/build-tools/build-binutils:编译binutils的目录/opt/embedded/build-tools/build-boot-gcc:编译gcc启动部分的目录/opt/embedded/build-tools/build-glibc:编译glibc的目录/opt/embedded/build-tools/build-gcc:编译整个gcc的目录建立好编译目录之后便是设置环境变量(建议直接在~/.bashrc中修改,注意修改之后要重新运行Terminal)。
Linux下C开发环境的搭建过程---gcc、glibc安装和升级操作⽅法Linux下C开发环境的搭建过程——安装gcc前⾔在Linux系统中,软件安装程序⽐较纷繁复杂,不过最常见的有两种:1)⼀种是软件的源代码,您需要⾃⼰动⼿编译它。
这种软件安装包通常是⽤gzip压缩过的tar包(后缀为.tar.gz)。
2)另⼀种是软件的可执⾏程序,你只要安装它就可以了。
这种软件安装包通常被是⼀个RPM包(Redhat Linux Packet Manager,就是Redhat的包管理器),后缀是.rpm。
Linux和C天⽣就有不解之缘,Linux操作系统的内核主要就是⽤C写的,另外Linux下的很多软件也是⽤C写的,特别是⼀些著名的服务软件,⽐如MySQL、Apache等。
初学者在编译MySQL这样的软件时,可能遇到过各式各样的错误,其实只要你初步了解了Linux的C开发环境,你就能⾃⾏解决这些错误。
Linux的C开发环境与Windows的有所不同,在Linux下,⼀个完整的C开发环境由以下三个部分组成:1、函数库:glibc要构架⼀个完整的C开发环境,Glibc是必不可少的,它是Linux下C的主要函数库。
Glibc有两种安装⽅式:A、安装成测试⽤的函数库——在编译程序时⽤不同的选项来试⽤新的函数库B、安装成主要的C函数库——所有新编译程序均⽤的函数库Glibc含⼏个附加包:LinuxThreads、locale和crypt,通常它们的⽂件名随版本不同⽽类似于下列⽂件名:glibc-2.06.tar.gzglibc-linuxthreads-2.0.6.tar.gzglibc-localedate-2.0.6.tar.gzglibc-crypt-2.0.6.tar.gz2、编译器:gccgcc(GNU CCompiler)是GNU推出的功能强⼤、性能优越的多平台编译器,gcc编译器能将C、C++语⾔源程序、汇编程序和⽬标程序编译、连接成可执⾏⽂件,以下是gcc⽀持编译的⼀些源⽂件的后缀及其解释:3、系统头⽂件:glibc_header缺少了系统头⽂件的话,很多⽤到系统功能的C程序将⽆法编译。
安装GCC-4.6.1详细教程一、什么是GccLinux系统下的Gcc(GNU C Compiler)是GNU推出的功能强大、性能优越的多平台编译器,是GNU的代表作品之一。
gcc是可以在多种硬体平台上编译出可执行程序的超级编译器,其执行效率与一般的编译器相比平均效率要高20%~30%。
Gcc编译器能将C、C++语言源程序、汇程式化序和目标程序编译、连接成可执行文件,如果没有给出可执行文件的名字,gcc将生成一个名为a.out的文件。
在Linux系统中,可执行文件没有统一的后缀,系统从文件的属性来区分可执行文件和不可执行文件。
二、gcc所遵循的部分约定规则前面提到便宜的后缀问题,而gcc则通过后缀来区别输入文件的类别,下面我们来介绍gcc 所遵循的部分约定规则。
.c为后缀的文件,C语言源代码文件;.a为后缀的文件,是由目标文件构成的档案库文件;.C或.cc或.cxx为后缀的文件,是C++源代码文件;.h为后缀的文件,是程序所包含的头文件;.i为后缀的文件,是已经预处理过的C源代码文件;.ii为后缀的文件,是已经预处理过的C++源代码文件;.m为后缀的文件,是Objective-C源代码文件;.o为后缀的文件,是编译后的目标文件;.s为后缀的文件,是汇编语言源代码文件;.S为后缀的文件,是经过预编译的汇编语言源代码文件。
三、Gcc的执行过程虽然我们称Gcc是C语言的编译器,但使用gcc由C语言源代码文件生成可执行文件的过程不仅仅是编译的过程,而是要经历四个相互关联的步骤∶预处理(也称预编译,Preprocessing)、编译(Compilation)、汇编(Assembly)和连接(Linking)。
●命令gcc首先调用cpp进行预处理,在预处理过程中,对源代码文件中的文件包含(include)、预编译语句(如宏定义define等)进行分析。
●接着调用cc1进行编译,这个阶段根据输入文件生成以.o为后缀的目标文件。
u b u n t u10.10建立Q T开发环境图文详解一、安装g++,u b u n t u默认是不带g++的,如果不安装的话,后面是无法进行桌面版的q t应用程序进行编译的,在终端中执行以下命令:sudo apt-get install g++二、安装arm-linux-gcc 3.3.2我们使用的是优龙公司提供的arm-linux-gcc 3.3.2交叉编译工具链(1)在/usr/local目录下arm目录,用于存放解压后的交叉编译工具链sise@sise:~/sisefile/crosschain$ cd /usr/local/sise@sise:/usr/local$ sudo mkdir arm(2)解压交叉编译工具链sise@sise:~$ cd sisefile/crosschain/sise@sise:~/sisefile/crosschain$ sudo tar -jxvf cross-3.3.2.tar.bz2 -C /usr/local/arm(3)查看目录sise@sise:~/sisefile/crosschain$ cd /usr/local/arm/3.3.2/sise@sise:/usr/local/arm/3.3.2$ ls(4)添加交叉编译工具链环境变量方法一:建立环境变量设置脚本:sise@sise:/usr/local/arm/3.3.2$ sudo gedit arm-linux-gcc-3.3.2-env.sh添加以下内容:# add my crosschain(arm-linux-gcc-3.3.2) pathexport PATH=/usr/local/arm/3.3.2/bin$:PATH使用arm-linux-gcc 3.3.2时,可以进入存放arm-linux-gcc-3.3.2-env.sh的目录,在终端执行以下命令:source arm-linux-gcc-3.3.2-env.sh这样就能使arm-linux-gcc-3.3.2-env.sh生效方法二:修改profile文件:sise@sise:/usr/local/arm/3.3.2$ sudo gedit /etc/profile添加以下内容:# add arm-linux-gcc 3.3.2 crosschain pathexport PATH=/usr/local/arm/3.3.2/bin:$PATH三、安装桌面版QT(1)为QT增加可执行属性sise@sise:/usr/local/arm/3.3.2$ cd /home/sise/sisefile/qt4/sise@sise:~/sisefile/qt4$ sudo chmod +x qt-sdk-linux-x86-opensource-2010.04.bin(2)执行qt的二进制文件:sise@sise:~/sisefile/qt4$ ./qt-sdk-linux-x86-opensource-2010.04.bin安装QT的过程:我修改了安装目录,具体目录如下:这里一步要注意了,这里有提示说如果我们要使用qt,需要安装以下的文件:提示内容:Apart from a C++ compiler, a number of development libraries need to be present to enable Qt Creator to build your Qt applications. On Debian and Ubuntu, use the following command in a terminal to make sure they are installed:sudo apt-get install libglib2.0-dev libSM-dev libxrender-dev libfontconfig1-dev libxext-devIf you're using QtOpenGL, you'll also need OpenGL development files. You can use the following command to find out which packages to install:sudo apt-get install libgl-dev libglu-dev(3)安装libgl-dev libglu-dev包:sise@sise:~/sisefile/qt4$ sudo apt-get install libglib2.0-dev libSM-dev libxrender-dev libfontconfig1-dev libxext-dev(4)安装libgl-dev libglu-dev包:sise@sise:/usr/local/arm/3.3.2$ sudo apt-get install libgl-dev libglu-dev提示没有libgl-dev包(5)安装libgl1-mesa-dev libglu-dev包:sise@sise:/usr/local/arm/3.3.2$ sudo apt-get install libgl1-mesa-dev libglu-dev至此桌面版的QT就安装完成了(6)添加环境变量添加在qcreator中环境变量(其实这一步时不需要的,因为在qt安装完成后,不需要再设置环境变量的)找到qmake(7)建立一个helloword工程测试:选择qt的版本向工程中添加一个c++文件:在main.cpp文件中添加以下代码:#include <QApplication>#include <QLabel>int main(int argc,char* argv[]){QApplication app(argc,argv);QLabel* label = new QLabel("hello world");label->show();return app.exec();}编译出现以下的窗口,证明我们已经完成了qt的安装:(8)编译qvfbqvfb是个X11模式下的qte的模拟器,没有开发板的同学可以利用qvfb来仿真qte的程序。
为了在Ubuntu下安装那令人悲催的GCC,小弟可是绞尽脑汁,连干三天。
当我搞清楚那些破软件m4,gmp mpfr,mpc等之间的依赖关系,依照强大的度娘提示下,安装了一遍又一边一边又一边·····它就是不成!shit!就当俺不得不做出抛弃GCC的念头之时,又是度娘!原来Ubuntu11.04自带GCC的!!!在此建议各位大虾,在安装GCC之前,先check一下你的Linux 中是否自带了GCC。
下面是小弟,在这悲催的三天所学到如何在Ubuntu下安装GCC的过程:安装过程第一步,从网站上下载文件gcc-4.6.0.tar.bz2第二步,将该文件拖至tmp目录下。
然后解压缩,在命令行tar vxjf gcc-4.1.1.tar.bz2,解压后你可以看到在tmp目录下有gcc-4.6.0文件第三步,对源文件进行配置,用命令mkdirgcc-buildcdgcc-build../gcc-4.6.0/configure --prefix=/usr/local/gcc-4.6.0 --enable-threads=posix --disable-checking--disable-multilib --enable-languages=c,c++编译错误提醒:提醒信息:configure: error: Building GCC requires GMP 4.2+, MPFR 2.3.1+ and MPC 0.8.0+.说明要安装gcc需要GMP、MPFR、MPC这三个库,于是又从网上下了三个库的压缩包。
由于MPFR依赖GMP,而MPC依赖GMP和MPFR,所以要先安装GMP,其次MPFR,最后才是MPC。
这里三个库我用的版本分别是gmp5.0.1,mpfr2.4.2和mpc0.8.1。
先开始安装GMP。
解压GMP的压缩包后,得到源代码目录gmp-5.0.1。
ubuntu14.04下arm-linux-gcc4.5.1的安装与配置
使⽤的是友善之臂mini6410⾃带光盘中的。
1.对新版本arm-linux-gcc-5.4.1进⾏解压(注意,下⾯的C是⼤写的)
tar zxvf arm-linux-gcc-4.5.1-v6-vfp-20101103.tgz -C/
解压完成后,会解压到/opt/FriendlyARM/toolschain/4.5.1/⽬录下。
(不加C的话,应该会解压到软件压缩包同⽂件夹下⾯。
加C,是解压到根⽬录。
)
2.设置环境变量
sudo vim /etc/profile
在最后⼀⾏加:
export PATH=$PATH:/opt/FriendlyARM/toolschain/4.5.1/bin
即将交叉编译⼯具链的路径加⼊。
完成后保存。
3.使⽤命令:source /etc/profile 使环境变量⽣效
4.检查是否将路径加⼊PATH中。
echo $PATH
如果成功的话,会出现刚才设置的变量地址。
5.测试是否成功
在终端⾥输⼊arm-linux-gcc-v,这个命令会显⽰arm-linux-gcc信息和版本,如果出现以下信息则表⽰安装成功
⾄此,安装结束。
(注意,如果上⾯4.5两步不成功的话,重启计算机试⼀下。
)。
1、将arm-linux-gcc-4.5.1-v6-vfp-20101103.gz放入linux的一个目录下,如路径:/tmp
2、将arm-linux-gcc-4.5.1-v6-vfp-20101103.gz解压在root用户下使用命令:#tar zxvf arm-linux-gcc-4.5.1-v6-vfp-20101103.gz -C \
3、解压完成后生成进入 /opt
目录,进入此目录。
路径如下:/opt/FriendARM/toolschain/4.5.1/bin 使用命令#arm-linux-gcc -v 查看是否提示版本信息。
正确显示就直接进入第5步。
否则进入第4步。
4、一般Ubuntu 32位系统都可以正确显示版本信息。
为了让库兼容,Ubuntu
13.04(64位)以前版本使用命令:# sudo apt-get install ia32-libs Ubuntu
13.04(64位)以后的版本使用命令:# sudo apt-get install libc6:i386
,用这两个命令来使交叉工具编译链兼容64位系统。
5、使用命令 #vi /etc/environment 在PATH 中添加arm-linux-
gcc所在bin目录:/opt/FriendARM/toolschain/4.5.1/bin,格式是追加“:”再加上目录。
例如
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/ga mes:/opt/FriendlyARM/toolschain/4.5.1/bin" 保存退出后,用命令#source
/etc/environment 刷新配置。
以后可使用两种交叉编译方法:使用简单方法:arm-linux-gcc 决定路径方法:/opt/FriendARM/toolschain/4.5.1/bin/arm-linux-gcc
6、在编译时如果出现库不存在。
可按如下方法:如题,ubuntu14.04-
64位编译Android4.4时出现问题:error while loading shared libraries: libz.so.1: cannot open shared object file: No such file or directory.
解决方法:很明显就是安装这个库所在包咯,可是我们怎么这知道
libz.so.1在哪个包呢?我们使用命令: apt-file search
来查找,首先安装,按如下命令: 1 sudo apt-get install apt-file
安装完以后系统会提示你update,如果没有提示,在终端输入如下命令: 1 sudo apt-file update apt-file 是用来查找某个命令或者某一个库所在的包的,具体用法如下:01 dell@dell-OptiPlex-7010:~$ apt-file search libz.so.1 02 lib32z1: /usr/lib32/libz.so.1 03 lib32z1: /usr/lib32/libz.so.1.2.3.3 04 lib32z1-dev: /usr/lib32/libz.so 05 lsb-build-base3: /usr/lib/lsb3/libz.so 06 zlib1g: /lib/libz.so.1 07 zlib1g: /lib/libz.so.1.2.3.3 08
zlib1g-dbg: /usr/lib/debug/lib/libz.so.1.2.3.3 09 zlib1g-dbg:
/usr/lib/debug/usr/lib32/libz.so.1.2.3.3 10 zlib1g-dev: /usr/lib/libz.so 使用apt-file search 查找你的库所在包就行了,右边的是匹配你的库,左边的是你查的库所在的包,所以最后安装对应的包就行了。
1 sudo apt-get install lib32z1
如果只为解决问题,只需上面这一条命令就ok了!。