cso*_*iou 4 xcode static-libraries libstdc++ ios libc++
我很难配置iOS项目,该项目使用与gcc使用的旧libstdc ++链接的静态库.该库是32位和64位.
有6个库(例如libssl.a)是32位的,必须更新.如果我从源代码编译这些库,它们将自动与libc ++链接,这将导致我的链接器抱怨.
因此,这是我的问题:
1)有没有办法让项目中的单个静态库使用libstdc ++,让其他人使用libc ++?
2)如何从源代码编译库(如libcrypto和libssh)并强制它们使用旧的libstdc ++标准库?
3)这个烂摊子还有其他方法吗?
1)是的,你可以混合和匹配你的C++代码使用的C++运行时,只要这些单独的模块实际上不会在彼此之间传递对象.例如,如果您的应用程序中有两个模块只暴露C API但在内部使用C++,那么每个模块都可以使用他们想要的任何C++运行时.尝试在运行时之间共享对象时出现问题.
2)编译和链接时,可以使用'--stdlib = libstdc ++'或'--stdlib = libc ++'命令行参数来指定要使用的C++库.如果您的最终可执行文件需要链接到两者,则需要手动指定另一个(例如: - stdlib = libc ++ -lstdc ++).
3)是的,但请注意libstdc ++在几年前已被弃用,甚至在watchOS和tvOS上都不可用,所以最好的办法是将所有东西都放到libc ++上.
| 归档时间: |
|
| 查看次数: |
2362 次 |
| 最近记录: |