在iOS项目中混合stdc和libc

在iOS项目中混合stdc和libc,第1张

概述我很难配置iOS项目,该项目使用与 gcc使用的旧libstdc链接的静态库.该库是32位和64位. 有6个库(例如libssl.a)是32位的,必须更新.如果我从源代码编译这些库,它们将自动与libc链接,这将导致我的链接器抱怨. 因此,这是我的问题: 1)有没有办法让项目中的单个静态库使用libstdc,并让其他人使用libc? 2)如何从源代码编译库(如libcrypto和libssh)并强 我很难配置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上.

总结

以上是内存溢出为你收集整理的在iOS项目中混合stdc和libc全部内容,希望文章能够帮你解决在iOS项目中混合stdc和libc所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1000329.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-21
下一篇 2022-05-21

发表评论

登录后才能评论

评论列表(0条)

保存