我们基于OpenCV,Boost,LibVLC和Caffe开发了一些CV应用程序。我们的一些客户希望将其部署在过时的(或不受欢迎的)Linux发行版上,因此我们必须捆绑其所有依赖项(和某些vlc插件),其中大多数都可以在任何实际发行版中找到,但是我们有定制的libcaffe供应商构建在我们的仓库中。所以,现在我用这个bash脚本解决它:
#!/bin/bash
set -uex
export LD_LIBRARY_PATH=./contrib/caffe.arch32/lib/
function copy_deps {
libs=$(LD_TRACE_LOADED_OBJECTS=1 /lib/ld-linux.so.2 "$1" | cut -d" " -f 3 | sort |uniq | grep -v '^$')
for lib in $libs
do
cp -un "$lib" ./bundle
done
}
mkdir -p bundle
mkdir -p ./bundle/vlc/plugins
cp -r /usr/lib/vlc/plugins ./bundle/vlc
rm -rf ./bundle/vlc/plugins/lua
rm -rf ./bundle/vlc/plugins/gui
rm -rf ./bundle/vlc/plugins/visualization
for plugin in $(find ./bundle/vlc/plugins -name "*.so")
do
copy_deps "$plugin"
done
copy_deps ./detector
cp /lib/ld-linux.so.2 ./bundle
cp ./detector ./bundle
cp ./config.ini ./bundle
mkdir -p ./bundle/config …
Run Code Online (Sandbox Code Playgroud)