将开源libosmscout移植到QNX遇到的问题和解决方法
来源:互联网 发布:php常用扩展 编辑:程序博客网 时间:2024/05/16 15:13
大费周章将libosmscout在vs平台上编译成功了,虽然已经有了readme编译手册,但是其依赖的其他开源库较多,一点的差错都不能有。
若将libosmscout移植到QNX,一个新的平台上,发生什么意外都不奇怪了。所以libosmscout里几个工程,只选取最基本的,不依赖其他库的libosmscout工程进行移植。
这里总结下移植过程中遇到的问题:
1. 随时准备调整config.h和CoreFeatures.h文件中的预定义
在linux平台上,这两个文件时由autoconf根据参数和环境生成的。里面是与头文件相关的预定义的宏。不同的环境,其宏定义可能也不同。如
/* Define to 1 if you have the declaration of `log2(double)', and to 0 if you don't. */#undef HAVE_DECL_LOG2/* Define to 1 if you have the <dlfcn.h> header file. */#define HAVE_DLFCN_H 1/* Define to 1 if you have the <inttypes.h> header file. */#define HAVE_INTTYPES_H 1
好在有注释说明,比较好理解。
其中费了一天 的功夫去理解其参数文件configure.ac,对宏定义修改有点帮助,但希望能直接弄明白宏定义的设置与要求的心思白费了。
2. 有关支持SSE, SSE2的部分,若设置编译选项__SSE__, __SSE2__,出现__buildin_ia32_***之类的错误时,应用-msse, -msse2替代__SSE__, __SSE2__,基本好用。原因大概是__SSE__, __SSE2__支持32位运算时没有问题,但对支持AMD 64运算时,需要应用扩展的设置-msse, -msse2。
3. 将头文件,源文件直接整个放入新建的QNX工程,编译,竟出现了上千个错误,很多是QNX内部头文件的错误,原因不明,原以为是config.h和CoreFeature.h中的宏设置的问题,努力折腾了两天,修改尝试了很多次,无功而返。
4. 无奈下,新建QNX工程,将libosmscout的文件逐个或分批加入新的QNX工程。在配置与以前中的QNX相同的情况下,编译错误大大减少,且有章可循。
在QNX中,常用的math函数,stdio中的输入输出函数,都需要在前面加上std域,如log,printf,exit等。否则,会出现无声明的错误。
time函数,需要指定include下的time.h,而不能是sys/time.h,否则time函数无声明。
其他编译都很顺畅。
其实,采用新的方法移植,总共没费两个小时的工作量。但在前一个方法里几乎耗费了一个星期,汗死。
如果再遇到开源莫名其妙的错误,选用逐个文件解决的方法,也是没办法的办法了。
- 将开源libosmscout移植到QNX遇到的问题和解决方法
- QNX的应用移植迁移到Linux
- 移植LINUX的外围设备驱动到QNX系统,linux程序移植到QNX
- 移植LINUX的外围设备驱动到QNX系统,linux程序移植到QNX
- 升级xcode3到xcode4遇到的一些问题 和 解决方法
- 遇到的问题和解决方法
- 关于在2440上移植rtl8192和rtl8188cus linux驱动遇到的问题及解决方法!!!
- 移植LINUX的外围设备驱动到QNX系统中
- 移植LINUX的外围设备驱动到QNX系统中
- Uboot的移植中遇到的一些问题,及解决方法。
- 移植自定义View过程中遇到的问题及解决方法
- 移植opencv2.4.9遇到的问题与解决方法
- uboot 移植学习过程遇到问题的解决方法
- 关于spring升级到4.3.12 hibernate升级到4.3 遇到的一些问题和解决方法
- 移植遇到的问题
- Socket 编程 windows到Linux代码移植遇到的问题
- 移植代码到 DLL 时遇到的一个问题
- 移植OSBench.exe源码到BSP遇到的问题
- 【Unity插件】NGUI核心组件之UIAtlas
- 如果生成动态验证码
- 多线程操作数据库 (CoreData)
- Aix 通过shell脚本kill杀指定进程,比如杀所有java进程
- 这个是最新发布到Channel 9上的示例介绍视频
- 将开源libosmscout移植到QNX遇到的问题和解决方法
- VC++结束程序进程
- 【转载】长度是怎样炼成的
- 对与错
- j-query中 live方法的应用
- Asp.net ajax定时刷新页面
- GRUB引导系统启动
- Cocos2d Conversion Tips for the iPhone 5
- Oracle及其他数据库中SQL分类