ubuntu下使用cmake打包算法动态链接库so 设置软链接

ldd allCamsRawImgsToBev | awk '{print $3}' | xargs -i cp -L {} /work/tool_7vToBew

把自己的算法打包发给别人,部署上线,移植时需要把代码打包成动态链接库或可执行文件。如何打包呢?

话不多说,上例子。

先验证自己的算法和代码是OK的。

编辑test.cpp:

int main( int argc, char** argv) {
    Mat src = imread(argv[1]);
    chrono::steady_clock::time_point t1 = chrono::steady_clock::now();

    int Result = ImgCheck(argv[1]);
    cout<<"Result: "<<Result<<endl;

    chrono::steady_clock::time_point t2 = chrono::steady_clock::now();
    chrono::duration<double> time_used = chrono::duration_cast<chrono::duration<double>>( t2-t1 );
    cout<<"算法用时:"<<time_used.count()*1000<<" ms。"<<endl;

    return 0;
}

编辑CMakeLists.txt:

cmake_minimum_required(VERSION 2.8)
project(Test)

set( CMAKE_BUILD_TYPE "Release" )
set(CMAKE_CXX_FLAGS "-std=c++11 -O3")

# 寻找OpenCV库
find_package( OpenCV 3 REQUIRED )
# 添加头文件
include_directories( ${OpenCV_INCLUDE_DIRS} )

add_library(ImgCheck SHARED ./ImgCheck.cpp)
link_libraries(ImgCheck)
add_executable(Test test.cpp ${ImgCheck})
target_link_libraries( ImgCheck ${OpenCV_LIBS} )

进行代码编译:

mkdir build

cd build 

cmake ..

make

成功后进行测试:

./Test test.jpg

验证OK后开始打包,重新编辑CMakeLists.txt:

cmake_minimum_required(VERSION 2.8)
project(ImgCheck)

set( CMAKE_BUILD_TYPE "Release" )
set(CMAKE_CXX_FLAGS "-std=c++11 -O3")

# 寻找OpenCV库
find_package( OpenCV 3 REQUIRED )
# 添加头文件
include_directories( ${OpenCV_INCLUDE_DIRS} )

add_library(ImgCheck SHARED ./ImgCheck.cpp)
#link_libraries(ImgCheck)
#add_executable(Test test.cpp ${ImgCheck})
target_link_libraries( ImgCheck ${OpenCV_LIBS} )

进行代码编译:

mkdir build

cd build 

cmake ..

make

成功后生成了算法动态库libImgCheck.so,将此so和对应ImgCheck.h或README.md发给别人即可。

如果别人没有装OpenCV或其它依赖库怎么办呢?

不要慌,把依赖库一并拷过去即可,这样操作:

首先,查看此算法动态链接库so需要哪些依赖库:

objdump -x libImgCheck.so | grep NEEDED

拷贝第一个依赖库,后三个不需要了:

find -name libopencv_world.so.3.4

cp 路径 本路径

如果移植的环境不同怎么办?别人是ubuntu16.04,你是ubuntu18.04

把后面的几个依赖库都拷贝了,除了libc.so.6,这个一定要慎重拷贝,一般不拷贝。

拷到对方的环境下就OK了吗?NO NO,还要设置软链接哦。

软链接这样设置:

vi ~/.bashrc

export LD_LIBRARY_PATH=/home/imgcheck

source ~/.bashrc

最后唠叨一句,最好要开发环境和部署环境要保持一致,这是合格程序员的自我修养。不然移植中很容易出莫名其妙的问题。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值