完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
怎样才能实现一套C/C++代码跨平台编译呢?应该注意哪些问题,下面对其进行总结。
平台包括: windows7(32bit and 64bit), windows 8.1(32bit and 64bit, desktop, app store, metro ),windows phone, Mac(32bit and 64bit), iOS(32bit and 64bit, x86, x64, armv6,armv7-a, arm64), Linux(32bit and 64bit, x86, x64, mips, armv8-a), Android(32bitand 64bit, x86, x64, armv6, armv7-a, armv8-a). 遇到的问题包括: (1).数据类型在不同平台有可能长度不一致; (2).重定义问题,在有些平台某个功能有多种语言实现,如C++,SIMD,汇编等; (3).在有些平台,库的前后位置放置不正确,如Linux, Mac链接时与库位置有关; (4).对于intel SIMD指令,在Linux/Mac和windows下,有些包含的头文件名字不一致,如在windows下用"intrin.h",在linux下用"x86intrin.h",而在mac下用"nmmintrin.h"; (5). 在特定系统中有些与性能相关的实现需要关闭,如SIMD在中标麒麟或湖南麒麟Linux下是不支持的; (6). SIMD个别用法不一致不能使用统一方法导致编译出错,如__m128i在linux下不能直接提取子元素,而在windows下是可以的; (7). 在有些平台只有函数声明没有实现,有时会报编译错误; (8). 在用命令行编译和链接时,要保证编译和链接的配置参数保持完全一致; (9). 有些平台缺少必要的软件或插件导致编译错误; (10). 对于SIMD,有些机子配置偏低,支持SIMD指令有限; (11). 在移动平台,对armv6, armv7-a, armv8-a,它们支持的参数是不一致的,要区别对待,如-msoft-float参数,在armv6和armv7-a下是支持的,在armv8-a下是不支持的; (12).在有些平台,自动获取CPU架构及位数有误。 |
|
相关推荐
|
|
464 浏览 0 评论
478 浏览 1 评论
基于瑞萨FPB-RA4E2智能床头灯项目——1编译环境搭建与点亮驱动ws2812全彩LED
439 浏览 0 评论
嵌入式学习-飞凌嵌入式ElfBoard ELF 1板卡-LCD显示图片编程示例之介绍mmap
994 浏览 0 评论
《DNESP32S3使用指南-IDF版_V1.6》第二章 常用的C语言知识点
1056 浏览 0 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
11792 浏览 31 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-25 20:09 , Processed in 0.574395 second(s), Total 62, Slave 44 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号