【发布时间】:2019-03-30 08:59:13
【问题描述】:
我们有一个应用程序,它需要具有 pkg-config 可见性和共享库的最新版本的 opencv 才能构建。但是,我们部署的 Amazon EC2 AMI 实例不包括编解码器的 yum 包和 opencv 包。
其他页面描述了如何使用 centOS og rpm 软件包来进行工作安装。我们需要一个没有 yum/rpm 交叉的全新安装。
【问题讨论】:
标签: opencv amazon-ec2 libav
我们有一个应用程序,它需要具有 pkg-config 可见性和共享库的最新版本的 opencv 才能构建。但是,我们部署的 Amazon EC2 AMI 实例不包括编解码器的 yum 包和 opencv 包。
其他页面描述了如何使用 centOS og rpm 软件包来进行工作安装。我们需要一个没有 yum/rpm 交叉的全新安装。
【问题讨论】:
标签: opencv amazon-ec2 libav
这些步骤很可能是到达目标的较短路径之一。起始目录位置无关紧要,因为第一行确保了一个健全的(~/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-all并检查是否列出了 libavcodec、libavformat、libav... 等软件包。
此时可以使用默认工具构建和安装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。
完成
【讨论】: