Linux下原始碼安裝的經驗總結

2021-09-02 08:46:03 字數 2286 閱讀 7886

在linux下安裝軟體,難免會碰到需要原始碼安裝的,而就是這簡簡單單的./configure、make、sudo make install三步,卻讓不少人頭疼不已,這裡以安裝x11為例具體介紹下我在安裝時的一點小經驗,以便共同學習,共同進步!

首先,我們要做些準備工作,原始碼安裝少不了這幾個工具pkg-config、libtool、autoconf和automake(當然,還有更基礎的,像zlib、m4等,這裡就略過啦),其中,pkg-config是相對比較重要的,它就是向configure程式提供系統資訊的程式,如軟體的版本、庫的版本以及庫的路徑等資訊,這些只是在編譯期間使用。你可以開啟/usr/lib/pkgconfig下任意乙個.pc檔案,就會發現類似下面的資訊(x11的pc檔案):

prefix=/usr

exec_prefix=$

libdir=$/lib

includedir=$/include

xthreadlib=-lpthread

name: x11

description: x library

version: 1.3.3

requires: xproto kbproto

requires.private: xcb >= 1.1.92

cflags: -i$

libs: -l$ -lx11

libs.private: -lpthread

configure就是靠著這些資訊來判斷軟體版本是否符合要求的。接著來看看pkg-config是怎樣工作的,預設情況下,pkg-config首先在usr/lib/pkgconfig/中查詢相關包(譬如x11)對應的相應的檔案(x11.pc),若沒有找到,它也會到pkg_config_path這個環境變數所指定的路徑下去找,若是還沒有找到,它就會報錯。所以這裡就可以得到一些解決configure時提示**庫未找到的辦法了,先用命令"ldconfig -p | grep 庫名"來分析該庫是否安裝及其路徑,若返回空,則說明該庫確實未安裝,否則,可以根據該命令的返回結果找到庫的安裝地點,然後設定其環境變數,命令如下:

"export pkg_config_path=軟體位置/lib/pkgconfig:$pkg_config_path",這裡有個常識,軟體安裝後,.pc檔案都是在安裝目錄下的lib/pkgconf中的。這樣只會在當前命令視窗有效,當然,你也可以修改home資料夾下的.bashrc檔案(帶.的檔案為隱藏檔案,可以用命令vi .bashrc編輯),在檔案末尾加上上面那句命令,重新登入即可。其他的幾個在linux下也是不可或缺的,libtool為管理library時使用,沒裝的話錯誤提示如下:possibly undefined macro:ac_prog_libtool。而autoconf和automake可以用於在某些沒有configure的檔案的原始碼包安裝時使用(pixman就是個典型的例子,安裝了二者後直接./autogen.sh就可以安裝了)。

準備工作做好後,就可以安裝了,具體全部命令如下:

tar vxf libx11-6.2.1.tar.gz

cd libx11-6.2.1

mkdir x11-build

cd x11-build

../configure –prefix=/usr/local/x11r6

make

echo $?

sudo make install

這裡有一些好的安裝習慣可以積累一下:1、建立乙個臨時編譯目錄,本例中為x11-build,這樣可以再安裝完成後刪除該目錄,進而可以節省空間,而且保持了原始碼目錄的整潔;2、安裝到指定目錄,本例中為/usr/local/x11r6,最好把幾個相關的安裝在同一資料夾下,如這裡的x11r6資料夾,這樣便於管理,否則全部預設安裝在/usr/local下,很雜亂;3、編譯完成後做檢查,本例為echo $?,表示檢查上一條命令的退出狀態,程式正常退出返回0,錯誤退出返回非0,也可以使用make check,主要為了防止make失敗後直接install,進而出現了一些莫名其妙的錯誤。這裡還介紹一種更方便快捷的安裝方法,用&&將安裝命令連線起來,如../configure –prefix=**&&make&&sudo make install,這樣,只有在前面的命令執行正確的情況下,後面的任務才會執行,多方便!

編譯時提示最多的就是**東西未找到了,要麼是庫檔案,要麼是標頭檔案,庫檔案用上面的ldconfig基本上就可以搞定,標頭檔案的話需要配置包含的路徑,和庫的類似,命令如下:

export ld_include_path=/usr/local/include:$ld_include_path

在這個時候最重要的就是淡定了,循著丫的error往上找,像"no such file or directory"這樣的錯誤提示肯定就在附近,找到了,include之就可以咯!

Linux下安裝Mysql 原始碼安裝

1 用root登入系統,增加mysql使用者和組 groupadd mysql useradd g mysql mysql 2 解壓原始碼包,並進入解壓後的目錄 tar xvfz mysql 5.1.38.tar.gz cd mysql 5.1.38 3 用configure工具來編譯源 這裡我們可...

linux下MySql原始碼安裝

linux下mysql原始碼安裝 以下只是簡單的安裝,如果你要是搭建lamp平台的話,還要在編譯的時候加入一些引數。groupadd mysql useradd g mysql mysql tar zxvf mysql tar.gz cd mysql configure prefix usr loc...

Linux下原始碼安裝OpenSSL

開發環境為ubuntu 12.04,預設安裝了openssl了,可以通過 which openssl來檢視安裝位置,但是在 usr include等目錄下都找不到openssl相關的標頭檔案,所以需要從原始碼重新安裝openssl。wget tar zxvf openssl 1.0.0l.tar.g...