首先先简介下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`