本文轉載自:
這篇文章介紹了jpeg庫在Linux系統下的編譯和移植,經過了親自的驗證,編譯首先需要准備以下資源:jpegsrc.v6b.tar.gz(jpeg庫),libtool-1.5.26.tar.gz(編譯需要的工具),交叉編譯工具鏈(移植到ARM時使用)。
jpegsrc.v6b.tar.gz下載位置:http://115.com/?ct=rar&pickcode=attc36k1f57cah4dq
libtool-1.5.26.tar.gz下載位置:http://115.com/?ct=rar&pickcode=cmmen1rxdh968dbrl
交叉編譯工具鏈下載位置:http://115.com/?ct=rar&pickcode=b33lpqa0qhm8i84xh
前提:編譯時需要以root權限進行,JPEG的默認安裝路徑是/usr/local,無論打算將JPEG庫安裝在哪兒都必須保證你的安裝目錄下有以下幾個目錄:“include”,“lib”,“bin”,“man/man1”,如果沒有就自己創建。
首先,先編譯一個x86下的版本。1.先解壓jpeg庫“tar –zxvf jpegsrc.v6b.tar.gz”,解壓完后生成一個叫“jpeg-6b”的目錄。2.進入該目錄配置編譯選項“./configure --prefix=/home/jpeg_install/jpeg_x86--enable-shared --enable-static”。逐一解釋一下各個選項,“--prefix=/home/jpeg_install/jpeg_x86”:指的是安裝目錄,這個安裝目錄下必須包含“include”,“lib”,“bin”,“man/man1”這幾個目錄;“--enable-shared”:指的是編譯動態鏈接庫;“--enable-static”:指的是編譯靜態鏈接庫。3.配置完編譯選項后目錄下產生Makefile文件,執行make進行編譯,這時編譯很可能編譯不過,出現以下的錯誤提示:
“./libtool--mode=compile gcc -O2 -I. -c./jcapimin.c
make: ./libtool:命令未找到
make: *** [jcapimin.lo] 錯誤 127”
分析一下錯誤的原因,打開Makefile文件,里面有這樣一行“LIBTOOL = ./libtool”;說明編譯時需要“libtool”這個工具,然而“jpeg-6b”沒有該工具。4.編譯libtool,先解壓libtool-1.5.26.tar.gz生成一個叫libtool-1.5.26的目錄,進入該目錄,執行“./configure”;“make”;“make install”;執行完之后在該目錄下就是生成了libtool工具,將libtool拷貝到“jpeg-6b”再次執行make進行編譯,編譯完成后執行“make install”進行安裝;執行完畢后在安裝目錄的lib目錄下就會生成所需要的動態鏈接庫和靜態鏈接庫。
其次,編譯一個arm的嵌入式版本。首先必須要導出交叉編譯環境:“exportPATH=$PATH:/home/arm-linux/arm-2013.05/bin”。在之前的博文中有說如何安裝交叉編譯環境。1.交叉編譯libtool:進入目錄libtool-1.5.26執行“./configure --host=arm-none-linux-gnueabi”配置libtool的編譯環境,參數“--hosting=arm-none-linux-guneabi”是指定交叉編譯器的前綴,因為編譯的是嵌入式的版本所以編譯器需要選擇交叉編譯環境;配置完編譯環境后執行make進行編譯,編譯完成后將 生成的libtool拷貝到jpeg-6b中。2.交叉編譯jpeg庫:進入jpeg-6b目錄執行“./configure--host=arm-none-linux-gnueabi --prefix=/home/jpeg_install/jpeg_arm”。執行完成后會生成Makefile文件,但是現在還不能直接執行“make”進行編譯,需要修改Makefile文件。打開Makefile文件 ,修改以下幾句:“CC= arm-none-linux-gnueabi-gcc”;“AR= arm-none-linux-gnueabi-ar rc”;“AR2= arm-none-linux-gnueabi-ranlib”;修改這三句是更改編譯環境,然后再執行“make”進行編譯。編譯完成后執行“make install”進行安裝。安裝完成后在“/home/jpeg_install/jpeg_arm/lib”會生成所需要的動態鏈接庫,靜態鏈接庫(libjpeg.so,libjpeg.a)。