我们有一个应用程序,需要在最近的版本中使用opencv,并且要构建pkg-config可见性和共享库。但是,我们部署的Amazon EC2 AMI实例不包括编解码器的yum包和opencv包。
其他页面描述了如何使用centOS og rpm包进入工作安装。我们需要一个没有yum / rpm交叉的干净安装。
这些步骤很可能是通往目标的较短路径之一。起始目录位置无关紧要,因为第一行确保了一个理智的(〜/ build)初始工作目录:
cd ~/ && mkdir build && cd build/
sudo yum install git cmake gcc-c++
为编解码器构建libav(可能不需要--prefix选项,但这是经过测试和运行的版本)
wget https://libav.org/releases/libav-12.3.tar.xz
tar xzf libav-12.3.tar.gz
mkdir libav-12.3-build && cd libav-12.3-build
/home/ec2-user/build/libav-12.3/configure --prefix=/usr --enable-shared --disable-static
make && sudo make install
亚马逊默认的pkg-config thing-a-magic不会查看所有标准路径,因此下一行将相关的* .pc文件符号链接到pkg-config(由opencv使用)可以找到它们的位置。
cd /usr/share/pkgconfig
for t in `find /usr -name "libav*.pc"`; do sudo ln -s $t .; done
cd ~/build
libav共享库也必须可供链接器使用
echo /usr/lib/ > libav.conf
sudo mv libav.conf /etc/ld.so.conf.d/
sudo ldconfig
通过命令检查pkg-config libav可用性
pkg-config --list-alland check that the libavcodec, libavformat, libav... etc. packages are listed.
此时,可以使用默认工具构建和安装opencv库
git clone https://github.com/Itseez/opencv.git
mv opencv opencv.git
cd opencv.git/
git branch -r
git checkout 3.4
cd .. && mkdir opencv && cd opencv
cmake ../opencv.git/ && make && sudo make install
cd ..
最终的二进制文件要求链接器路径包含'''/ usr / local / lib64'''路径。
echo /usr/local/lib64 > opencv.conf
sudo mv opencv.conf /etc/ld.so.conf.d/
sudo ldconfig
最后一招是为opencv启用pkg-config
cd /usr/share/pkg-config && ln -s `find /usr/local/ -name "opencv.pc"` . && cd ~/build
通过命令检查pkg-config可用性
pkg-config --list-all
并检查opencv是否已列出。
完成