【问题标题】:building for Mac Catalyst, but linking in object file built for macOS, for architecture x86_64为 Mac Catalyst 构建,但在为 macOS 构建的目标文件中链接,用于架构 x86_64
【发布时间】:2021-09-24 06:55:10
【问题描述】:

Xcode 中,我的Catalyst 项目的构建失败并出现如下错误:

ld: in /build-dir/libBackend.a(my-file.cpp.o), building for Mac Catalyst, but linking in object file built for macOS, for architecture x86_64

我该如何解决以上问题?
(甚至是什么意思)。

注意 libBackend.a 是我的静态库链接到我的应用程序(my-file.cpp 代表该库中的某个文件)。

【问题讨论】:

    标签: c++ xcode static-libraries ld mac-catalyst


    【解决方案1】:

    如果您允许,这是我修复它的方法;但首先,日志的含义:

    building for Mac Catalyst”部分很混乱,因为它是在提到libBackend.a文件之后写的。

    消息听起来像“your library is built for Catalyst but my-file.cpp.o is built for macOS”。
    但它实际上意味着:

    • 您正在尝试为 Catalyst 构建,
    • 但您的整个库,或者至少是 my-file.cpp.o 目标文件,
    • 专为 macOS 构建(不针对 Catalyst)。

    解决方案:

    修复是确保正确的标志真正传递给clang-compiler !!
    我的意思是,虽然“-target x86_64-apple-ios13.6-macabi”在我的标志中,
    由于一个错误,目标标志从未到达编译器。

    测试:

    如果下面导致编译错误(无论是 C、C++、Obj-C),那么你有同样的问题。

    #ifdef __APPLE__
    #   include <TargetConditionals.h>
    #   if !TARGET_OS_MACCATALYST
    #       error "Unsupported platform!"
    #   endif
    #endif
    

    背景:

    我正在实施CMake support for Xcode on Github
    它支持iOS、Mac 的Catalyst 以及可能的tvOSwatchOS
    (因为即使在 2021 年,CMake 仍然没有内置支持。

    【讨论】:

      猜你喜欢
      • 2021-02-28
      • 2022-01-04
      • 2021-01-17
      • 2021-04-24
      • 1970-01-01
      • 2021-01-08
      • 1970-01-01
      • 2016-02-08
      • 1970-01-01
      相关资源
      最近更新 更多