如何在Linux下安裝軟件,以移植安裝libjpeg解碼庫爲例(總結)

  首先,從軟件官方網站或者其它渠道獲取安裝軟件源碼包,選擇所需軟件版本,解壓放到一個自定義目錄下。安裝Linux軟件通常需要如下三個步驟:


步驟一:
  ./configure
xxx  ----------------------首先進行一些配置相關的設置,xxx爲一些可選參數,例如指定安裝目錄,是生成動態庫還是靜態庫等。如果沒有選參數,則爲默認設置,就如Windows安裝軟件一樣,默認是通常會裝在c盤下的固定目錄下。這裏主要生成makefile文件

步驟二:
  make
              ----------------------編譯鏈接項目,主要是把源文件生成.o文件,然後生成一個可執行文件

步驟三:
  make install
     ----------------------安裝,生成庫文件,這裏會將源碼下生成的庫文件、頭文件等複製到安裝目錄下,如果有指定安裝目錄,則複製到安裝目錄下,沒有指定安裝目錄下則在默認下,推薦自定義安裝,因爲這樣容易找到安裝目錄,也使目錄文件看起來整潔一些。




例程:安裝libjpeg解碼庫


  libjpeg是一個開源的jpeg解碼庫,圖像壓縮算法寫的非常好。
  首先:獲取libjpeg解碼庫的源代碼,移動複製解壓到Linux目錄下。源碼下載地址https://sourceforge.net/projects/libjpeg/files/libjpeg/6b/


  步驟一:進入源碼目錄,命令行輸入:
    ./configure --prefix=/opt/my_jpeg --exec-prefix=/opt/my_jpeg --enable-shared --enable-static
  參數說明:
    '--prefix'是一個很常用的選項.製作出的'Makefile'會查看隨此選項傳遞的參數,當一個包在安裝時可以徹底的重新安置他的結構獨立部分. 這裏是指定安裝目錄/opt/my_jpeg;

    --exec-prefix與'--prefix'選項類似,但是他是用來設置結構倚賴的文件的安裝位置.如果沒有設置這個選項的話,默認使用的選項值將被設爲和'--prefix'選項值一樣.
    --enable-static:生成靜態鏈接庫。命名通常爲.a文件
    --enable-shared:生成動態鏈接庫。命名通常爲.so文件

    動態庫是運行時環境需要的,編譯程序時不需要。靜態庫則是靜態鏈接時才需要,動態鏈接時不需要。

    擴展:這裏默認運行環境爲本地Linux環境。如果安裝軟件支持多平臺的話,要使用其它運行平臺,比方說arm平臺,則需要添加-host=arm,-build=i386來選擇軟件運行系統平臺(平臺版本不一樣,參數可能也會有所不同),還需查看makefile文件檢查設置的編譯器是不是平臺兼容的編譯器,找到CC=gcc並改爲CC=arm-none-linux-gnueabi-gcc,找到AR=ar rc並改爲AR=arm-none-linux-gnueabi-ar rc,找到AR2=ranlib並改爲arm-none-linux-gnueabi-ranlib。
    更多configure參數選項參考文章:http://www.chinaz.com/server/2009/0807/85792.shtml


  步驟二:源碼目錄下,命令行輸入:
    make


  步驟三:源碼目錄下,命令行輸入:
    make install
    這裏會出現一個錯誤,提示沒有找到文件夾,因爲我們自己指定了安裝目錄/opt/my_jpeg,還沒創建/opt/my_jpeg目錄,創建好/opt/my_jpeg目錄後,再make install,提示下一個錯誤:


       提示沒有/opt/my_jpeg/include這個文件夾,這個文件夾是用來放一些頭文件的,這裏創建這個文件夾:

    mkdir /opt/my_jpeg/include
    繼續make install,提示下一個錯誤:


    提示沒有/opt/my_jpeg/lib這個文件夾,這個文件夾是用來存放庫文件的地方,這裏創建這個文件夾

    mkdir /opt/my_jpeg/lib
    繼續make install,還會出現缺少/opt/my_jpeg/bin文件夾、/opt/my_jpeg/man和/opt/my_jpeg/man1文件夾,bin文件夾用來存放可執行文件,man1文件夾裏面存放着一些說明手冊,依次創建各個文件夾:
    mkdir /opt/my_jpeg/bin
    mkdir /opt/my_jpeg/man
    mkdir /opt/my_jpeg/man/man1
    繼續make install,便可安裝完成。


  安裝完成之後,就可以進行代碼測試了。使用製作好的動態或者靜態鏈接庫文件、安裝目錄下的頭文件,需要導出庫文件路徑和頭文件路徑,不然編譯會提示找不到路徑。導出路徑可以自定義,也可以直接複製庫文件和頭文件到系統默認已經導出的環境變量路徑下(例如庫文件可以放在/lib或者/usr/lib,頭文件放在/include下,但是這樣會不方便整理使用,推薦選擇自定義導出環境變量路徑)。

  通常在源碼包裏都會提供一個安裝說明文檔和軟件使用說明文檔(絕大部分是英文),如果移植一個軟件,而網上又還沒有人分享一些教程出來,我們看源碼包提供的說明文檔其實是最好的,也是最有參考意義的,畢竟這是原作者寫的。其實,網上的那些的移植教程也是根據原作者提供說明文檔修改的,只是把英文翻譯成中文而已。看到一些英文文檔,不要煩躁,要嘗試去看,不會的單詞可以藉助一些工具查看,英文閱讀能力和興趣要慢慢地去提升,英文是繞不過的,跟英文過不去,不知不覺你會發現你跟別人差距會越來越大。