如何升级Carbide C++的GCCE Tool Chain

Qt for Windows:Qt 5.9.0 MinGW 静态编译版本(包含OpenSSL) 概述5月31号,Qt这一次竟然没跳票,如约发布了LTS的5.9感觉这一次5.9用的人会很多,毕竟LTS,而且确实改进很大,所以这一次完整的写一遍静态编译的步骤我这里只涉及MinGW版本的静态编译,包含OpenSSL,不包含MySql,稍后我会把所有涉及到的编译结果,包括虚拟机,全部上传到百度云 阅读详情
 

Carbide C++的编译器

在Symbian开发工程中,Carbide C++是非常好用的开发工具,目前提供GCCE,ARMV5和RVCT三种编译器的支持。前两种编译器是免费的,RVCT是收费的编译工具,网上下载的Carbide并不默认提供,需要自己下载并配置才能使用,由于RVCT提供了专门的优化,编译结果的目标文件体积很小,且代码执行效率更高,但问题是该编译器费用比较昂贵,普通开发者很难承担。

目前,开发者中使用GCCE的比较多,但使用GCCE的问题是,默认提供的GCCE的版本比较老,在C:\Program Files\CSL Arm Toolchain\arm-none-symbianelf\bin\gcc -v可以看到,默认的GCC版本是2005年Release的3.4.3。在Codesourcery的网站上可以看到,目前最新的版本是2008年Q3Release的4.3.2版本。经过升级GCCE 4编译器发现,改进如下: 1. 编译速度显著提高,即使是第一次编译也能很快完成,可以节省开发者时间。 2. 生成的目标文件体积减小,根据不同项目,结果不太相同,大部分Sis文件可以缩小40%以上的大小。 3. 应该还有些代码和信息的优化吧,不明显。 4. 更严格的代码检查,理论上讲可以提高代码的质量。

升级GCCE编译器

相信上面4点足以让大家下决心升级GCCE编译器的版本了,但是终归没有免费的午餐,GCCE工具链是免费的,所以Codesourcery并不提供任何技术支持和保证。 下面说下升级过程: 0. 环境 由于Carbide开发环境的版本不同,升级过程可能略有不同,请仔细理解下列安装步骤,我的环境是: Windows XP SP3 Carbide C++ 1.3.2 应该是网上升级后最新的Patch S60_3rd_FP2_SDK 官方用的是S60_3rd_MR_SDK, 我测试了下载FP2上也没什么问题。 请备份所有需要修改的文件,以便能够恢复到原来的环境。

1. 首先从Codesourcery的网站上下载最新版编译器的安装文件并默认安装: http://www.codesourcery.com/sgpp/lite/arm/portal/subscription?@template=lite

选择SymbianOS Sourcery G++ Lite Edition,选IA32 Windows Installer。

2. 安装完成后,替换3.4.3版本的编译器为新安装的4.3.2版本的编译器: 首先备份C:\Program Files\CSL Arm Toolchain\下的所有文件和文件夹(后面还会用到),并删除该文件夹下所有文件和文件夹,拷贝C:\Program Files\CodeSourcery\Sourcery G++ Lite\下的所有文件到C:\Program Files\CSL Arm Toolchain\

3. 给SDK打补丁 在$(EPOCROOT)Epoc32\tools\目录下的部分脚本文件由于直接使用了版本号等信息,需要手动更新到新的版本号,即从3.4.3升级到4.3.2。 在S60_3rd_FP2_SDK中,需要更改下面的文件:

cl_bpabil.pm

在S60_3rd_MR_SDK中,需要更改下面的文件:

cl_bpabi.pm
cl_gcce.pm
ide_cw.pm
compilation_config/gcce.mk

建议可以使用类似notepad++类的文本处理工具,搜索整个$(EPOCROOT)Epoc32\tools\目录及子目录内的包含版本号信息的内容,进行修改。

4. 移除GCC4中不允许的断言和冲突 在$(EPOCROOT)Epoc32\include\d32locd.h中注释掉下列断言:

__ASSERT_COMPILE(_FOFF(TLocalDriveCaps,iSize)%8 == 0);
__ASSERT_COMPILE(_FOFF(TLocalDriveCapsV3,iFormatInfo.iCapacity) % 8 == 0);

在$(EPOCROOT)Epoc32\include\gcce\gcce.h中注释掉下列声明:

typedef struct __va_list { void *__ap; } va_list;
#define va_start(ap, parmN) __builtin_va_start(ap.__ap, parmN)
#define va_arg(ap, type) __builtin_va_arg(ap.__ap, type)
#define va_end(ap) __builtin_va_end(ap.__ap)

并在相同位置添加下列代码行:

#include <libc/stdarg.h>

由于这个改动,指向标准C库中的stdarg.h所以需要在每个项目的MMP文件中添加一个路径:

SYSTEMINCLUDE \epoc32\include\libc

5. 移除SDK头文件中多余的修饰符 升级过编译器后,会出现很多类似错误信息如下:

error: extra qualification 'CAknVolumeControl::' on member 'ScaledValue'[/S60/devices/S60_3rd_FP2_SDK/epoc32/include/aknvolumecontrol.h]

找到相关的头文件,去除相应的部分即可,如:

TInt CAknVolumeControl::ScaledValue() const;//Original
TInt ScaledValue() const;//Modified

6. 4.3.2工具中 libsupc++.a的问题 在4.3.2的Release中,libsupc++.a(7kB)中缺少了一个_Unwind_GetTextRelBase的引用,这会导致在连接的过程中失败,将3.4.3中的libsupc++.a(15kB)替换即可。

7. 对于整除的问题 由于在Symbian的SDK中遗漏了__aeabi__uidiv和__aeabi_idiv,所以在整除的时候会出现编译错误,解决方法是自己制作一个新的文件放在每个项目中的src/目录下,例如可以命名为division.c,文件内容为:

// This code was suggested by Julian Brown from CodeSourcery. It is in public domain.
// Many thanks!

#if __GCCE__ 
#if __SERIES60_30__
extern unsigned int __aeabi_uidivmod(unsigned numerator, unsigned denominator);
int __aeabi_idiv(int numerator, int denominator) 
   {
   int neg_result = (numerator ^ denominator) & 0x80000000;
   int result = __aeabi_uidivmod ((numerator < 0) ? -numerator : numerator, (denominator < 0) ? -denominator : denominator);
   return neg_result ? -result : result;
   }
unsigned __aeabi_uidiv(unsigned numerator, unsigned denominator) 
   {
   return __aeabi_uidivmod (numerator, denominator);
   }
#endif // __SERIES60_30__
#endif // __GCCE__

此文件编译的时候会被自动加入来解决整除的问题。

最后,编译成功,查看一下你编出来的SIS文件小了多少,你应该能明显感觉到编译速度变快了,文件下载到真机上的速度也变快了(因为体积变小了)。

机器学习-深嵌交叉验证(Nested Cross-Validation) Section I: Code and Analyses 第一部分:代码 from sklearn import datasets from sklearn.model_selection import train_test_split from sklearn.preprocessing import StandardScaler from sklearn.svm import SVC from... 阅读详情

相关推荐

共封装光学(CPO):下一代互联革命

Nvidia:产品:Quantum-X Q3450(115.2T,144×800G,2025H2上市)、Spectrum 6800(409.6T,512×800G,2026H2上市);技术路线:TSMC COUPE封装、MRM调制器、光栅耦合、外部激光源(Lumentum/Ayar Labs供应);战略定位:以横向扩展CPO验证供应链,最终聚焦纵向扩展场景(Feynman架构)。

存储随笔 4965

嵌入式QT环境搭建:No tools chain can produce code for this qt version please define one or more tool chains

在编译好qt源代码后,手动将其添加至qtcreator里,qt前面出现感叹号,并出现如下的错误:No tools chain can produce code for this qt version please define one or more tool chains。解决的方案如下:在tools里面的options的build&amp;run,在tool chains里添加gcc的路径,具...

Devin Zhou 7620

创建动态代理对象bean,并动态注入到spring容器中

使用过Mybatis的同学,应该都知道,我们只需要编写mybatis对应的接口和mapper XML文件即可,并不需要手动编写mapper接口的实现。这里mybatis就用到了JDK动态代理,并且将生成的接口代理对象动态注入到Spring容器中。 这里涉及到几个问题。也许有同学会有疑问,我们直接编写好类,加入@Component等注解不是可以注入了吗?或者在配置类(@Configuration)...

lichuangcsdn的博客 3万+

qt 错误记录

1. No tool chain set from kit “Desktop”.打开qtcreator时出现上述错误,原因是qtcreator的编译器配置项没有找到可用的编译器,查看是否下载了可用的g++,如果下载了也detected不到,那就手动添加,添加完成后就行了。 2. make: arm-none-linux-gnueabi-g++: Command not found/usr/local

flfihpv259的博客 2712

设备树实践:从零构建一个嵌入式板级的设备树描述

本文详细介绍了如何从零开始为嵌入式Linux系统构建设备树(Device Tree),以i.MX6ULL处理器为例,涵盖硬件分析、设备树语法、外设配置及调试技巧。通过实践指导,帮助开发者掌握设备树编写,实现硬件与软件的高效对接,提升嵌入式开发效率。

plum99的博客 307

基于FLUENT的圆柱绕流数值模拟与流场优化策略

本文详细介绍了基于FLUENT的圆柱绕流数值模拟方法与流场优化策略。从基础概念、建模技巧到湍流模型选择,全面解析了圆柱绕流模拟的关键技术,并提供了实用的网格划分和参数设置建议。通过具体案例展示了流动控制方法和优化流程,帮助工程师有效降低阻力系数,提升流场性能。

f6g7h8i9j的博客 705

Nano Pi M1 安装QT和No tool chain set from kit问题解决

安装QT 1、安装 sudo apt-get update sudo apt-get install qt5-default sudo apt-get install qtcreator 检查安装 orangepi@orangepi:~$ qmake -v QMake version 3.1 Using Qt version 5.9.5 in /usr/lib/aarch64-linux-gnu 2、QT使用示例:扫雷游戏 git clone https://github.com/qmeng0207

Argon_Ghost的博客 6515

Avellaneda & Stoikov模型实战解析:如何动态调整做市策略参数

本文深入解析Avellaneda & Stoikov模型在动态调整做市策略参数中的应用,重点探讨库存状态、剩余时间、风险系数和订单深度等核心参数的实战技巧。通过加密货币市场的实际案例,展示如何根据市场波动和流动性动态调整参数,提升做市策略的盈利能力和风险控制水平。

weixin_29070861的博客 202

打造自己的Carbide C++工程向导和模板

首先感谢dyw的博客:Carbide.c++下自制向导生成CView派生类及相关Container ,本文是在他的研究基础上完成的。不知道是不是因为版本的问题(我用的是Carbide C++ v1.3 OEM,在修改模板过程中与dyw提供的方法有点出入)。一、多视图的工程向导原来在2nd版本时候,carbide是提供一个多视图的程序框架向导的,但是在3rd以后就取消了。正如我在学习笔记中所说,其实

SHARE & TOP 3316

使用QGIS配准无人机航片

随着无人机在各个行业的普及,无人机航片成为很多应用系统空间数据的重要来源。无人机航片具有成像快、分辨率高、针对性强的优点,广泛用于保险定损、灾情应急监测、设施巡检、农作物面积调查等方面。 然而,由于种种原因,通过无人机拍摄的照片拼接得到的正射航片与其他地理空间数据叠加时经常出现较明显的偏差,需要进行配准以校正其空间位置,因此,本文将使用QGIS的配准工具演示无人机正射航片配准的过程。 01数据情况 本文选用的示范数据为2020年7月中左右无人机拍摄的河北省某地系列照片,经过拼接得到CG...

QGISClass的博客 5249

「HTML和CSS入门指南」hr 标签详解

标签是 HTML5 中用于插入水平分割线的标签,常用于在页面中添加分隔线或者段落之间的分割线。通过灵活运用 标签和属性,我们可以帮助用户更好地理解页面内容,同时也可以美化和装饰页面。在实际应用中需要注意避免过度使用 标签,以使页面看起来简洁明了。

a451319296的博客 7663

ubuntu intstall qt error when 'make'

Error while building/deploying project animatedtiles (kit: Desktop Qt 5.10.1 GCC 64bit) When executing step "qmake" 1. sudo apt-get install build-essential 然后尝试"run",又出现"cannot find -lGL"新...

天问 434

用python画带有正负值的条形图

常见的条形图只能表现数据的大小,却不能表现值的正负关系。但是其实仅仅使用`pandas`和`matplotlib`两个包就可以实现y轴负轴的添加以及负值的显示,并且可以为正负值分别设置不同的颜色,让条形图看上去更加清晰,易于我们分析

weixin_44853840的博客 5384

Linux 胎教版Qt5.6.2 安装 环境搭建(和 出现错误的解决)

我这里需要Qt5.6.2软件版本, 先修改该文件的权限,下面为 qt opensource linux x64 5.5.1.run 添加可执行权限,再执行安装。 chmod +x qt-opensource-linux-x64-5.6.2.run sudo ./qt-opensource-linux-x64-5.6.2.run /opt/Qt5.6.2/Tools/QtCreator/bin/qtcreator.sh 按如下的步骤添加 GCC 编译器,(这里我啰嗦一下,我们配置的是 GCC 编译器, W

“逛丢一只鞋”的博客 3927

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

Qt新安装之后出现Error while building/deploying (kit: Desktop Qt 5.7.0 GCC 64bit) When executing step "Make”

Ubuntu14.04初次安装Qt之后可能出现Error while building/deploying project *** (kit: Desktop Qt 5.7.0 GCC 64bit) When executing step "Make"错误。 解决方法: 首先,sudo apt-get install build-essential 然后尝试"run"

cjh3353的专栏 5万+

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

Error while building/deploying project QTtest (kit: Desktop Qt 5.8.0 MinGW 32bit)

1、编译报错如下图: 2、解决办法:点击左手的 项目,再把Shadow build默认的√去掉。重新编译就可以了。 注意:编译那个就去掉那个的√  

qq_41066881的博客 1万+

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

一步解决Error while building/deploying project MyQtDemo (kit: Desktop Qt 5.7.0 MSVC2015 32bit) When exec

网上很多关于解决“Qt编译时的 qmake”问题的方法都是扯淡,例如如下的答案 (1)右键构建qmake; (2)重装Qt 以上两种答案都是扯淡,瞎bb。 出现 Error while building/deploying project MyQtDemo (kit: Desktop Qt 5.7.0 MSVC2015 32bit) When exec 可能...

琅嬛福地 4万+

Ubuntu20.04初次安装Qt之后可能出现Error while building/deploying project *** (kit: Desktop Qt 5.7.0 GCC 64bit)

Ubuntu20.04初次安装Qt之后可能出现Error while building/deploying project *** (kit: Desktop Qt 5.7.0 GCC 64bit) When executing step "Make"错误。 解决方法: 首先,sudo apt-get install build-essential 然后尝试"run",又出现"cannot find -lGL"新错误。 最后,sudo apt-get install libqt4-dev 再次

Y1172215784的博客 1879

qt creator报错error while building deploying project

qt creator报错error while building deploying project 在进行qt creator编译qt工程时,报出错误:error while building deploying project。 还可能出现如下提示 qt creator needs a tool chain set up to build. configure a tool chai

分享的滋味 11万+

Qt 项目编译套件错误“The kit Desktop Qt 5.7.1 MSVC2013 64bit has configuration issues”

使用Qt Creator编译项目,出现Error while building/deploying project untitled (kit: Desktop Qt 5.7.1 MSVC2013 64bit)The kit Desktop Qt 5.7.1 MSVC2013 64bit has configuration issues which might be the root cause ...

mabing993的博客 2万+
上一篇: 碰撞检测逻辑
下一篇: tools
andych008
博客等级 码龄19年 23粉丝 90原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值