-
更新linux gcc版本到gcc 4.4.2
2010-01-17 16:17:00更新linux gcc版本到gcc 4.4.2首先需要准备需要材料:gcc4.4.2版需要安装gmp4.2.0+和mpfr2.3.0+,到GMP的网站(http://gmplib.org/)上下载gmp-4.3.1.tar.gz 和mprf的网站(http://www.mpfr.org/)上下载mpfr-2.4.2....更新linux gcc版本到gcc 4.4.2
首先需要准备需要材料:gcc4.4.2版需要安装gmp4.2.0+和mpfr2.3.0+,到GMP的网站(http://gmplib.org/)上下载gmp-4.3.1.tar.gz 和mprf的网站(http://www.mpfr.org/)上下载mpfr-2.4.2.tar.gz
1. 安装gmp
# wget ftp://ftp.gmplib.org/pub/gmp-5.0.0/gmp-5.0.0.tar.bz2
# tar -zxvf gmp-4.3.2.tar.gz
# cd gmp-4.3.2
# ./configure
# make
# make check
这一步用来查看有没有文件不匹配或缺失,然后安装:
# make install2. 安装mpfr
# wget http://www.mpfr.org/mpfr-current/mpfr-2.4.2.tar.gz
# tar -zxvf mpfr-2.4.2.tar.gz
# cd mpfr-2.4.2
配置:
# ./configure --with-gmp-include=/usr/local/include --with-gmp-lib=/usr/local/lib
# make
# make check
接下来安装:
# make install
打包成tar.gz, 需要xz(LZMA)支持; http://tukaani.org/xz/ 提供下载
# make dist准备工作完成,以下是gcc的安装与更新.
3. 编译安装gcc
从GCC官网(http://gcc.gnu.org/)下载资源gcc源代码, 当前gcc版本为gcc-4.4.2.
# wget ftp://ftp.dti.ad.jp/pub/lang/gcc/releases/gcc-4.4.2/gcc-4.4.2.tar.gz
# tar xzvf gcc-4.4.2.tar.gz建立目标目录, 目标目录是用来存放编译结果的地方
# mkdir gcc-build
# cd gcc-build配置gcc, 这里只选择了c,c++.
# ../gcc-4.4.2/configure --enable-shared --enable-threads=posix --enable-checking=release --with-system-zlib --enable-__cxa_atexit --disable-libunwind-exceptions --enable-libgcj-multifile --enable-languages=c,c++,objc,obj-c++ --with-cpu=generic --disable-dssi --enable-plugin --prefix=/usr/local/gcc-4.4.2 --with-gmp=/usr/local --with-mpfr=/usr/local
编译
# make安装, 需要管理员的权限,如为普通用户使用su 命令切换到root用户.
# make install至此,GCC 就安装 完成了.
4. 环境设置
将gcc的头文件和库文件指向新的版本
cd $HOME
ls -a
sudo vi .bashrc向其中添加以下语句。
GCCHOME=/usr/local/gcc-4.4.2
PATH=$GCCHOME/bin:$PATH
LD_LIBRARY_PATH=$GCCHOME/lib
export GCCHOME PATH LD_LIBRARY_PATH5. 测试
重新引导,查看gcc版本
# source $HOME/.bashrc
# # which gcc
/usr/local/gcc-4.4.2/bin/gcc
会显示gcc新的路径为 /usr/local/gcc-4.4.2# gcc -v
Using built-in specs.
Target: i686-pc-linux-gnu
Configured with: ../gcc-4.4.2/configure --enable-shared --enable-threads=posix --enable-checking=release --with-system-zlib --enable-__cxa_atexit --disable-libunwind-exceptions --enable-libgcj-multifile --enable-languages=c,c++,objc,obj-c++ --with-cpu=generic --disable-dssi --enable-plugin --prefix=/usr/local/gcc-4.4.2 --with-gmp=/usr/local --with-mpfr=/usr/local
Thread model: posix
gcc version 4.4.2 (GCC)显示gcc的版本为4.4.2
-
linux gcc 头文件搜索路径
2012-06-30 16:10:58linux gcc 头文件搜索路径 2011-02-15 13:40 423人阅读 评论(0) 收藏 举报 一、头文件 gcc 在编译时寻找所需要的头文件 : ※搜寻会从-I开始 ※然后找gcc的环境变量 C_INCLUDE_PATH,C...一、头文件
gcc 在编译时寻找所需要的头文件 :
※搜寻会从-I开始
※然后找gcc的环境变量 C_INCLUDE_PATH,CPLUS_INCLUDE_PATH,OBJC_INCLUDE_PATH
※再找内定目录
/usr/include/usr/local/include
/usr/lib/gcc-lib/i386-linux/2.95.2/include
/usr/lib/gcc-lib/i386-linux/2.95.2/../../../../include/g++-3
/usr/lib/gcc-lib/i386-linux/2.95.2/../../../../i386-linux/include
库文件但是如果装gcc的时候,是有给定的prefix的话,那么就是
/usr/includeprefix/include
prefix/xxx-xxx-xxx-gnulibc/include
prefix/lib/gcc-lib/xxxx-xxx-xxx-gnulibc/2.8.1/include
二、库文件
编译的时候:
※gcc会去找-L
※再找gcc的环境变量LIBRARY_PATH
※再找内定目录 /lib:/usr/lib: /usr/local/lib:这是当初compile gcc时写在程序内的三、运行时动态库的搜索路径
1、在配置文件/etc/ld.so.conf中指定动态库搜索路径
2、通过环境变量LD_LIBRARY_PATH指定动态库搜索路径(当通过该环境变量指定多个动态库搜索路径时,路径之间用冒号":"分隔)
3、在编译目标代码时指定该程序的动态库搜索路径(还可以在编译目标代码时指定程序的动态库搜索路径。
这是通过gcc 的参数"-Wl,-rpath,"指定。当指定多个动态库搜索路径时,路径之间用冒号":"分隔
4、默认的动态库搜索路径/lib /usr/lib
可以通过执行可执行文件pos得到的结果不同获知其搜索到了哪个动态库,从而获得第1个动态库搜索顺序,然后删除该动态库,
再执行程序pos,获得第2个动态库搜索路径,再删除第2个被搜索到的动态库,
如此往复,将可得到Linux搜索动态库的先后顺序。
程序pos执行的输出结果和搜索到的动态库的对应关系如表1所示
程序pos输出结果 使用的动态库 对应的动态库搜索路径指定方式
./ ./libpos.so 编译目标代码时指定的动态库搜索路径
/root/test/env/lib /root/test/env/lib/libpos.so 环境变量LD_LIBRARY_PATH指定的动态库搜索路径
/root/test/conf/lib /root/test/conf/lib/libpos.so 配置文件/etc/ld.so.conf中指定的动态库搜索路径
/lib /lib/libpos.so 默认的动态库搜索路径/lib
/usr/lib /usr/lib/libpos.so 默认的动态库搜索路径/usr/lib
动态库的搜索路径搜索的先后顺序是:
1.编译目标代码时指定的动态库搜索路径;
2.环境变量LD_LIBRARY_PATH指定的动态库搜索路径;3.配置文件/etc/ld.so.conf中指定的动态库搜索路径;
4.默认的动态库搜索路径/lib /usr/lib。 -
Ubuntu12.4 64位 安装 arm linux gcc 4.3.2
2014-01-25 12:01:57下载arm linux gcc 4.3.2 http://pan.baidu.com/share/link?shareid=1575352696&uk=2754759285&fid=2185900163 二.安装arm linux gcc 4.3.2 1.复制arm-linux-gcc-4.3.2.tgz到根目录下tmp文件夹里 2.将文件解压到/...一.下载arm linux gcc 4.3.2
http://pan.baidu.com/share/link?shareid=1575352696&uk=2754759285&fid=2185900163
二.安装arm linux gcc 4.3.2
1.复制arm-linux-gcc-4.3.2.tgz到根目录下tmp文件夹里
2.将文件解压到/usr/local目录下
解压命令tar xvzf arm-linux-gcc-4.3.2 -C /
注意以上命令必须要有-C而且是大写的,还有就是C与/之间有个空格解压后的目录结构是这样的:/usr/local/arm/4.3.2
3.将路径/usr/local/arm/4.3.2/bin添加到环境变量PATH中
修改/root/.bashrc文件
#vim /root/.bashrc
在文件后面加上以下代码
export PATH=$PATH:/usr/local/arm/4.3.2/bin
为了保证成功还可以编辑/etc/profile文件
#vim /etc/profile
也是在后面加上以下代码
PATH=$PATH:/usr/local/arm/4.3.2/bin
保存后再执行命令
#source /etc/profile
使profile文件生效
4.测试安装是否成功
1)重启系统,输入命令
#arm-linux-gcc -v
如果安装成功将会输出 arm-linux-gcc的版本号
2)编译Hello World程序,测试交叉工具链
写下下面的Hello World程序,保存为hello.c
#include <stdio.h>
int main()
{
printf("Hello World!\n");
return 0;
}
执行下面的命令:
# arm-linux-gcc -o hello hello.c
源程序有错误的话会有提示,没有任何提示的话,就是通过了,就可以下载到ARM目标板上运行了!
接着可以输入filehello的命令,查看生成的hello文件的类型,要注意的是生成的可执行文件只能在ARM体系下运行,不能在其于X86的PC机上运行。三.遇到的问题
如果安装的64位的Ubuntu的话,执行
#arm-linux-gcc -v
会遇到/usr/local/arm/4.3.2/bin/arm-linux-gcc: line 3: /usr/local/arm/4.3.2/bin/arm-none-linux-gnueabi-gcc: No such file or directory的问题
这时只要安装32位的兼容库就行了
#sudo apt-get install libncurses5:i386
在64位下,gcc默认编译代码位64位的,但是,如果你想编译位的,可以用gcc -m32选项,来设置。
不过,不幸的是,会出现错误,说找不到 /usr/include/features.h文件什么的。google一下,发现用这种方法:
sudo apt-get install g++-multilib
就可以了。
四.参考资料
http://www.360doc.com/content/11/1211/13/1317564_171441865.shtml
http://blog.csdn.net/doon/article/details/8053174
http://blog.csdn.net/fulinus/article/details/8648384
http://blog.sina.com.cn/s/blog_8f396e3701010hcx.html
-
linux gcc 预编译
2010-07-06 18:31:00linux gcc 预编译 命令:gcc -E test.c -o test.i 预编译主要完成以下功能: 1.删除所有的注释“//”和“/**/”; 2.删除所有的“#define”,展开所有的宏定义; 3.处理所有的...linux gcc 预编译
命令:gcc -E test.c -o test.i预编译主要完成以下功能:
1.删除所有的注释“//”和“/**/”;
2.删除所有的“#define”,展开所有的宏定义;
3.处理所有的条件预编译指令;
4.处理“#include”预编译指令,将被包含的文件插入到该预编译指令的位置,这一过程是递归进行的;
5.添加行号和文件名标识;例:
源文件(test.c)如下:
#include <stdio.h>
#define MY_SIZE 1000000
//this is a test
/*this
is
a
test
!
*/int main(int argc,char* argv[])
{
char *test=NULL;
while(1)
{
test = NULL;
test = new char[MY_SIZE];
if(test == NULL)
{
printf("I am wrong/n");
break;
}
printf("a../n");
}
printf("I am ok!/n");
return 0;
}预编译后文件内容(test.i)如下:
。。。//此处略过一大段头文件插入内容
extern int ftrylockfile (FILE *__stream) __attribute__ ((__nothrow__)) ;
extern void funlockfile (FILE *__stream) __attribute__ ((__nothrow__));
# 850 "/usr/include/stdio.h" 3 4# 2 "abc.c" 2
# 13 "abc.c"
int main(int argc,char* argv[])
{
char *test=((void *)0);
while(1)
{
test = ((void *)0);
test = new char[1000000];
if(test == ((void *)0))
{
printf("I am wrong/n");
break;
}
printf("a../n");
}
printf("I am ok!/n");
return 0;
} -
Linux gcc和gdb程序调试用法
2013-03-09 15:38:17Linux gcc和gdb程序调试用法 gcc一般调试格式: gcc -Wall -o test test.c // -wall 显示程序错误详细信息 gcc -v // 显示gcc的版本 gcc -o{1,2,3} test test.c // 1,2,3三个级别的优化,优化级别越高编译的... -
linux gcc编译常用命令之gun工具链的使用
2017-01-08 23:25:59linux gcc编译常用命令之gun工具链的使用 Binutils源码工具包中的常用命令: gcc g++ ld ldd nm strings readelf addr2line strip objcopy as ar gdb 1、gcc/g++编译器 示例: gcc -c test.c gcc - -
linux gcc 宏 显示 (linux c中判断gcc版本)
2019-06-18 15:01:15root@test-desktop:~# gcc -E -dM - </dev/null #define __DBL_MIN_EXP__ (-1021) #define __FLT_MIN__ 1.17549435e-38F #define __CHAR_BIT__ 8 #define __WCHAR_MAX__ 2147483647 #define __GCC_HAVE_SYNC_... -
Linux GCC 64位编程技巧
2010-10-17 19:48:00Linux GCC 64位编程技巧,项目要用到,上网查了一下,资料虽多,但零零散散,干脆自己整理一份,共享给大家。 Windows和Linux类似,但有的细节还需要大家自己查了。 -
Linux gcc编译命令
2018-11-19 19:40:57gcc -o 指定文件名 文件(gcc -o hello hello.c) 这样我们就编译好了这个代码,重新打开文件夹(一般是home)会发现多了一个hello文件 然后我们在命令行输入: ./文件名(./hello) 就能得到输出( “.” ... -
linux gcc版本如何升级到gcc4.8.2
2017-09-29 14:12:27一、简易安装 操作环境 Red-hat 6.2 64bit,yum安装自带版本...1.1 获取安装包并解压wget http://ftp.gnu.org/gnu/gcc/gcc-4.8.2/gcc-4.8.2.tar.bz2 tar -jxvf gcc-4.8.2.tar.bz2当然,http://ftp.gnu.org/gnu/gcc 里 -
linux gcc/g++编译安装 gcc7.5.0 c++17
2019-11-20 16:08:51linux C++17编译:编译指定参数 -std=c++17 编译指定参数 -std=c++17 例:g++ -std=c++17 main.cpp #如果编译器不支持c++17就会提示:g++: error: unrecognized command line option ‘-std=c++17’ 方法: 1.下载高... -
linux gcc和g++降级方法
2019-08-26 18:41:50在linux中编译一些代码时,会遇到gcc 和g++版本过高,或者版本不一致的问题,因此会将gcc或g++降级。 以从gcc - 5.4或g++ - 5.4降级到4.8版本为例,具体方法如下: 当前版本查询:  ... -
linux gcc、gcc-c环境安装
2018-03-29 16:59:58系统环境 gun/linux 2013 x64权限:root系统无法上网只能通过rpm包方式安装所有资源下载地址https://download.csdn.net/download/qq_25713179/10316034全部上传到/usr/local/src目录执行以下命令rpm -Uvh ppl-0.10.2... -
[转]Linux CC与Linux GCC的区别概括介绍
2009-02-19 20:55:00Linux c与gcc的区别 Linux CC与Linux GCC的区别概括介绍。从名字上看,老的unix系统的CC程序叫做C Compiler。但GCC这个名字按GNU的说法叫做Gnu Compiler Collection。因为gcc包含很多编译器(C, C++, Objective-C, ... -
Linux GCC lib库相互引用,互相依赖(交叉引用)链接解决办法
2018-08-08 10:33:45Linux GCC中,如果lib a依赖b,b又依赖a,链接的时候无论a放在前,还是b放在前,都会提示unrefrence。 解决办法就是: 链接的时候a链接两次,即: -la -lb -la... -
Linux GCC简明教程(编写c语言程序)
2020-05-07 19:35:34市面上常见的 Linux 都是发行版本,典型的 Linux 发行版包含了 Linux 内核、桌面环境(例如 GNOME、KDE、Unity 等)和各种常用的必备工具(例如 Shell、GCC、VIM、Firefox 等),国内使用较多的是 CentOS、Ubuntu... -
eclipse中没有MinGW GCC/Cross GCC/Cygwin GCC/linux GCC/等编译器
2018-04-24 21:14:30gt;... New CDT project wizard标签:查看GCC列表不存在,但在最下边有个选项:Show project types and toolchains only if they are supported on the platform,去掉勾选,则出现这些列表!注:显... -
arch linux gcc-multilib等32位兼容lib target not found 解决
2016-10-30 16:53:04问题arch linux gcc-multilib等32位兼容lib target not found (各种lib32-xxx等等)问题原因没有添加pacman的multilib支持问题解决sudo vim /etc/pacman.conf #找到[multilib],把这一行和它下一行的注释去掉 sudo ... -
Armlinux GCC 交叉编译工具
2009-05-30 14:32:00Armlinux GCC 交叉编译工具可以通过以下方式获取:1. 通过现有GNU tools 编译GNU tools源码来获取交叉编译工具。这种方法需要对GNU tools各个源码之间的版本匹配。2.使用Dan Kegel开发的cross-tool脚本来编译源码。 ... -
Linux gcc 多文件编译
2017-11-18 11:24:54通常整个程序是由多个源文件组成的,相应地也就形成了多个编译单元,使用GCC能够很好地管理这些编译单元。假设有一个由test1.c和 test2.c两个源文件组成的程序,为了对它们进行编译,并最终生 成可执行程序test,... -
Linux GCC常用命令
2014-12-03 14:27:45GCC 的意思也只是 GNU C Compiler 而已。经过了这么多年的发展,GCC 已经不仅仅能支持 C 语言;它现在还支持 Ada 语言、C++ 语言、Java 语言、Objective C 语言、Pascal 语言、COBOL语言,以及支持函数式编程和逻辑... -
eclipse中没有MinGW GCC/Cross GCC/Cygwin GCC/linux GCC/MacOSX GCC/MinGW GCC/Solaris GCC(编译器)
2015-10-19 22:39:46问题:Eclipse环境安装C/C++插件CDT用来编写:C、C++、Objective-C、Fortran、Java、Ada和Go语言的程序! 描述:安装MinGW[C/C++编译平台],GDB[C/C++调试平台]成功了,但是创建... MinGW GCC/Cross GCC/Cygwin GCC/lin -
linux gcc常用编译选项总结
2018-03-28 15:57:31对于编译源码,Makefile中会用到大量的gcc选项,所以熟悉gcc编译选项对于学习Makefile至关重要。 -c:只激活预处理,编译,和汇编,也就生成obj文件-S:只激活预处理和编译,就是指把文档编译成为汇编代码。-E:只激活...