我对 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 架构?我该如何解决这个错误?
使用 xcode 9.4 或 9.4.1,这是支持 32 位构建的最后一个版本,并且在 Mojave 上有效。
所以问题是苹果已经取消了使用 xcode10 在 macos 上编译 32 位程序的能力
来源:https://developer.apple.com/documentation/xcode_release_notes/xcode_10_release_notes
修改CMakeLists.txt删除i386字样 ;最后的 mac os 上不支持。 i386 软件符合要求