初次小结,有错勿怪……
因为gcc 4.1之后的版本(http://www.cnblogs.com/napoleon_liu/archive/2011/02/14/1953983.html),对于栈帧中变量的分配进行优化,使得不再遵循先定义的变量高地址,后定义的低址地;而是从高地址向低地址依次为:后定义的数组、先定义的数组、后定义的变量、先定义的变量。
故此决定安装较老版本的gcc,这次经历也让我感到了linux下安装个东西实在是……#¥……#@#¥%
http://archive.ubuntu.com/ubuntu/pool/universe/g/gcc-3.3/
先下载gcc-3.4_3.4.6-6ubuntu5_i386.deb,
然后用 sudo dpkg -i xxx.deb命令安装
安装过程中,缺少什么依赖关系装什么
如果有相互依赖的关系,用sudo dpkg --force-depends -i xxx.deb命令安装
然后
ls /usr/bin/gcc* -ll
会看到两个版本的gcc
用 ln -sf /usr/bin/gcc-3.4 /usr/bin/gcc 命令将gcc3.4缺省gcc
然后随意写个helloworld程序,尝试编译一下 gcc -g helloworld.c
如果不能通过,哈哈~你跟我一样倒霉~

在Ubuntu 11.10上,由于GCC 4.6的栈帧优化导致问题,博主选择安装GCC 3.4.6。通过下载deb包,处理依赖关系并强制安装,最后设置软链接使得GCC 3.4.6成为默认版本。过程中遇到双版本GCC导致的问题,需要调整crt1.o和libgcc_s.so的链接。
最低0.47元/天 解锁文章
4727





