_ZN10tensorflow8internal21CheckOpMessageBuilder9NewStringEv_undefined symbol: _zn10tensorflow8internal21checko-程序员宅基地

技术标签: 环境配置  深度学习  

undefined symbol: _ZN10tensorflow8internal21CheckOpMessageBuilder9NewStringEv

这是一类错误。问题的指向编译没有编译成功。前面的错误 tensorflow.python.framework.errors_impl.NotFoundError: /home/wjay/deeplearning/PU-GAN/PU-G
AN-master/tf_ops/sampling/tf_sampling_so.so: 这是告诉你哪个文件没有编译好。针对这个文件到对应的sh文件中修改。

我的应用场景是PU-GAN的代码没有编译成功。没有前面的错误好修改,通过提示,你可以猜到,其实是因为我们从github下载的代码,别人的环境以及路径个跟我们的不一致的导致的。

举个简单的例子:

在PU-GAN代码中需要编译tf_ops下所有的tf_xxx_compile.sh文件:

#!/usr/bin/env bash
#/bin/bash
/usr/local/cuda-10.1/bin/nvcc tf_sampling_g.cu -o tf_sampling_g.cu.o -c -O2 -DGOOGLE_CUDA=
1 -x cu -Xcompiler -fPIC#g++ -std=c++11 tf_sampling.cpp tf_sampling_g.cu.o -o tf_sampling_so.so -shared -fPIC -I /
data/lirh/anaconda3/envs/tensorflow3/lib/python3.6/site-packages/tensorflow/include  -I /usr/local/cuda-8.0/include -lcudart -L /usr/local/cuda-8.0/lib64/ -O2 -D_GLIBCXX_USE_CXX11_ABI=0g++ -std=c++11 tf_sampling.cpp tf_sampling_g.cu.o -o tf_sampling_so.so -shared -fPIC -I /h
ome/lirh/anaconda3/envs/tensorflow11/lib/python3.6/site-packages/tensorflow/include  -I /usr/local/cuda-8.0/include -I /home/lirh/anaconda11/envs/tensorflow3/lib/python3.6/site-packages/tensorflow/include/external/nsync/public -lcudart -L /usr/local/cuda-8.0/lib64/ -L/home/lirh/anaconda3/envs/tensorflow11/lib/python3.6/site-packages/tensorflow -ltensorflow_framework -O2 -D_GLIBCXX_USE_CXX11_ABI=1

源文件如此,通过观察我们知道:原作者,用的cuda是10.1,但我是9.0,那么我们就需要把所有cuda-10.1修改为9.0。修改完之后,我们还会报错:因为tensorflow的位置不对,再观察发现作者用的anaconda3所以,你要换成自己的python路径。把所有python3.6的地方换成自己的python3.6路径。

操作完上面两个地方后,还是有个问题:编译没有通过,错误如文章一开头。

解决方案:

1. Problem

When buiding cumtom op in tensorflow, this error occured.

tensorflow.python.framework.errors_impl.NotFoundError: /home/zyt3781909/project/project/objdect/networks/layers/roi_pooling_layer/roi_pooling.so: undefined symbol: _ZN10tensorflow8internal21CheckOpMessageBuilder9NewStringEv

2. Solution

link

-D_GLIBCXX_USE_CXX11_ABI=0

0 -> 1 or 1 -> 0.

此外还有如下错误:

错误信息为:tensorflow.python.framework.errors_impl.NotFoundError: /home/wjay/deeplearning/PU-GAN/PU-GAN-master/tf_ops/grouping/tf_grouping_so.so: undefined symb
ol: _ZN10tensorflow8internal21CheckOpMessageBuilder9NewStringB5cxx11Ev

#!/usr/bin/env bash
#/bin/bash
/usr/local/cuda-9.0/bin/nvcc tf_sampling_g.cu -o tf_sampling_g.cu.o -c -O2 -DGOOGLE_CUDA=1 -x cu -Xcompiler -fPIC
#g++ -std=c++11 tf_sampling.cpp tf_sampling_g.cu.o -o tf_sampling_so.so -shared -fPIC -I /data/lirh/anaconda3/envs/tensorflow3/lib/python3.6/site-packages/tensorflow/include  -I /usr/local/cuda-8.0/include -lcudart -L /usr/local/cuda-8.0/lib64/ -O2 -D_GLIBCXX_USE_CXX11_ABI=0
g++ -std=c++11 tf_sampling.cpp tf_sampling_g.cu.o -o tf_sampling_so.so -shared -fPIC -I /home/wjay/.local/lib/python3.6/site-packages/tensorflow/include  -I /usr/local/cuda-9.0/include -I /home/wjay/.local/lib/python3.6/site-packages/tensorflow/include/external/nsync/public -lcudart -L /usr/local/cuda-9.0/lib64/ -L/home/wjay/.local/lib/python3.6/site-packages/tensorflow -ltensorflow_framework   -O2  -D_GLIBCXX_USE_CXX11_ABI=0

修改方式还是修改最后的0或者1。修改完,别忘sh tf_xxx.sh编译一下。

 

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/xiaoyaolangwj/article/details/117884593

智能推荐

常见服务器对jdk版本的支持_jdk 不支持国产服务器-程序员宅基地

文章浏览阅读2.6k次。WebSphere5.1:JDK1.4,Servelet2.3、JSP1.2WebSphere6.0:JDK1.4,Servelet2.4、JSP2.0WebSphere6.1:JDK5.0,Servelet2.4、JSP2.0Tomcat4.1:JDK1.4,Servelet2.3、JSP1.2Tomcat5.5:JDK5.0,Servelet2.4、JSP2.0_jdk 不支持国产服务器

mysql55dialect_关于数据库方言MySQLDialect、MySQL5Dialect、MySQL55Dialect、MySQL57Dialect、MySQL8Dialect之间的区别与联系...-程序员宅基地

文章浏览阅读657次。什么是Hibernate方言?Hibernate方言是用来告诉Hibernte如何对指定的数据库生成相应的SQL语句。尽管做了很多尝试去使SQL语句标准化,但是不同的数据库支持的SQL语句还是有很多不同的地方。所以Hibernate使用方言来辅助生成正确的SQL语句。①MySQLDialect②MySQL5Dialect③MySQL55Dialect④MySQL57Dialect⑤MySQL8Di..._mysql5dialect

[答疑]这个DDD上下文图是不是废话刷工作量_ddd ohs/pl-程序员宅基地

文章浏览阅读165次。软件方法(下)分析和设计第8章连载[20210816更新]分析 之 分析类图——知识篇评张逸的“状态和事件本质相同”(上)-DDD话语批评之一钢铁侠 2021-9-13 20:34我在看实现领域驱动设计这本书,请教老师像这个图UML怎么表示。感觉里面的一些图就像您写的废话工作量文章讲的,看起来很多,其实没什么东西UMLChina潘加宇这是“上下文映射图”(Context Map),DDD话语体系里的一个“创新”。先来说废话刷工作量的问题。看书中这个图下面的文字,作者可能觉得这样画还挺不错的,其实废话不少。(_ddd ohs/pl

Window10 安装Linux子系统_win10 linux-程序员宅基地

文章浏览阅读3.4k次。WSL是win10 的Linux的子系统,相比虚拟机有更多的优势,对系统资源占用少,切换系统之间较为的方便。_win10 linux

CentOS 7升级gcc版本至11.2.1_gcc version 11.2.1-程序员宅基地

文章浏览阅读5.2k次,点赞6次,收藏13次。1、安装centos-release-sclsudo yum install centos-release-scl2、安装devtoolset,11为版本号sudo yum install devtoolset-11-gcc*3、临时激活对应的devtoolset,11为版本号scl enable devtoolset-11 bash4、永久激活软链接11为版本号mv /usr/bin/gcc /usr/bin/gcc-4.8.5ln -s /opt/rh/devtoolset-11_gcc version 11.2.1

python cart树_从零开始学Python—CART决策树-程序员宅基地

文章浏览阅读188次。原标题:从零开始学Python—CART决策树 前言决策树属于经典的十大数据挖掘算法之一,是一种类似于流程图的树结构,其规则就是IF…THEN…的思想,可以用于数值型因变量的预测和离散型因变量的分类。该算法简单直观、通俗易懂,不需要研究者掌握任何领域知识或复杂的数学推理,而且算法的结果输出具有很强的解释性。使用决策树过程中,有两个非常重要的核心问题需要解决,一个是决策树中节点字段的选择,另一个是决..._cart决策树python

随便推点

中兴B860AV2.1U_非高安_晶晨S905LB处理器_8189无线_线刷固件包-程序员宅基地

文章浏览阅读1.8k次。2、电脑上安装好刷机工具Amlogic USB Burning Tool 软件 →打开软件 →文件 →导入烧录包 →把【擦除flash】和【擦除bootloader】两项勾选先默认去掉(如不识别或进度条不走再打勾刷机) →点击【开始】 →盒子接电源线 →电源关闭 →把USB线一端插上盒子 →保持短接 →USB另一端插上电脑 →通电开机。_b860av2.1u

[爱分享]深度理解i++ **** ++i的底层原理。_i++*++i-程序员宅基地

文章浏览阅读3.4k次。**一,首先理解i++ ,++i**i++与++i都是Java中的算数运算符,表示自增(操作数的值增加1)i++:先进行表达式运算(例如:赋值),再自增++i:先自增,再进行表达式运算(例如:赋值)i++ 先赋值在运算,例如 a=i++,先赋值a=i,后运算i=i+1,所以结果是a==1++i 先运算在赋值,例如 a=++i,先运算i=i+1,后赋值a=i,所以结果是a==2..._i++*++i

windows任务计划程序运行python脚本失败的原因_任务计划程序无法启动python.exe-程序员宅基地

文章浏览阅读5.6k次,点赞14次,收藏9次。windows任务计划程序运行python脚本直接闪退?运行结果显示(0x1)?引发了FileNotFoundError异常?_任务计划程序无法启动python.exe

jenkins自动拉取git代码并运行_windows jenkins调用git bash-程序员宅基地

文章浏览阅读1.2k次。当我们的Jenkins要在某一台固定的电脑执行,我们则要将这台电脑加到Jenkins里。操作步骤如下:1、节点管理点击Jenkins首页,然后点击系统管理–节点管理,进入到节点管理页面2、点击新建节点3、在执行(测试)机器上,我们可以同时执行几个任务。远程工作目录:即我们放置代码的目录,我们要执行的代码的目录![在这里插入图片描述](https://img-blog.csdnimg.cn/20200618192134332.pngUsage:(1)尽可能的使用这个节点:即既可以_windows jenkins调用git bash

Freesurfer tutorial主要内容_brodmann and exvio ec labels-程序员宅基地

文章浏览阅读4.1k次,点赞2次,收藏17次。Introduction to Freesurfer Outputhttps://surfer.nmr.mgh.harvard.edu/fswiki/FsTutorial/OutputData_freeviewhttps://blog.csdn.net/qq_28480795/article/details/105094883本教程旨在介绍Freeview。有关此处未介绍的按钮或菜单选项的信息,您可以在FreeviewGuide wiki上找到。主要内容:如何可视化和检查FreeSurfer数据_brodmann and exvio ec labels

java基于微信小程序的奶茶点餐系统 奶茶店奶茶点餐小程序(源码(1)-程序员宅基地

文章浏览阅读263次,点赞3次,收藏4次。近年来,随着微信的快速发展,基于微信平台的应用层出不穷,许多商家也将点餐系统部署到了微信平台上,顾客可以从微信直接登录到点餐系统中进行菜品浏览,下单与支付,这使得点餐变得更加方便与快捷。本课题针对奶茶店设计出一个奶茶点餐微信小程序,奶茶点餐小程序可以帮助传统实体奶茶店在线上实现奶茶的售卖,并且使顾客也能更加方便快捷地购买到自己想要的奶茶饮品。博主介绍:全网粉丝10W+,CSDN全栈领域优质创作者,博客之星、掘金/华为云/阿里云等平台优质作者。 精彩专栏 推荐订阅。

推荐文章

热门文章

相关标签