第一篇

来源:互联网 发布:清北学霸 知乎 编辑:程序博客网 时间:2024/06/05 11:16

今天在移植一个windows平台的C++项目到IOS上.  处处是坑.

1   mac和ios是两个东西   mac任然属于微型机操作系统,内核是unix,  ios却是arm架构.   arm啊  就是功耗更低的微处理器  和微型机的CPU是不一样的,  C++代码自然需要不同的编译器来生成机器代码.

2   交叉编译   arm-linux-gcc 可以编译出arm架构的代码   我不知道它遇到系统调用时  有没有mac和linux的问题, 所以弃置不用  可以猜测到 这个工具能生成android架构的代码

xcode是mac上开发人员用的编译工具,  自带的clang能够让xcode将OC和C++混编,   注意  该gcc版本为4.2.1  且在网上并没有找到升级的办法.  也许是我没找到

mac是支持gcc的  gcc编译出来的架构是 x86_64  这种架构是mac上做ios开发模拟器识别的架构.   ios真机上的架构为 arm64 armv7 等

真机架构打出的静态库是无法被x86_64识别的.  并不兼容.

mac和ios的C++库也不相同 mac支持的更多一些   ios版本越高支持的标准C++库越少  (我用11版本有些库没有 7版本的就有 所以有此猜测)

编译情况    C++代码直接和OC混编  只会编译调用到的代码,   冗余代码是不会参与编译的    

C++打成静态库后供OC调用  Xcode就无法识别哪些会被调用  会将所有内容纳入编译 , 若有些接口找不到实现 则会报错

原创粉丝点击