开源库的使用方法以及libjpeg的移植详解
生活随笔
收集整理的這篇文章主要介紹了
开源库的使用方法以及libjpeg的移植详解
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
一、開源庫的使用方法
(1)移植(×××、解壓、配置、修改Makefile、編譯或交叉編譯)。移植的目的是由源碼得到三個東西:動態(tài)庫.so,靜態(tài)庫.a,頭文件.h
(2)部署(部署動態(tài)庫so、部署靜態(tài)庫.a和頭文件.h)
動態(tài)庫是運行時環(huán)境需要的,編譯程序時不需要。
靜態(tài)庫是靜態(tài)連接時才需要,動態(tài)鏈接時不需要。
頭文件.h是在編譯程序時使用的,運行時不需要的。
總結:靜態(tài)庫和頭文件這兩個東西,是在編譯鏈接過程中需要的;而動態(tài)庫是在運行時需要的。
所以動態(tài)庫so文件是要放到開發(fā)板的文件系統(tǒng)中去的(放的過程就叫部署),把靜態(tài)庫.a文件和頭文件.h文件放到ubuntu的文件系統(tǒng)中去。
(3)注意三個編譯鏈接選項:-I??-l??-L
-I是編譯選項(準確的是說是預處理選項CFLAGS或者CPPFLAGS中指定),用來指定預處理時查找頭文件的范圍的。
-l是鏈接選項(LDFLAGS中指定),用來指定鏈接額外的庫(譬如我們用到了數(shù)學函數(shù),就用-lm,鏈接器就會去鏈接libm.so;那么我們使用了libjpeg,對應的庫名字就叫l(wèi)ibjpeg.so,就需要用-ljpeg選項去鏈接)
-L是鏈接選項(LDFLAGS中指定),用來告訴鏈接器到哪個路徑下面去找動態(tài)鏈接庫。
總結:-l是告訴鏈接器要鏈接的動態(tài)庫的名字,而-L是告訴鏈接器庫的路徑二、libjpeg的移植(1)×××、解壓
(2)配置???./configure?--prefix=/opt/libdecode?--exec-prefix=/opt/libdecode?--enable-shared?--enable-static?-build=i386?-host=arm
(3)Makefile檢查,主要查看交叉編譯設置是否正確
CC=gcc? 改為? CC=arm-linux-gcc
AR=ar?rc? 改為? AR=arm-linux-ar?rc
AR2=ranlib? 改為 AR2=arm-linux-ranlib
(4)編譯 make
(5)安裝?make?install-lib 安裝就是將編譯生成的庫文件、頭文件、可執(zhí)行文件分別裝載到--prefix??--exec-prefix所指定的那些目錄中去。
6.22.2.部署
部署動態(tài)鏈接庫一般有三個位置可以考慮:
第一個:/lib
第二個:/usr/lib
第三個:任意指定目錄
轉載于:https://blog.51cto.com/10925070/1884536
總結
以上是生活随笔為你收集整理的开源库的使用方法以及libjpeg的移植详解的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 《JavaScript 闯关记》之原型及
- 下一篇: 重写系统自带tabbar出现的 代理错误