linux下如何調用opencv庫生成一些.a與.o文件


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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM