为什么为什么我用谷歌浏览器器上不了谷歌啊

请问ubuntu12.04下如何切换gcc版本_linux吧_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:162,805贴子:
请问ubuntu12.04下如何切换gcc版本收藏
我系统里面4.6和4.7还有最新的4.8版本我都有,但默认的还是4.6版本,我想问下如何切换到4.8版本
在职研究生报名入口,在职研究生名校报名
重新做个链接
1、安装可以自行编译或者安装本地deb包,也可以添加其他前后版本的源用apt-get安装2、Debian版本替换机制(以gcc-4.1、gcc-4.4为例)首先将不同版本加入一个替换组:sudo update-alternatives --install
usr/bin/gcc gcc /usr/bin/gcc-4.1 41 --slave /usr/bin/cpp cpp /usr/bin/cpp-4.1 --slave /usr/bin/g++ g++ /usr/bin/g++-4.1sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.4 44 --slave /usr/bin/cpp cpp /usr/bin/cpp-4.4 --slave /usr/bin/g++ g++ /usr/bin/g++-4.4以上将/usr/bin/gcc-4.1和/usr/bin/gcc-4.4设为gcc替换组的两个替换项,分别指定其优先级为41和44。还指定了cpp和g++为从替换组,与gcc同时替换。3、切换版本:sudo update-alternatives --config gcc或者直接指定:sudo update-alternatives --set gcc /usr/bin/gcc-4.1查看所有替换项:sudo update-alternatives --list gcc
用ln -s重新做一个连接就可以了
登录百度帐号推荐应用
为兴趣而生,贴吧更懂你。或手动安装特定版本的gcc编译器
已有 2219 次阅读
|个人分类:|系统分类:|关键词:gcc 手动 源码 编译
Linux发行版中一般预装了gcc编译器,版本随系统不同而不同,有时候不想用(或者是不能用)系统默认的gcc编译器,就需要自己编译特定版本的gcc编译器。这里以在Ubuntu14.04环境(默认gcc为4.8.2)安装gcc4.6.3为例,记录一下安装过程。整个安装过程很繁琐且漫长,计入发现坑以及填坑的时间,至少需要两个小时(也与机器有关),总之耐心。。。期间参考了以下网站:&需要提前准备好的软件有:系统自带的gcc(如果没有,需要从软件库中通过apt-get安装)、m4、gmp、mpfr、mpc。gcc-4.6.3源码和gmp、mpfr、mpc的源码都可以在gcc官网中找到,gcc在release文件夹中,其他的在infrastructure文件夹中。因为这几个软件之间相互有依赖关系,故它们的安装顺序不要打乱。1、安装m4sudo apt-get install m4(上面命令可能提示找不到m4,此时可以更换软件源试试,也可以使用新立得软件包管理器synpatic安装)2、安装gmptar -xjvf gmp-4.3.2.tar.bz2cd gmp-4.3.2./configure --prefix=/usr/local/gmpmakesudo make install3、安装mpfrtar -xjvf mpfr-2.4.2.tar.bz2cd mpfr-2.4.2./configure --prefix=/usr/local/mpfr--with-gmp=/usr/local/gmpmakesudo make install4、安装mpctar -xzvf mpc-0.8.1.tar.gzcd mpc-0.8.1./configure--prefix=/usr/local/mpc --with-gmp=/usr/local/gmp --with-mpfr=/usr/local/mpfrmake sudo make install5、配置库路径将三个软件的库文件加入动态链接库中:vim ~/.bashrcexport LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/gmp/lib: /usr/local/mpfr/lib:/usr/local/mpc/lib &保存以后:source ~/.bashrc将三个软件的库文件加入共享链接库中:vim /etc/ld.so.conf/usr/local/mpc/lib &/usr/local/gmp/lib &/usr/local/mpfr/lib &保存以后:sudo /sbin/ldconfig &6、安装gcc-4.6.3cd gcc-4.6.3./configure --prefix=/usr/local/gcc-4.6.3 --enable-threads=posix --disable-checking --disable-multilib & --enable-languages=c,c++ --with-gmp=/usr/local/gmp --with-mpfr=/usr/local/mpfr --with-mpc=/usr/local/mpcmakesudo make install&在make中有可能出现以下错误:(1)/usr/include/features.h:374:25: fatalerror: sys/cdefs.h: 没有那个文件或目录这是因为在64位机器上生成32位的编译代码,因此需要安装32位的库:sudo apt-get install gcc-multilibsudo apt-get install g++-multilib(2)/usr/bin/ld: cannot find crti.o: No suchfile or directory此时需要修改LD_LIBRARY_PATH变量,即在.bashrc中设置:export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/lib/x86_64-linux-gnu并且做一个链接:sudo ln -s /usr/lib/x86_64-linux-gnu /usr/lib64这里的路径与机器位数有关,64位为x86_64,32位为i386。&7、配置gcc用gcc-4.6.3替换原来的gcc,需要将原来的gcc屏蔽掉:sudo mv/usr/bin/gcc /usr/bin/gcc-4.8.2sudo mv/usr/bin/g++ /usr/bin/g++-4.8.2&然后将gcc-4.6.3的bin路径加入到环境变量中:vim ~/.bashrcexportPATH=$PATH:/usr/local/gcc-4.6.3/bin
转载本文请联系原作者获取授权,同时请注明本文来自亓欣波科学网博客。链接地址:
上一篇:下一篇:
当前推荐数:0
评论 ( 个评论)
扫一扫,分享此博文
作者的其他最新博文
热门博文导读
Powered by
Copyright &gcc for linux下载|GNU Compiler Collection(gcc编译器)下载 4.7.0 linux版_ - pc6下载站出处:http://www.geekfan.net
Stack smashing是堆栈缓冲区溢出(stack buffer overflow)的一个时髦称谓。它表示利用代码中存在的缓冲区溢出bug而发起的攻击。在早期,这完全是程序员的责任,他们要确保代码中不存在缓冲区溢出的问题。但是随着时间推移,技术的不断发展,现在像gcc这样的编译器已经有编译选项用来确保缓冲区溢出问题不被攻击者利用来破坏系统或者程序。
有一次当我试图重现一个缓冲区溢出的问题时我才了解到这些编译选项。我是在Ubuntu 12.04上进行试验的,gcc版本为4.6.3。我所做的很简单: #include &stdio.h&
#include &string.h&
int main(void)
int len = 0;
char str[10] = {0};
printf(&\n Enter the name \n&);
gets(str); // Used gets() to cause buffer overflow
printf(&\n len = [%d] \n&, len);
= strlen(str);
printf(&\n len of string entered is : [%d]\n&, len);
在上面的代码中,我故意使用gets()函数来接收字符串,之后计算字符串的长度,并输出到标准输出—默认是屏幕。这里的想法是输入超过10个长度的字符串,由于gets()函数并不检测数组边界,所以它将会把字符写入到10个以外的地址,这样就会发生缓冲区溢出。我运行程序之后的结果如下所示: $ ./stacksmash
Enter the name
TheGeekStuff
len of string entered is : [12]
*** stack smashing detected ***: ./stacksmash terminated
======= Backtrace: =========
/lib/i386-linux-gnu/libc.so.6(__fortify_fail+0x45)[0xb76e4045]
/lib/i386-linux-gnu/libc.so.6(+0x103ffa)[0xb76e3ffa]
./stacksmash[0x8048548]
/lib/i386-linux-gnu/libc.so.6(__libc_start_main+0xf3)[0xb75f94d3]
./stacksmash[0x8048401]
======= Memory map: ========
49000 r-xp :06 528260
/home/himanshu/practice/stacksmash
4a000 r--p :06 528260
/home/himanshu/practice/stacksmash
4b000 rw-p :06 528260
/home/himanshu/practice/stacksmash
5b000 rw-p :00 0
b75af000-b75cb000 r-xp :06 787381
/lib/i386-linux-gnu/libgcc_s.so.1
b75cb000-b75cc000 r--p :06 787381
/lib/i386-linux-gnu/libgcc_s.so.1
b75cc000-b75cd000 rw-p :06 787381
/lib/i386-linux-gnu/libgcc_s.so.1
b75df000-b75e0000 rw-p :00 0
b75e0 r-xp :06 787152
/lib/i386-linux-gnu/libc-2.15.so
b84000 ---p 001a 787152
/lib/i386-linux-gnu/libc-2.15.so
b86000 r--p 001a 787152
/lib/i386-linux-gnu/libc-2.15.so
b87000 rw-p 001a 787152
/lib/i386-linux-gnu/libc-2.15.so
b8a000 rw-p :00 0
b9e000 rw-p :00 0
b779e000-b779f000 r-xp :00 0
b779f000-b77bf000 r-xp :06 794147
/lib/i386-linux-gnu/ld-2.15.so
b77bf000-b77c0000 r--p :06 794147
/lib/i386-linux-gnu/ld-2.15.so
b77c0 rw-p :06 794147
/lib/i386-linux-gnu/ld-2.15.so
bfaec000-bfb0d000 rw-p :00 0
Aborted (core dumped)
令我惊讶的是,运行环境居然可以检测到缓冲区溢出的情况。你可以在输出信息上看到“检测到栈溢出”(stack smashing detected)的信息。这促使我去探索缓冲区溢出是如何被检测到的。
当我探索原因时,我发现了gcc的一个编译选项:-fstack-protector,以下是关于这个选项的描述:
-fstack-protector
启用该选项后编译器会产生额外的代码来检测缓冲区溢出,例如栈溢出攻击。这是通过在有缺陷的函数中添加一个保护变量来实现的。这包括会调用到alloca的函数,以及具有超过8个字节缓冲区的函数。当执行到这样的函数时,保护变量会得到初始化,而函数退出时会检测保护变量。如果检测失败,会输出一个错误信息并退出程序。
!注意:在Ubuntu 6.10以及之后的版本中,如果编译时没有指定-fno-fstack-protector, -nostdlib或者-ffreestanding选项的话,那么这个选项对于C,C++,ObjC,
ObjC++语言默认是启用的。
所以,你会发现gcc已经使用插入附加代码的方式来检测缓冲区溢出的问题。我想到的下一个问题是,我从来没有在编译时加入这个编译选项,这个功能是怎样启用的?然后我读到最后两行,在Ubuntu6.10之后的版本上,此功能已经默认启用了。
下一步,我决定使用-fno-fstack-protector选项来取消这个栈溢出检测功能。我对同样的代码编译之后运行,使用和之前一样输入,下面是我的做法以及运行结果: $ gcc -Wall -fno-stack-protector stacksmash.c -o stacksmash
$ ./stacksmash
Enter the name
TheGeekStuff
len = [26214]
len of string entered is : [12]
可以看到,一旦使用了这个编译选项(根据前面的编译选项说明,这里-fstack-protector是不会默认开启的),使用相同的输入,运行环境根本无法检测到缓冲区溢出的问题,len的值已经被破坏了。
。相关 [利用 gcc 编译] 推荐:
- 极客范 - GeekFan.net
Stack smashing是堆栈缓冲区溢出(stack buffer overflow)的一个时髦称谓. 它表示利用代码中存在的缓冲区溢出bug而发起的攻击. 在早期,这完全是程序员的责任,他们要确保代码中不存在缓冲区溢出的问题. 但是随着时间推移,技术的不断发展,现在像gcc这样的编译器已经有编译选项用来确保缓冲区溢出问题不被攻击者利用来破坏系统或者程序.
- allengaller - Solidot
Phoronix利用Phoronix Test Suite测试了GCC 4.2.1、4.3.0、4.4.0、4.5.0、GCC 4.6.0 开发预览版,以及LLVM-GCC 2.8、LLVM DragonEgg 2.8和Clang 2.8编译器的编译性能. 测试结果显示,与新贵LLVM-GCC和Clang相比,有二十多年历史的GCC编译器确实比较慢 虽然LLVM和Clang的新版本提供了完整的C++支持,并且能编译Linux kernel,但它们目前还达不到取代成熟GCC的程度,Clang或DragonEgg还无法完成某些常见任务的编译,性能也未能如意.
- CSDN博客推荐文章
http://ftp.gnu.org/gnu/gcc/gcc-4.5.1/gcc-4.5.1.tar.bz2. 浏览:
http://ftp.gnu.org/gnu/gcc/gcc-4.5.1/. 查看Changes:
http://gcc.gnu.org/gcc-4.5/changes.htm.
- Chris - Solidot
Lwn.net报道,GCC(GNU Compiler Collection,GNU编译器套装)将从一个C语言实现变成C++语言实现. Mark Mitchell在官方邮件列表上宣布,GCC指导委员会和自由软件基金会(FSF)同意GCC本身的代码将使用C++语言编写. 此举是为了向用户提供一个更好的编译器,而不是因为C++代码库本身的原因.
- CSDN博客推荐文章
编译过程(从源代码到可执行文件). 预处理:gcc -Ehello.c -o hello.i
//生成预处理后的源文件. 汇编:gcc -S hello.i //生成hello.s. 目标代码生成:gcc -c hello.s //生成hello.o. 连接:gcc hello.o -o hello //生成可以行文件hello.
ESR(Eric S.Raymond)在GCC邮件列表上发贴预言,LLVM/Clang编译器将在3到5年内威胁到GCC的统治地位,认为GCC编译器的反插件政策正成为一大障碍. 虽然Clang尚未达到GCC的成熟度,但在某些方面它拥有比GCC更出色的特性,例如错误信息. ESR建议GCC应允许非自由的插件.
- 博客园_iTech's Blog
http://www./articles/linux-about-gcc-glibc-and-binutils-the-relationship-between-modules/. 一、关于gcc、glibc和binutils模块之间的关系.   1、gcc(gnu collect compiler)是一组编译工具的总称.
- CSDN博客综合推荐文章
本文以工程
libtest为例来说明用gcc创建和使用静态库、动态库的过程. libtest工程目录结构如下:. libtest/include/hello.h文件内容:. libtest/lib/hello.c文件内容:. libtest/src/main.c文件内容:. 1,进入libtest/lib目录,执行命令:.
- CSDN博客推荐文章
上一篇文章介绍了在windows下如何创建静态链接库和动态链接库(
http://blog.csdn.net/love_cppandc/article/details/8502773),这一篇介绍一下在linux下如何创建静态链接库和动态链接库. 在linux下,静态库文件是.o结尾,动态库文件是.so结尾.
- zyhong17 - Wow! Ubuntu
Linux 内核经过漫长的 2.6 版本之后终于主版本+1了,现在已放出 3.0 RC4 版,最近又有消息称 3.0 会比 2.6.39 快,喜欢折腾的你又不介意当小白鼠的话不妨试试下载 Linux Kernel 3.0 的源代码自己编译. 下面简单讲一下在 Ubuntu 10.10 编译 Linux Kernel 3.0 RC4 的过程.
坚持分享优质有趣的原创文章,并保留作者信息和版权声明,任何问题请联系:@。

我要回帖

更多关于 为什么我用谷歌浏览器 的文章

 

随机推荐