我是新手。
尝试使用以下命令构建 iOS 的选择性框架 -
bash tensorflow/lite/ios/build_frameworks.sh
--input_models=model1.tflite,model2.tflite
--target_archs=x86_64,armv7,arm64
但是出现错误 -
ERROR: /private/var/tmp/_bazel_tonmoy/d1033cf820cfe9e8569d67cf059cb6df/external/upb/BUILD:57:11: Compiling upb/upb.c [for tool] failed: (Exit 1): wrapped_clang failed: error executing command (from target @upb//:upb) external/local_config_cc/wrapped_clang '-D_FORTIFY_SOURCE=1' -fstack-protector -fcolor-diagnostics -Wall -Wthread-safety -Wself-assign -fno-omit-frame-pointer -g0 -O2 -DNDEBUG '-DNS_BLOCK_ASSERTIONS=1' ... (remaining 32 arguments skipped)
external/upb/upb/upb.c:192:10: error: defining a type within 'offsetof' is a Clang
extension [-Werror,-Wgnu-offsetof-extensions]
192 | n &= ~(upb_alignof(upb_arena) - 1);
| ^~~~~~~~~~~~~~~~~~~~~~
external/upb/upb/upb.c:183:37: note: expanded from macro 'upb_alignof'
183 | #define upb_alignof(type) offsetof (struct { char c; type member; }, member)
| ^~~~~~
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/16/include/__stddef_offsetof.h:16:43: note: expanded from macro 'offsetof'
16 | #define offsetof(t, d) __builtin_offsetof(t, d)
| ^
1 error generated.
Error in child process '/usr/bin/xcrun'. 1
Target //tensorflow/lite/ios/tmp:TensorFlowLiteSelectTfOps_framework failed to build
Use --verbose_failures to see the command lines of failed build steps.
INFO: Elapsed time: 218.346s, Critical Path: 17.92s
INFO: 4162 processes: 747 internal, 3415 local.
FAILED: Build did NOT complete successfully
如何解决这个问题,我对这个问题非常初学者。可能是什么原因。
您在使用 TensorFlow Lite 构建 iOS 选择性框架期间遇到的错误表明 upb 库编译存在问题。让我们分解问题并探索解决方案:
错误细分:
编译器:Clang 错误消息:在 offsetof 中定义类型是 Clang 扩展(-Werror、-Wgnu-offsetof-extensions) 位置:外部/upb/upb.c:192 该代码片段尝试在表达式内使用带有类型的 offsetof,这是 Clang 支持的非标准扩展,但由于 -Werror 标志将警告视为错误而导致编译失败。
原因及解决办法:
Clang 扩展:upb 库可能是用一些特定于 Clang 的扩展编写的。这对于跨平台构建可能会出现问题。
解决方案:有两种办法: 禁用警告标志:您可以将 -Wno-gnu-offsetof-extensions 添加到编译器标志中以抑制此特定警告。但是,这可能掩盖其他潜在问题。