兼容问题“PNG12_0“ not found and libIlmImf.so与Nsight eclipse下的profile问题

问题出现在我用ubuntu20.04上使用opencv3.4.1,其实ubuntu16.04+opencv3.4.1没问题以及ubuntu20.04+opencv4.4.0都没问题。但因某些原因要ubuntu20.04+opencv3.4.1,而opencv3.4.1需要的是PNG12,但自从ubuntu16.04后其他的ubuntu都已经丢弃了png12:

经过重重尝试:

1,download libpng12-0_1.2.54-1ubuntu1.1_amd64.deb by yourself and then run the following sentense:
 sudo dpkg -i libpng12-0_1.2.54-1ubuntu1.1_amd64.deb
 
但安装过程中显示:
 正在选中未选择的软件包 libpng12-0:amd64。
(正在读取数据库 ... 系统当前共安装有 203035 个文件和目录。)
准备解压 .../libpng12-0_1.2.54-1ubuntu1.1_amd64.deb  ...
正在解压 libpng12-0:amd64 (1.2.54-1ubuntu1.1) ...
dpkg: 处理归档 /home/SSD/workspace/libpng12-0_1.2.54-1ubuntu1.1_amd64.deb (--install)时出错:
 无法安装 /lib/x86_64-linux-gnu/libpng12.so.0 的新版本: 没有那个文件或目录
正在处理用于 libc-bin (2.31-0ubuntu9) 的触发器 ...
在处理时有错误发生:
 /home/SSD/workspace/libpng12-0_1.2.54-1ubuntu1.1_amd64.deb
 
 
 
 2,
 wget -q -O /tmp/libpng12.deb http://mirrors.kernel.org/ubuntu/pool/main/libp/libpng/libpng12-0_1.2.54-1ubuntu1_amd64.deb \
  && dpkg -i /tmp/libpng12.deb \
  && rm /tmp/libpng12.deb
  但安装过程中显示有一些问题
  
  3,
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 3B4FE6ACC0B21F32
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 40976EAF437D05B5
echo "deb http://mirrors.kernel.org/ubuntu/ xenial main" | sudo tee -a /etc/apt/sources.list && sudo apt-get update && sudo apt install -y --allow-unauthenticated libpng12-0
sudo apt-get update && sudo apt install -y --allow-unauthenticated libpng12-0

但安装过程中显示:
升级了 0 个软件包,新安装了 1 个软件包,要卸载 0 个软件包,有 204 个软件包未被升级。
需要下载 116 kB 的归档。
解压缩后会消耗 285 kB 的额外空间。
获取:1 http://mirrors.edge.kernel.org/ubuntu xenial/main amd64 libpng12-0 amd64 1.2.54-1ubuntu1 [116 kB]
已下载 116 kB,耗时 1秒 (127 kB/s)
(正在读取数据库 ... 系统当前共安装有 203209 个文件和目录。)
准备解压 .../libpng12-0_1.2.54-1ubuntu1_amd64.deb  ...
正在解压 libpng12-0:amd64 (1.2.54-1ubuntu1) ...
dpkg: 处理归档 /var/cache/apt/archives/libpng12-0_1.2.54-1ubuntu1_amd64.deb (--unpack)时出错:
 无法安装 /lib/x86_64-linux-gnu/libpng12.so.0 的新版本: 没有那个文件或目录
错误信息显示本地系统有一些问题,因此没有写入 apport 报告
                                                        在处理时有错误发生:
 /var/cache/apt/archives/libpng12-0_1.2.54-1ubuntu1_amd64.deb
E: Sub-process /usr/bin/dpkg returned an error code (1)



4,solved as the following shows https://tieba.baidu.com/p/6838166752:
sudo add-apt-repository ppa:linuxuprising/libpng12
sudo apt update
sudo apt install libpng12-0

最终靠第4个办法解决了"PNG12_0"的问题!

但现在有一个新问题:

symbol lookup error: /home/SSD/workspace/opencv3.4.1/lib/libopencv_imgcodecs.so.3.4: undefined symbol: _ZN7Imf_2_214ChromaticitiesC1ERKN9Imath_2_24Vec2IfEES5_S5_S5_

这个尚未解决。

 

 

 

 

/**********ubuntu16.04中使用opencv4.4.0(opencv4.4.0是在ubuntu20.04中编译并测试通过,然而给ubuntu16.04中使用时出现如下问题)***********/

/usr/bin/ld: warning: libpng16.so.16, needed by /home/jumper/workspace/opencv4.4.0/lib/libopencv_world.so, not found (try using -rpath or -rpath-link)
/usr/bin/ld: warning: libIlmImf-2_3.so.24, needed by /home/jumper/workspace/opencv4.4.0/lib/libopencv_world.so, not found (try using -rpath or -rpath-link)
/home/jumper/workspace/opencv4.4.0/lib/libopencv_world.so:对‘Imf_2_3::OutputFile::setFrameBuffer(Imf_2_3::FrameBuffer const&)’未定义的引用
/home/jumper/workspace/opencv4.4.0/lib/libopencv_world.so:对‘png_get_io_ptr@PNG16_0’未定义的引用
/home/jumper/workspace/opencv4.4.0/lib/libopencv_world.so:对‘Imf_2_3::chromaticities(Imf_2_3::Header const&)’未定义的引用
/home/jumper/workspace/opencv4.4.0/lib/libopencv_world.so:对‘Imf_2_3::InputFile::setFrameBuffer(Imf_2_3::FrameBuffer const&)’未定义的引用
/home/jumper/workspace/opencv4.4.0/lib/libopencv_world.so:对‘png_get_tRNS@PNG16_0’未定义的引用
/home/jumper/workspace/opencv4.4.0/lib/libopencv_world.so:对‘powf@GLIBC_2.27’未定义的引用
/home/jumper/workspace/opencv4.4.0/lib/libopencv_world.so:对‘Imf_2_3::FrameBuffer::end()’未定义的引用
/home/jumper/workspace/opencv4.4.0/lib/libopencv_world.so:对‘std::runtime_error::runtime_error(std::runtime_error&&)@GLIBCXX_3.4.26’未定义的引用
/home/jumper/workspace/opencv4.4.0/lib/libopencv_world.so:对‘png_error@PNG16_0’未定义的引用
/home/jumper/workspace/opencv4.4.0/lib/libopencv_world.so:对‘png_set_strip_16@PNG16_0’未定义的引用
/home/jumper/workspace/opencv4.4.0/lib/libopencv_world.so:对‘Imf_2_3::ChannelList::findChannel(char const*) const’未定义的引用
/home/jumper/workspace/opencv4.4.0/lib/libopencv_world.so:对‘png_set_tRNS_to_alpha@PNG16_0’未定义的引用
/home/jumper/workspace/opencv4.4.0/lib/libopencv_world.so:对‘Imf_2_3::OutputFile::~OutputFile()’未定义的引用
/home/jumper/workspace/opencv4.4.0/lib/libopencv_world.so:对‘png_init_io@PNG16_0’未定义的引用
/home/jumper/workspace/opencv4.4.0/lib/libopencv_world.so:对‘log@GLIBC_2.29’未定义的引用
/home/jumper/workspace/opencv4.4.0/lib/libopencv_world.so:对‘expf@GLIBC_2.27’未定义的引用
/home/jumper/workspace/opencv4.4.0/lib/libopencv_world.so:对‘png_read_update_info@PNG16_0’未定义的引用
/home/jumper/workspace/opencv4.4.0/lib/libopencv_world.so:对‘Imf_2_3::OutputFile::writePixels(int)’未定义的引用
/home/jumper/workspace/opencv4.4.0/lib/libopencv_world.so:对‘png_read_info@PNG16_0’未定义的引用
/home/jumper/workspace/opencv4.4.0/lib/libopencv_world.so:对‘Imf_2_3::InputFile::InputFile(char const*, int)’未定义的引用
/home/jumper/workspace/opencv4.4.0/lib/libopencv_world.so:对‘Imf_2_3::Header::channels()’未定义的引用
/home/jumper/workspace/opencv4.4.0/lib/libopencv_world.so:对‘png_set_gray_to_rgb@PNG16_0’未定义的引用
/home/jumper/workspace/opencv4.4.0/lib/libopencv_world.so:对‘__cxa_init_primary_exception@CXXABI_1.3.11’未定义的引用
/home/jumper/workspace/opencv4.4.0/lib/libopencv_world.so:对‘Imf_2_3::FrameBuffer::begin()’未定义的引用
/home/jumper/workspace/opencv4.4.0/lib/libopencv_world.so:对‘png_set_rgb_to_gray@PNG16_0’未定义的引用
/home/jumper/workspace/opencv4.4.0/lib/libopencv_world.so:对‘Imf_2_3::Header::Header(int, int, float, Imath_2_3::Vec2<float> const&, float, Imf_2_3::LineOrder, Imf_2_3::Compression)’未定义的引用
/home/jumper/workspace/opencv4.4.0/lib/libopencv_world.so:对‘png_destroy_read_struct@PNG16_0’未定义的引用


1,apt-get install libpng16-dev

2,download libIlmImf...rpm file

website:https://rpmfind.net/linux/rpm2html/search.php?query=libIlmImf-2_3.so.24%28%29%2864bit%29&submit=Search+...&system=&arch=
And then solved as the following shows:

sudo add-apt-repository universe
sudo apt-get update
sudo apt-get install alien
sudo alien <name of package>.rpm
sudo dpkg -i <name of package>.deb
sudo alien -i <name of package>.rpm

3,
/usr/bin/ld: warning: libHalf.so.24, needed by //usr/lib64/libIlmImf-2_3.so.24, not found (try using -rpath or -rpath-link)
/usr/bin/ld: warning: libIex-2_3.so.24, needed by //usr/lib64/libIlmImf-2_3.so.24, not found (try using -rpath or -rpath-link)
/usr/bin/ld: warning: libIlmThread-2_3.so.24, needed by //usr/lib64/libIlmImf-2_3.so.24, not found (try using -rpath or -rpath-link)

solution:website: https://www.rpmfind.net/linux/rpm2html/search.php?query=libIlmThread-2_3.so.24()(64bit) download the fittable version of lib64ilmbase24-2.3.0...rpm and then install it.


4,
Invoking: GCC C++ Linker
g++ -std=c++11 -L/home/jumper/workspace/opencv4.4.0/lib -L/home/jumper/workspace/tensorflow_cc/lib -o "PredictCharacters"  ./src/charactersPredict.o ./src/text_detection.o ./src/wglastversion.o   -lpthread -ltensorflow_cc -ltensorflow_framework -lopencv_world
/home/jumper/workspace/opencv4.4.0/lib/libopencv_world.so:对‘powf@GLIBC_2.27’未定义的引用
/home/jumper/workspace/opencv4.4.0/lib/libopencv_world.so:对‘std::runtime_error::runtime_error(std::runtime_error&&)@GLIBCXX_3.4.26’未定义的引用
/home/jumper/workspace/opencv4.4.0/lib/libopencv_world.so:对‘log@GLIBC_2.29’未定义的引用
/home/jumper/workspace/opencv4.4.0/lib/libopencv_world.so:对‘expf@GLIBC_2.27’未定义的引用
/home/jumper/workspace/opencv4.4.0/lib/libopencv_world.so:对‘__cxa_init_primary_exception@CXXABI_1.3.11’未定义的引用
/home/jumper/workspace/opencv4.4.0/lib/libopencv_world.so:对‘pow@GLIBC_2.29’未定义的引用
makefile:45: recipe for target 'PredictCharacters' failed
/home/jumper/workspace/opencv4.4.0/lib/libopencv_world.so:对‘log2f@GLIBC_2.27’未定义的引用
/home/jumper/workspace/opencv4.4.0/lib/libopencv_world.so:对‘std::__exception_ptr::exception_ptr::exception_ptr(void*)@CXXABI_1.3.11’未定义的引用
/home/jumper/workspace/opencv4.4.0/lib/libopencv_world.so:对‘exp@GLIBC_2.29’未定义的引用
/home/jumper/workspace/opencv4.4.0/lib/libopencv_world.so:对‘std::__cxx11::basic_ostringstream<char, std::char_traits<char>, std::allocator<char> >::basic_ostringstream()@GLIBCXX_3.4.26’未定义的引用
/home/jumper/workspace/opencv4.4.0/lib/libopencv_world.so:对‘logf@GLIBC_2.27’未定义的引用
/home/jumper/workspace/opencv4.4.0/lib/libopencv_world.so:对‘std::thread::_M_start_thread(std::unique_ptr<std::thread::_State, std::default_delete<std::thread::_State> >, void (*)())@GLIBCXX_3.4.22’未定义的引用
/home/jumper/workspace/opencv4.4.0/lib/libopencv_world.so:对‘std::thread::_State::~_State()@GLIBCXX_3.4.22’未定义的引用
/home/jumper/workspace/opencv4.4.0/lib/libopencv_world.so:对‘std::logic_error::logic_error(std::logic_error&&)@GLIBCXX_3.4.26’未定义的引用
/home/jumper/workspace/opencv4.4.0/lib/libopencv_world.so:对‘typeinfo for std::thread::_State@GLIBCXX_3.4.22’未定义的引用
/home/jumper/workspace/opencv4.4.0/lib/libopencv_world.so:对‘std::__cxx11::basic_stringstream<char, std::char_traits<char>, std::allocator<char> >::basic_stringstream()@GLIBCXX_3.4.26’未定义的引用
collect2: error: ld returned 1 exit status
make: *** [PredictCharacters] Error 1


solution:https://www.jianshu.com/p/7a8878397213  
install gcc9.3.0 and g++ 9.3.0


5,
g++: fatal error: ‘-fuse-linker-plugin’, but liblto_plugin.so not found

https://www.wetimer.com/bai-du-aistudio-an-zhuang-pycorrecotor/

/usr/libexec/gcc/x86_64-alt-linux/9 下的相关库文件拷贝到 /usr/lib/gcc/x86_64-linux-gnu/9


6,
/home/jumper/workspace/opencv4.4.0/lib/libopencv_world.so:对‘powf@GLIBC_2.27’未定义的引用
/home/jumper/workspace/opencv4.4.0/lib/libopencv_world.so:对‘log@GLIBC_2.29’未定义的引用
/home/jumper/workspace/opencv4.4.0/lib/libopencv_world.so:对‘expf@GLIBC_2.27’未定义的引用
/home/jumper/workspace/opencv4.4.0/lib/libopencv_world.so:对‘pow@GLIBC_2.29’未定义的引用
/home/jumper/workspace/opencv4.4.0/lib/libopencv_world.so:对‘log2f@GLIBC_2.27’未定义的引用
/home/jumper/workspace/opencv4.4.0/lib/libopencv_world.so:对‘exp@GLIBC_2.29’未定义的引用
/home/jumper/workspace/opencv4.4.0/lib/libopencv_world.so:对‘logf@GLIBC_2.27’未定义的引用
make: *** [PredictCharacters] Error 1

https://blog.csdn.net/wu_cai_/article/details/104770005  

到第6个问题时,我现在不准备这样搞了,哪怕可能这个问题解决完就跑得起来了。我还是准备重新在ubuntu16.04下编译opencv4.4.0。这种兼容问题一个个冒出来太烦了。

于是我重新在16.04下编译opencv4.4.0,过程不必细说前面已经编译过那么多次了。

但中途还是有点小问题,首先我有几个版本的gcc,于是我切换回原来的5.4.0版本:

1,change gcc and g++

update-alternatives --config gcc
update-alternatives --config g++
gcc -v
g++ -v

但还是不行,下载任何一个东西都报错说:

正在读取软件包列表... 完成
正在分析软件包的依赖关系树       
正在读取状态信息... 完成       
您可能需要运行“apt-get -f install”来纠正下列错误:
下列软件包有未满足的依赖关系:
 g++-9 : 依赖: gcc-9 (= 9.3.0-10ubuntu2~16.04) 但是它将不会被安装
E: 有未能满足的依赖关系。请尝试不指明软件包的名字来运行“apt-get -f install”(也可以指定一个解决办法)。

于是我最终按照 https://jingyan.baidu.com/article/ab0b563047b86ac15bfa7d4a.html 卸载掉所有的gcc g++,然后再重新下载就OK了。

之后编译无任何问题,现在已跑起来:

 

 

 

 

/*************Nsight eclipse edition***************/

CUDA工程已经跑过了,没问题。但是我想profile去看CPU and GPU timeline时出现:

查到这是CUPTI没有加入环境变量导致,加入环境变量后,重来,出现点击下图按钮无任何反应,CPU and GPU timeline根本没有出来!!!我不知道这个按钮难道是放在这里好看的吗,又不能使用,也没有任何报错!!!按道理应该是可以使用的啊,就在这个IDE里运行,运行完了分析性能多好,就应该是这么设计的:

而我看了下,我单独打开Nvidia visual profiler是可以的:

所以现在搞得只能用指令在终端看其有没有bankconflict:

大神说想看timeline的话,对于我7.5的卡只能将nvprof的信息导出到nvvp中, 然后使用nvidia visual profiler生成timeline

 

另外大神说卡的计算能力不是越高越好:

失策啊买卡的时候!

 

 

/*********************CUDA版距离变换*********************************/

想象很丰满,现实很骨感。看GPU上的耗时达到了十几毫秒,而CPU版本只要2~3ms!!!这个设计我请教过别人 https://bbs.gpuworld.cn/index.php?PHPSESSID=4b3dvlop06orllts3eh8ddfp02&topic=73406.0 但是没有更好的办法。这种设计就是会耗时,每次启动核函数都是对全局内存读、写一次!可以看到每次核函数运行平均408us,那么24次就到了9.8ms!!!!

另外大神给了一个建议,即还是得将共享内存用起来,但我的算法又需要访问其它块的内容所以需要拼接边界,这个不一定能实现,我还在想。如果真的能实现,那一个数量级的差别也就是只要1个多ms,还是很诱人的。但就是不好实现,要好好想:

 

 

另外还有一个解决办法,就是算法流程更改,还记得我之前提到过的那篇距离变换全并行的英文论文吗?那个如果实现,效率会很可观,之前看不懂,现在看懂了一半:

可以看到从2D的描述这里我就开始不懂了。如果有大神理解请点拨一下鄙人。这个在之前的距离变换相关的文章里有论文出处。

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

元气少女缘结神

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值