AR学习笔记:Exiv2库的编译
Posted Sakurazzy
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了AR学习笔记:Exiv2库的编译相关的知识,希望对你有一定的参考价值。
AR学习笔记(二):Exiv2库的编译
课题需要使用到exiv2的库,这里记录一下编译过程中遇到的问题
exiv2
官方文档:https://www.exiv2.org/
下了官网的软件包,还在研究软件包的说明,看看怎么安装…
(正确的食用方法)Build, Install, Use Exiv2 on a UNIX-like system
下载软件包:https://www.exiv2.org/download.html
点击Download Source下载的包是对的,看一下README.md的2.1节
$ cd ~/gnu/github/exiv2 # location of the project code
$ mkdir build && cd build
$ cmake .. -DCMAKE_BUILD_TYPE=Release
$ cmake --build .
$ make tests
$ sudo make install
安装完成!
(错误方式)To run exiv2 from the bundle
下面这一小节是我犯蠢了,下错了软件包,还把系统搞崩了一次,直接跳过
$ cd <bundle>
$ env LD_LIBRARY_PATH="$PWD/lib:$LD_LIBRARY_PATH" bin/exiv2
第一段标题是从软件包中启动exiv2,其中env用于列出所有的环境变量,LD_LIBRARY_PATH是程序链接时的路径
出现了以下报错:
zzy@zzy-hp:~/exiv2-0.27.4-Linux64$ env LD_LIBRARY_PATH="$PWD/lib:$LD_LIBRARY_PATH" bin/exiv2
bin/exiv2: /usr/lib/x86_64-linux-gnu/libstdc++.so.6: version `GLIBCXX_3.4.26' not found (required by bin/exiv2)
bin/exiv2: /lib/x86_64-linux-gnu/libm.so.6: version `GLIBC_2.29' not found (required by /home/zzy/exiv2-0.27.4-Linux64/lib/libexiv2.so.27)
bin/exiv2: /usr/lib/x86_64-linux-gnu/libstdc++.so.6: version `GLIBCXX_3.4.26' not found (required by /home/zzy/exiv2-0.27.4-Linux64/lib/libexiv2.so.27)
看起来是缺少了GLIBCXX_3.4.26/GLIBC_2.29这两个东西
1.先解决一下GLIBCXX_3.4.26这个链接库
因为安装的gcc版本比较高,生成的动态库没有替换老版本gcc的动态库,GLIBCXX中的版本比较低,将gcc最新版本的动态库替换系统中老版本的动态库即可
找到了一个帖子解决了缺少GLIBCXX_3.4.26的问题:https://blog.csdn.net/phdsky/article/details/84104769
重新链接的过程如下:
2.接下来处理GLIBC_2.29这个东西
warning!!!不要按上面的方法cp文件!!我cp了一份系统直接崩溃了,我裂开,只能重装系统了
遇到的问题
1.未定义的引用
编译程序时出现了如下报错
查了一下page应该是gcc编译器版本的问题
c++11与旧的c++库函数实现存在差异,当本地的c++代码动态库为旧版本c++库所实现,而编译器g++5,gcc5将其解释为std::__cxx11,就会出现未定义错误,那么需要指定编译器的版本为g++4,gcc4,再进行编译时就不会发生上述问题
解决:安装了4.8版本和5.5版本的gcc和g++,还是同样的问题,后来瞎搞系统崩溃了,重装后正确安装了exiv2库,用的gcc还是7.5.0版本的,没有了编译错误,因祸得福吧
2.std::ifstream reader 不完整的类型
编译又出现了一个问题
/home/zzy/epnp_test/epnp.cpp:150:20: error: variable ‘std::ifstream reader’ has initializer but incomplete type
ifstream reader("zuobiao-huawei.txt");
解决:少包含了一个库fstream
详细博客:https://blog.csdn.net/allenlinrui/article/details/19639241
编译通过!
以上是关于AR学习笔记:Exiv2库的编译的主要内容,如果未能解决你的问题,请参考以下文章