SylixOS下移植C++工程
1.使用范围
本文档适用于在RealEvo-IDE开发环境下移植C++工程的用户,使用者应熟悉使用RealEvo-IDE开发环境,并具备C++语言编程的基础知识。
2. 准备工作
2.1 环境准备
在使用之前,须安装有翼辉信息开发的集成开发套件,由于系统上安装的防火墙软件或者杀毒软件可能会影响到集成开发软件的使用,因此,在使用本套件前请关闭计算机上的windows防火墙以及杀毒软件。
因后续操作需要在模拟器上进行展示,所以在进行后续章节操作前,请完成mini2440模拟器的配置并启动,具体配置步骤请参考图2-1中《mini2440模拟器配置启动》。
2.2 资源准备
移植C++工程前,应从客户处或通过其他方式获得相关C++工程源码,并确保工程源码的正确性。本次技术笔记资源准备如图2-1所示。
图 2-1 资源准备
其中:mini2440_base文件为本次移植依赖的base工程,C++工程源码文件为本次移植的工程源码。
3. 技术实现
3.1 导入base工程
双击打开RealEvo-IDE软件,选择菜单"File-Import",弹出界面如图3-1所示。
图3-1 导入工程
点击"Next",弹出如图3-2所示界面。
图3-2 导入mini2440_base工程
点击"Finish",完成mini2440_base工程的导入。
3.2 新建c++_app工程
新建c++_app工程,操作步骤如图3-3所示(新建c++工程时候,请勾选图3-3中第五步的选项)。
图3-3 新建c++_app工程
点击"Next",弹出如所图3-4示界面。
图3-4 base工程选择
点击"Finish",完成c++_app工程的创建。
3.3 导入c++_app工程的源文件
删除c++_app工程中的c++_app.cpp文件,然后将图2-1所示的源文件导入到src目录下,如图3-5所示(可以直接进行复制粘贴)。
图3-5 导入c++_app工程源文件
3.4 配置c++_app工程
选中c++_app工程,右击工程选择"Properities"选项,设置c++_app工程的头文件路径,如图3-6所示(本次c++工程依赖头文件较多,实际移植过程以实际情况为准)。
图3-6 配置头文件路径
点击"apply",然后进行目标设备创建,如图3-7所示(本次移植在mini2440模拟器上演示,实际移植过程以实际情况为准)。
图3-7 设置目标机IP
点击"apply",进行依赖的库设置,操作步骤如图3-8所示。
图3-8 依赖库设置
注:本例中c++_app工程需要依赖glib246.so,XCore.so,proxy.so,实际情况根据移植需要选择依赖的库文件。
3.5 编译上传
配置完成后,编译c++_app工程,操作如图3-9所示。
图3-9 编译工程
编译完成后,上传工程,操作如图3-10所示。
图3-10 上传工程
3.6 模拟器上模拟运行
执行3.5节中上传的文件,操作如图3-11所示。
图3-11 执行目标程序
可以得到如图3-12所示结果。
图3-12 程序执行结果
4. 移植中错误总结
4.1 引用头文件错误
在编译阶段,可能会遇到头文件找不到路径的错误,如图4-1所示。
图4-1 头文件路径错误
解决这类问题的方法为修改工程属性,加入相应的头文件路径,如图4-2所示。注意添加头文件路径时,不要拷贝头文件,只需要把相应的头文件路径添加正确即可。
图4-2 加入头文件路径
4.2 symbol查找
在执行阶段,遇到找不到symbol的错误,如图4-3所示。
图4-3 symbol错误
此类问题总结原因如下:
1. 结构体未定义
2. 变量为定义
3. 函数未定义
解决方法为:在SourceInsight中或者RealEvo-IDE下全局搜索,找到该symbol定义的地方,如果没有定义请根据语义或者在其本来环境下的定义实现该symbol的定义,如果已经定义,则可能是该文件没有加入编译。
由于c++中存在方法重载,所以编译器存在命名粉碎规则,此类问题解决方案参考C++编译器的命名粉碎规则。
5. 小结
本文档介绍了SylixOS下移植C++工程的过程,并介绍移植过程中可能出现的问题以及解决相应问题的思路。
6. 参考资料
《RealEvo-IDE APP使用手册》
《Linux工程移植到SylixOS技术笔记》
关于C++命名修饰的资料:
http://hipercomer.blog.51cto.com/4415661/855223
http://blog.sina.com.cn/s/blog_67ae19eb0101aygx.html