首先先简介下linux系统下程序的库函数分为三种类型;
1.静态函数库:在程序执行前加入到目标程序中;
2.共享函数库:在程序启动的时候加载到程序中,被不同程序共享;
3.动态函数库:在程序运行的任何时候动态的加载
linux 下的.o文件是目标文件相当于windows的obj文件;
.so文件是共享库相当于windows的shared object;
.a文件是静态库由好多个.o文件合在一起,用于静态链接;
.la为libtool自动生成的一些共享库;
如何生成所需要的.a与.so文件的具体过程:
为了防止报错统一采用g++而不用gcc;g++是C++编译器,而gcc是c编译器大部分情况下没有区分,但是在调用opencv会有区别;
第一步:调用已经编写好的XX.cpp生成.so文件;
g++ 空格 XX.cpp 空格-L./lib 空格 -lopencv_core 空格-lopencv_highgui空格-lopencv_imgproc空格-fPIC空格-shared空格-o空格libcp.so 生成可以用的so文件
第二步:通过调用生成的.so文件
g++ 空格 -o 空格 test 空格 test.cpp 空格 -L. 空格 -lcp 空格 -lopencv_core 空格 -lopencv_highgui 空格 -lopencv_imgproc; 生成可以调用的test文件。
第三步:生成的.s0文件提示找不到文件,说明你的环境变量没有配置好;
export 空格 LD_LIBRARY_PATH=/home/zx/cp_location_160708/:$LD_LIBRARY_PATH;
通过调用opencv库生成.a文件
第一步:通过编译文件生成.o文件
g++ 空格 -c hello.c 生成hello.o文件;
第二步:通过生成的.o文件变成.a文件
ar cr liblocation_cp.a hello.o 调用hello.o生成
第三步调用生成的.a文件生成运行文件
g++空格-o空格XX 空格XX.cpp 空格 /home/zx/cp_location_160708/libcp.a 空格 `Pkg-config 空格 --libs 空格 --cflags 空格 opencv`
原文链接: https://www.cnblogs.com/zvmxvm1991/p/5841933.html
欢迎关注
微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍
原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/240056
非原创文章文中已经注明原地址,如有侵权,联系删除
关注公众号【高性能架构探索】,第一时间获取最新文章
转载文章受原作者版权保护。转载请注明原作者出处!