如何降低gcc版本解决gcc版本冲突

拒绝访问 | www.wangchao.net.cn | 百度云加速
请打开cookies.
此网站 (www.wangchao.net.cn) 的管理员禁止了您的访问。原因是您的访问包含了非浏览器特征(4cc0-ua98).
重新安装浏览器,或使用别的浏览器博客分类:
编译MTK6516的Android代码时,需要用到Gcc_4.1.2(MTK指定了这个版本的Gcc)。
而我的ubuntu10.04自带版本为Gcc_4.4.3。
处理步骤如下:
1. 首先下载所需的文件,我下载deb包,地址http://archive.ubuntu.com/ubuntu/pool/universe/g/gcc-4.1/
2. Gcc deb包存在依赖关系,安装顺序如下
32位安装GCC4.1.2
sudo dpkg -i gcc-4.1-base_4.1.2-27ubuntu1_i386.deb
sudo dpkg -i cpp-4.1_4.1.2-27ubuntu1_i386.deb
sudo dpkg -i cpp-4.1-doc_4.1.2-27ubuntu1_all.deb
sudo dpkg -i gcc-4.1_4.1.2-27ubuntu1_i386.deb
sudo dpkg -i gcc-4.1-multilib_4.1.2-27ubuntu1_i386.deb
sudo dpkg -i gcc-4.1-doc_4.1.2-27ubuntu1_all.deb
/*两个deb要一起输入,他们相互依赖,让系统自己处理*/
sudo dpkg -i g++-4.1_4.1.2-27ubuntu1_i386.deb libstdc++6-4.1-dev_4.1.2-27ubuntu1_i386.deb
sudo dpkg -i g++-4.1-multilib_4.1.2-27ubuntu1_i386.deb
64位安装
sudo dpkg -i gcc-4.1-base_4.1.2-27ubuntu1_amd64.deb
sudo dpkg -i cpp-4.1_4.1.2-27ubuntu1_amd64.deb
sudo dpkg -i cpp-4.1-doc_4.1.2-27ubuntu1_all.deb
sudo dpkg -i gcc-4.1_4.1.2-27ubuntu1_amd64.deb
sudo dpkg -i gcc-4.1-multilib_4.1.2-27ubuntu1_amd64.deb
sudo dpkg -i gcc-4.1-doc_4.1.2-27ubuntu1_all.deb
/*两个deb要一起输入,他们相互依赖,让系统自己处理*/
sudo dpkg -i g++-4.1_4.1.2-27ubuntu1_amd64.deb libstdc++6-4.1-dev_4.1.2-27ubuntu1_amd64.deb
sudo dpkg -i g++-4.1-multilib_4.1.2-27ubuntu1_amd64.deb
3. 这时,系统里面会有2个版本的GCC,缺省的还是原来默认的GCC 4.4.3,我们可以更改系统的默认配置。
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.4 40
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.1 30
设置默认编译器,如下
sudo update-alternatives --config gcc
有 2 个选项可用于替换项 gcc (提供 /usr/bin/gcc)。
& 选择&&&&&& 路径&&&&&&&&&&& 优先级& 状态
------------------------------------------------------------
* 0&&&&&&&&&&& /usr/bin/gcc-4.4&& 40&&&&&&& 自动模式
& 1&&&&&&&&&&& /usr/bin/gcc-4.1&& 30&&&&&&& 手动模式
& 2&&&&&&&&&&& /usr/bin/gcc-4.4&& 40&&&&&&& 手动模式
选择“1”。
4. 此时在命令行输入
1.gcc --version&
gcc (GCC) 4.1.3
(prerelease) (Ubuntu 4.1.2-27ubuntu1)
Copyright (C) 2006 Free Software Foundation, Inc.
T see the source for copying conditions.& There is NO
not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
5.首先运行
./makeMtk --help
可以看到包含的project_name
./makeMtk project_name new
此时会检查本地环境,不符合编译条件的软件版本会被列出在checkenv.log文件中。
打开这个文件,可以看到:
Suggested Linux OS and Tool Chain to install
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ Build System Requirment:
+ Linux OS&&&& : RedHat Enterprise Linux Server 5.4 or Ubuntu 9.10/Ubuntu 10.04
+ arm-eabi-gcc : Version 4.4.0
+&&&&&& Perl&&&&&&&& : Version 5.8.X
+ Python&&&&&& : Version 2.5.X
+ Gcc&&&&&&&&& : Version 4.1.2
+ JDK&&&&&&&&& : Version 1.5 (1.6 is Not Supported)
+ Wine&&&&&&&& : Version 1.1 or above
+ Make&&&&&&&& : GNU Make 3.81 or above
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
在此案中,我没有安装arm-eabi-gcc,Wine;另外GCC版本过高(4.2.2),JDK版本也过高。
这两点我分别写了两个文章
《Andriod源码编译时的GCC版本问题解决》,《Andriod源码编译时的JDK版本问题解决》。
这里只记录arm-eabi-gcc,Wine的问题。
6. 安装Wine
sudo apt-get install wine1.2
7. 安装arm-eabi-gcc
在项目原文件根目录下输入:
find -name arm-eabi-gcc
./prebuilt/darwin-x86/toolchain/arm-eabi-4.4.0/bin/arm-eabi-gcc
./prebuilt/darwin-x86/toolchain/arm-eabi-4.3.1/bin/arm-eabi-gcc
./prebuilt/darwin-x86/toolchain/arm-eabi-4.2.1/bin/arm-eabi-gcc
./prebuilt/linux-x86/toolchain/arm-eabi-4.4.0/bin/arm-eabi-gcc
./prebuilt/linux-x86/toolchain/arm-eabi-4.3.1/bin/arm-eabi-gcc
./prebuilt/linux-x86/toolchain/arm-eabi-4.2.1/bin/arm-eabi-gcc
根据checkenv.log中的suggestion,选用arm-eabi-4.4.0,即把这个bin目录的绝对路径加入到环境变量的PATH中。
export PATH="$PATH:/source_files_path/prebuilt/linux-x86/toolchain/arm-eabi-4.4.0/bin/"
当一切就绪后,就可以编译代码了。
我采用的开发模式是编译出ramdisk.img,system.img,userdata.img并拷到SDK中,运行模拟器来查看效果。
编译这几个img的命令是
./mk emulator new
浏览: 330492 次
来自: 深圳
服务器用什么实现
只放debug.keystore但是没给密码啊。。。。。。
&/td&&/tr&&/tabl ...
用你这个方法为什么我只想模拟点击 无法实现啊
(window.slotbydup=window.slotbydup || []).push({
id: '4773203',
container: s,
size: '200,200',
display: 'inlay-fix'         
您现在的位置:&&>&&>&&>&&>&&>&正文
一些GCC版本中存在的BUG及解决办法
来源:()  【】 
&& 1、宏FD_ZERO 在libc-5.4.46版本中存在错误。&& 示例代码如下:&& [code:1:5a2b7a82f8]&& # define __FD_ZERO(fdsetp)&&& do {&&&& int __d0, __d1;&&& __asm__ __volatile__ (" stosl"&&&&&&&&&&&& : "=m" (((__fd_mask *)&&&&&&&&&&&&&&&& (fdsetp))[__FDELT (__FD_SETSIZE)]),&&&&&&&&&&&&&& "=&c" (__d0), "=&D" (__d1)&&&&&&&&&&&& : "a" (0), "1" (sizeof (__fd_set)&&&&&&&&&&&&&&&&&&&& / sizeof (__fd_mask)),&&&&&&&&&&&&&& "2" ((__fd_mask *) (fdsetp))&&&&&&&&&&&& : "memory");&&& } while (0)&& [/code:1:5a2b7a82f8]&& 解决办法为:替换为glibc 2.0版本。&& 2、不能用stdin初始化一个静态变量。&& 示例代码如下:&& [code:1:5a2b7a82f8]&& #include &stdio.h&&& FILE *fp =&& [/code:1:5a2b7a82f8]&& 解决办法:由于stdin不是一个常量,因此出错,在libc6以后的版本中,允许这样的使用方式,同时建议在main的开始处初始化。&& 3、#if使用存在bug。&& 示例代码如下:&& [code:1:5a2b7a82f8]&& memcpy(dest, src,&& #ifdef PLATFORM1&&&&& 12&& #else&&&&& 24&& #endif&&&& );&& [/code:1:5a2b7a82f8]&& 解决办法:由于gcc预编译器不允许把#ifdef放在一个宏的参数中,所以出错,解决这个问题是,要么使用新版本的库,要么更改程序如下:&& [code:1:5a2b7a82f8]&& #ifdef PLATFORM1&& memcpy(dest, src, 12);&& #else&& memcpy(dest, src, 24);&& #endif&& [/code:1:5a2b7a82f8]&& 4、浮点类型计算存在bug。&& 示例代码如下:&& [code:1:5a2b7a82f8]&& #include &iostream&&& main() {&& double min = 0.0;&& double max = 0.5;&& double width = 0.01;&& cout &&& (int)(((max - min) / width) - 1) &&&& }&& [/code:1:5a2b7a82f8]&& 解决办法:在不同的系统中,上面的代码执行结果不一样。如果在编译的时候加上优化级别-O2,编译器在编译期分析最大值和最小值,并且给出一个结果;如果不加优化级别,在这个结果在运行期获得。优化级别的加入可能会改变赋值顺序。事实上,着不算是一个bug,而是float和double故有的局限。因为x87 FPU&& 的计算精度总比标准C的要高一些。&& 解决的办法是在编译的时候加上选项:-ffloat-store&& 这样强迫存储在主存重的浮点数比FPU中的精确。 1&&&
文章责编:gaoxiaoliang& 看了本文的网友还看了
?&&( 15:51:47)?&&( 14:16:20)?&&( 14:14:40)?&&( 14:13:00)?&&( 14:10:55)?&&( 14:02:35)
? ?   ? ?   ? ?   ? ?   ? ?
? ?   ? ?   ?
?   ? ?    ? ?   ? ?   ? ?   ? ?
? ?   ? ?
实用工具 |
| 大全 | 大全
     |
版权声明:如果网所转载内容不慎侵犯了您的权益,请与我们联系,我们将会及时处理。如转载本内容,请注明出处。
Copyright & 2004-
 网 All Rights Reserved 
中国科学院研究生院权威支持(北京) 电 话:010- 传 真:010-[CentOS]如何解决gcc版本冲突?
find / -name gcc
有这么多gcc:
/usr/lib/gcc
/usr/local/lib/gcc
/usr/local/bin/gcc
/usr/local/libexec/gcc
/usr/bin/gcc
/usr/bin/gcc --version
gcc (GCC) 4.4.7-4
/usr/local/bin/gcc --version
gcc (GCC) 4.8.2
看来,这个机器上确实有两个gcc,shell跑的是/usr/local/bin/gcc,但是cocos2dx make时用的是/usr/bin/gcc(为什么路径会不一致,原因还不清楚)
解决的办法是,运行;
mv /usr/bin/gcc /usr/bin/gcc4.4.7
ln -s /usr/local/bin/gcc /usr/bin/gcc
另外,g++, cc, c++这几个命令也要改
mv /usr/bin/g++ /usr/bin/g++4.4.7
ln -s /usr/local/bin/g++ /usr/bin/g++
mv /usr/bin/cc /usr/bin/cc4.4.7
ln -s /usr/local/bin/cc /usr/bin/cc
mv /usr/bin/c++ /usr/bin/c++4.4.7
ln -s /usr/local/bin/c++ /usr/bin/c++
没有更多推荐了,如何解决gcc版本冲突
今天碰到一个比较坑爹的问题,在centos上用yum安装编译环境,运行:
yum -y install make gcc gcc-c++ kernel-devel m4 ncurses-devel openssl-devel
结果导致编译cocos2d-x出现错误:
cc1plus: error: unrecognized command line option "-std=c++11"
我google了一番,确定这个错误是由于gcc的版本过低造成的
查看gcc版本:
gcc --version
系统显示:
gcc (GCC) 4.8.2
我又google一番,确定这个版本可以支持c++11
但是cocos2d-x的编译错误确实是运行了yum命令以后才出现的
我全局搜了一下gcc:
find / -name gcc
有这么多gcc:
/usr/lib/gcc
/usr/local/lib/gcc
/usr/local/bin/gcc
/usr/local/libexec/gcc
/usr/bin/gcc
/usr/bin/gcc --version
gcc (GCC) 4.4.7-4
/usr/local/bin/gcc --version
gcc (GCC) 4.8.2
看来,这个机器上确实有两个gcc,shell跑的是/usr/local/bin/gcc,但是cocos2dx make时用的是/usr/bin/gcc(为什么路径会不一致,原因还不清楚)
解决的办法是,运行;
mv /usr/bin/gcc /usr/bin/gcc4.4.7
ln -s /usr/local/bin/gcc /usr/bin/gcc
另外,g++, cc, c++这几个命令也要改
mv /usr/bin/g++ /usr/bin/g++4.4.7
ln -s /usr/local/bin/g++ /usr/bin/g++
mv /usr/bin/cc /usr/bin/cc4.4.7
ln -s /usr/local/bin/cc /usr/bin/cc
mv /usr/bin/c++ /usr/bin/c++4.4.7
ln -s /usr/local/bin/c++ /usr/bin/c++
没有更多推荐了,}

我要回帖

更多关于 如何查看当前gcc版本 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信