i386 架构在 MacOS 错误中已弃用

问题描述 投票:0回答:3

我对 Mac 环境完全陌生,而且只使用了几个小时。当我运行 shell 脚本时,出现以下错误 -

ld: warning: The i386 architecture is deprecated for macOS (remove from the Xcode build setting: ARCHS)
ld: warning: ignoring file /Library/Developer/CommandLineTools/SDKs/MacOSX10.14.sdk/usr/lib/libSystem.tbd, missing required architecture i386 in file /Library/Developer/CommandLineTools/SDKs/MacOSX10.14.sdk/usr/lib/libSystem.tbd
Undefined symbols for architecture i386:
  "_OSAtomicCompareAndSwapPtr", referenced from:
  ___darwintrace_setup in darwintrace.o
  "__DefaultRuneLocale", referenced from:
  _check_interpreter in proc.o
  "___error", referenced from:
      __dt_access in access.o
      __dt_close in close.o
  ___darwintrace_setup_tls in darwintrace.o
  ___darwintrace_setup in darwintrace.o
  __dt_dup2 in dup2.o
  __dt_mkdir in mkdir.o
  __dt_open in open.o
  ...
  "___getdirentries64", referenced from:
      __interpose___getdirentries64 in readdir.o
  "___maskrune", referenced from:
      _check_interpreter in proc.o
  "___snprintf_chk", referenced from:
      ___darwintrace_sandbox_check in darwintrace.o
      ___darwintrace_log_op in darwintrace.o
  "___stack_chk_fail", referenced from:
      ___darwintrace_setup in darwintrace.o
      ___darwintrace_is_in_sandbox in darwintrace.o
      ___darwintrace_sandbox_check in darwintrace.o
      ___darwintrace_log_op in darwintrace.o
      _check_interpreter in proc.o
      __dt_getdirentries64 in readdir.o
     __dt_getdirentries in readdir.o
  ...

  "_unlink", referenced from:
      __interpose_unlink in unlink.o
ld: symbol(s) not found for architecture i386
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make[2]: *** [darwintrace.dylib] Error 1
make[1]: *** [all] Error 1
make: *** [all] Error 1

如何从 Xcode 中删除 i386 架构?我该如何解决这个错误?

ios xcode clang
3个回答
3
投票

使用 xcode 9.4 或 9.4.1,这是支持 32 位构建的最后一个版本,并且在 Mojave 上有效。


2
投票

所以问题是苹果已经取消了使用 xcode10 在 macos 上编译 32 位程序的能力

来源:https://developer.apple.com/documentation/xcode_release_notes/xcode_10_release_notes


0
投票

修改CMakeLists.txt删除i386字样 ;最后的 mac os 上不支持。 i386 软件符合要求

© www.soinside.com 2019 - 2024. All rights reserved.