【问题标题】:Tensorflow: ios compiling errors ( duplicate symbols)Tensorflow:ios编译错误(重复符号)
【发布时间】:2016-08-29 15:18:57
【问题描述】:

我正在为 ios 编译 tensorflow,并按照https://github.com/tensorflow/tensorflow/tree/master/tensorflow/contrib/makefile1 的说明进行操作。

我能够通过前两个步骤:

sh tensorflow/contrib/makefile/download_dependencies.sh



sh tensorflow/contrib/makefile/compile_ios_protobuf.sh

但是,我得到了重复的符号错误?当我跑的时候

make -f tensorflow/contrib/makefile/Makefile \
 TARGET=IOS \
 IOS_ARCH=ARM64

有人可以帮忙吗?谢谢

以下是错误:

~/Documents/Projects/tensorflow/tensorflow/contrib/makefile/gen/lib/ios_ARM64/libtensorflow-core.a -arch arm64 
-miphoneos-version-min=9.2 -framework Accelerate -Xlinker -S -Xlinker -x -Xlinker -dead_strip -all_load 
L ~/Documents/Projects/tensorflow/tensorflow/contrib/makefile/gen/protobuf_ios/lib -lz -lstdc++ -lprotobuf -lz -lm

duplicate symbol __ZN10tensorflow7NodeDef10SharedDtorEv in:
 ~/Documents/Projects/tensorflow/tensorflow/contrib/makefile/gen/lib/ios_ARM64/libtensorflow-core.a(node_def.pb.o)


duplicate symbol __ZN10tensorflow7NodeDef10SharedCtorEv in:
~/Documents/Projects/tensorflow/tensorflow/contrib/makefile/gen/lib/ios_ARM64/libtensorflow-core.a(node_def.pb.o)


duplicate symbol __ZN10tensorflow7NodeDef5ClearEv in:
 ~/Documents/Projects/tensorflow/tensorflow/contrib/makefile/gen/lib/ios_ARM64/libtensorflow-core.a(node_def.pb.o)

duplicate symbol __ZN10tensorflow72protobuf_ShutdownFile_tensorflow_2fcore_2fframework_2fnode_5fdef_2eprotoEv in:
~/Documents/Projects/tensorflow/tensorflow/contrib/makefile/gen/lib/ios_ARM64/libtensorflow-core.a(node_def.pb.o)


duplicate symbol __ZN10tensorflow70protobuf_AssignDesc_tensorflow_2fcore_2fframework_2fnode_5fdef_2eprotoEv 
in: ~/Documents/Projects/tensorflow/tensorflow/contrib/makefile/gen/lib/ios_ARM64/libtensorflow-core.a(node_def.pb.o)


duplicate symbol __ZN10tensorflow67protobuf_AddDesc_tensorflow_2fcore_2fframework_2fnode_5fdef_2eprotoEv in:
 ~/Documents/Projects/tensorflow/tensorflow/contrib/makefile/gen/lib/ios_ARM64/libtensorflow-core.a(node_def.pb.o)


duplicate symbol __ZNK10tensorflow7NodeDef8ByteSizeEv in:
 ~/Documents/Projects/tensorflow/tensorflow/contrib/makefile/gen/lib/ios_ARM64/libtensorflow-core.a(node_def.pb.o)

duplicate symbol __ZN10tensorflow7NodeDef16default_instanceEv in:  
~/Documents/Projects/tensorflow/tensorflow/contrib/makefile/gen/lib/ios_ARM64/libtensorflow-core.a(node_def.pb.o)

duplicate symbol __ZN10tensorflow7NodeDef21InitAsDefaultInstanceEv in:
 ~/Documents/Projects/tensorflow/tensorflow/contrib/makefile/gen/lib/ios_ARM64/libtensorflow-core.a(node_def.pb.o)

duplicate symbol __ZNK10tensorflow7NodeDef13IsInitializedEv in:  
~/Documents/Projects/tensorflow/tensorflow/contrib/makefile/gen/lib/ios_ARM64/libtensorflow-core.a(node_def.pb.o)

duplicate symbol __ZNK10tensorflow7NodeDef11GetMetadataEv in:
 ~/Documents/Projects/tensorflow/tensorflow/contrib/makefile/gen/lib/ios_ARM64/libtensorflow-core.a(node_def.pb.o)

duplicate symbol __ZN10tensorflow7NodeDefD2Ev in:
 ~/Documents/Projects/tensorflow/tensorflow/contrib/makefile/gen/lib/ios_ARM64/libtensorflow-core.a(node_def.pb.o)

duplicate symbol __ZN10tensorflow7NodeDefC2Ev in:  
~/Documents/Projects/tensorflow/tensorflow/contrib/makefile/gen/lib/ios_ARM64/libtensorflow-core.a(node_def.pb.o)

duplicate symbol __ZN10tensorflow7NodeDefD1Ev in: 
 ~/Documents/Projects/tensorflow/tensorflow/contrib/makefile/gen/lib/ios_ARM64/libtensorflow-core.a(node_def.pb.o)

duplicate symbol __ZN10tensorflow7NodeDefC1Ev in:  
~/Documents/Projects/tensorflow/tensorflow/contrib/makefile/gen/lib/ios_ARM64/libtensorflow-core.a(node_def.pb.o)

duplicate symbol __ZN10tensorflow7NodeDefD0Ev in:  
~/Documents/Projects/tensorflow/tensorflow/contrib/makefile/gen/lib/ios_ARM64/libtensorflow-core.a(node_def.pb.o)

duplicate symbol __ZNK10tensorflow7NodeDef13SetCachedSizeEi in: 
 ~/Documents/Projects/tensorflow/tensorflow/contrib/makefile/gen/lib/ios_ARM64/libtensorflow-core.a(node_def.pb.o)

duplicate symbol __ZNK10tensorflow7NodeDef39InternalSerializeWithCachedSizesToArrayEbPh in:
  ~/Documents/Projects/tensorflow/tensorflow/contrib/makefile/gen/lib/ios_ARM64/libtensorflow-core.a(node_def.pb.o)

duplicate symbol __ZN10tensorflow7NodeDef8CopyFromERKS0_ in:   
 ~/Documents/Projects/tensorflow/tensorflow/contrib/makefile/gen/lib/ios_ARM64/libtensorflow-core.a(node_def.pb.o)

duplicate symbol __ZN10tensorflow7NodeDef9MergeFromERKS0_ in:    
~/Documents/Projects/tensorflow/tensorflow/contrib/makefile/gen/lib/ios_ARM64/libtensorflow-core.a(node_def.pb.o)

duplicate symbol __ZN10tensorflow7NodeDefC2ERKS0_ in:
    ~/Documents/Projects/tensorflow/tensorflow/contrib/makefile/gen/lib/ios_ARM64/libtensorflow-core.a(node_def.pb.o)

duplicate symbol __ZN10tensorflow7NodeDefC1ERKS0_ in:
    ~/Documents/Projects/tensorflow/tensorflow/contrib/makefile/gen/lib/ios_ARM64/libtensorflow-core.a(node_def.pb.o)

duplicate symbol __ZNK10tensorflow7NodeDef24SerializeWithCachedSizesEPN6google8protobuf2io17CodedOutputStreamE in:
    ~/Documents/Projects/tensorflow/tensorflow/contrib/makefile/gen/lib/ios_ARM64/libtensorflow-core.a(node_def.pb.o)

duplicate symbol __ZN10tensorflow7NodeDef27MergePartialFromCodedStreamEPN6google8protobuf2io16CodedInputStreamE in:
 ~/Documents/Projects/tensorflow/tensorflow/contrib/makefile/gen/lib/ios_ARM64/libtensorflow-core.a(node_def.pb.o)

duplicate symbol __ZTVN10tensorflow7NodeDefE in:    
~/Documents/Projects/tensorflow/tensorflow/contrib/makefile/gen/lib/ios_ARM64/libtensorflow-core.a(node_def.pb.o)

duplicate symbol __ZTSN10tensorflow7NodeDefE in:  
~/Documents/Projects/tensorflow/tensorflow/contrib/makefile/gen/lib/ios_ARM64/libtensorflow-core.a(node_def.pb.o)

duplicate symbol __ZTIN10tensorflow7NodeDefE in:
    ~/Documents/Projects/tensorflow/tensorflow/contrib/makefile/gen/lib/ios_ARM64/libtensorflow-core.a(node_def.pb.o)

duplicate symbol __ZN10tensorflow7NodeDef8CopyFromERKN6google8protobuf7MessageE in:
    ~/Documents/Projects/tensorflow/tensorflow/contrib/makefile/gen/lib/ios_ARM64/libtensorflow-core.a(node_def.pb.o)

duplicate symbol __ZN10tensorflow7NodeDef9MergeFromERKN6google8protobuf7MessageE in:
    ~/Documents/Projects/tensorflow/tensorflow/contrib/makefile/gen/lib/ios_ARM64/libtensorflow-core.a(node_def.pb.o)

duplicate symbol __ZNK10tensorflow7NodeDef3NewEPN6google8protobuf5ArenaE in:
    ~/Documents/Projects/tensorflow/tensorflow/contrib/makefile/gen/lib/ios_ARM64/libtensorflow-core.a(node_def.pb.o)

duplicate symbol __ZN10tensorflow7NodeDefC2EPN6google8protobuf5ArenaE in:
    ~/Documents/Projects/tensorflow/tensorflow/contrib/makefile/gen/lib/ios_ARM64/libtensorflow-core.a(node_def.pb.o)

duplicate symbol __ZN10tensorflow7NodeDefC1EPN6google8protobuf5ArenaE in:
    ~/Documents/Projects/tensorflow/tensorflow/contrib/makefile/gen/lib/ios_ARM64/libtensorflow-core.a(node_def.pb.o)

duplicate symbol __ZN10tensorflow81static_descriptor_initializer_tensorflow_2fcore_2fframework_2fnode_5fdef_2eproto_E in:
    ~/Documents/Projects/tensorflow/tensorflow/contrib/makefile/gen/lib/ios_ARM64/libtensorflow-core.a(node_def.pb.o)

duplicate symbol __ZN10tensorflow7NodeDef17default_instance_E in:
    ~/Documents/Projects/tensorflow/tensorflow/contrib/makefile/gen/lib/ios_ARM64/libtensorflow-core.a(node_def.pb.o)

ld: 44 duplicate symbols for architecture arm64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make: *** [~/Documents/Projects/tensorflow/tensorflow/contrib/makefile/gen/bin/ios_ARM64/benchmark] Error 1

【问题讨论】:

  • 请格式化您的问题
  • @bub 谢谢,重新格式化

标签: c++ ios tensorflow


【解决方案1】:

可能不止一个,

libtensorflow-core.a in your project.

所以尝试删除它,而不是重新制作它。

您的项目中有一些重复的文件或方法或变量。因此,请尝试搜索并删除它们。

【讨论】:

  • 谢谢,这有点奇怪。我在 tensorflow repo 中检查了最新的提交:4c49dbeef05442c7e72d6129a30574fcd13f0e1。不知何故,编译错误消失了。
  • 欢迎兄弟。 @H。毛
【解决方案2】:

在撰写本文时,TensorFlow 的 HEAD 不适用于 iOS。如果关闭了此类临时问题会有所帮助,因此这里有两种通用机制(如果我错过了要链接到的相关问题,请帮助!):

  • 如果您正在检查任何类型的存储库的前沿(如果您使用 Git,通常是 master 上的 HEAD),预计会中断。发布标签通常更稳定,并且应该构建良好,但以缺少最新更改为代价。例如,git tag 列出标签,通常有 vX.Y.Z 模式可供选择。
  • 如果您必须从源代码重新构建,通常最好(并非总是需要)先清理当前构建。清理需要时间,因此您可以乐观地直接构建,然后在出现任何问题时清理/构建。通常,命令类似于make -f tensorflow/contrib/makefile/Makefile clean

另外,TensorFlow 的官方构建系统依赖于 Bazel,而 make 构建系统大部分时间滞后:所有依赖于 make 的平台在 HEAD 处崩溃的风险更高(再次,即并不总是正确的)。请注意make 构建系统位于tensorflow/contrib 目录中,该目录被明确放在一边。

【讨论】:

    猜你喜欢
    • 2013-03-08
    • 2012-08-27
    • 2013-01-03
    • 2021-02-20
    • 1970-01-01
    • 2019-10-30
    • 2016-05-29
    • 2016-06-30
    • 2021-12-03
    相关资源
    最近更新 更多