第一篇
来源:互联网 发布:清北学霸 知乎 编辑:程序博客网 时间: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版本的就有 所以有此猜测)
3 编译情况 C++代码直接和OC混编 只会编译调用到的代码, 冗余代码是不会参与编译的
C++打成静态库后供OC调用 Xcode就无法识别哪些会被调用 会将所有内容纳入编译 , 若有些接口找不到实现 则会报错
阅读全文
0 0