【问题标题】:What is the correct Xcode setting for Position Independent ExecutablesPosition Independent Executables 的正确 Xcode 设置是什么
【发布时间】:2016-05-25 00:00:46
【问题描述】:

最近刚开始收到一封包含以下建议的应用商店提交邮件。

请确保您的构建设置已配置为创建 PIE 可执行文件。

但是 XCode 中的设置看起来是正确的,在我发现的链接部分

“不创建与位置无关的可执行文件”,设置为 NO。

(双重否定 YUK)。

【问题讨论】:

    标签: xcode linker pie-chart


    【解决方案1】:

    您收到此 Apple 警告可能不是因为您的应用程序本身,而是因为未编译为 PIE 的第 3 方库。例如,如果您使用 Marmalade SDK Engine,您将收到此警告(他们将在 9 月修复它)。

    但您可以尝试在构建设置中添加更多编译器标志:

    Other C flags中,您可以放置​​以下标志:-fPIC

    您可以在其他警告标志中添加:-Wl,--emit-relocs-Wl,--warn-shared-textrel >

    查看您的应用是否为 PIE:

    otool -hf /path/to/your/App.app/app
    

    参考:https://developer.apple.com/library/ios/qa/qa1788/_index.html

    【讨论】:

    • 如何知道第三方库是否使用 PIE 编译?
    • 谢谢,这些标志有效。他们的意思是什么?它们会对我的应用产生不利影响吗?
    • 从头开始,命令工具显示我的应用程序有 PIE 标志,但是当我将应用程序上传到 App Store 时,我仍然收到有关框架 PIE 的警告
    • 我有问题。我似乎无法在任何地方找到“不要创建与位置无关的可执行文件”......我应该在哪里搜索它? ://
    【解决方案2】:

    我收到了 Apple 的回复

    非 PIE 二进制文件 - 可执行文件“ProductManualApp.app”不是与位置无关的可执行文件。请确保您的构建设置已配置为创建 PIE 可执行文件。

    根据我在 Google 的研究,很多人说它与“不要创建与位置无关的可执行文件”有关。我认为应该保持默认,即“否”

    【讨论】:

    猜你喜欢
    • 2010-10-30
    • 1970-01-01
    • 2013-05-21
    • 2020-11-10
    • 2014-04-20
    • 1970-01-01
    • 2015-06-05
    • 2012-01-15
    • 2017-12-17
    相关资源
    最近更新 更多