導航:首頁 > 源碼編譯 > linux如何從源碼編譯安裝

linux如何從源碼編譯安裝

發布時間:2023-01-29 19:57:04

1. linux中源代碼包安裝的基本步驟是什麼

詳解linux源碼包安裝過程

1. 解壓縮

可以通過下載或其他方式獲得了一個軟體包,通常它是一個壓縮文件,大部分可能是存檔的和壓縮的,這些文件一般以 .tar .gz為擴展名。

首先拷貝它到一個目錄,然後 untar 和 gunzip 解壓它。 通常這個命令

tar xzvf filename [filename 是軟體文件名稱]

解壓後的文件一般會在當前目錄下的創建子目錄,並以這個包名來命名。 你也可以用用這個命令預先查看結果 tar tzvf filename,顯示包里有那些解壓文件。

源文件如果是新的 bzip2 (.bz2) 格式,可用

bzip2 -cd filename | tar xvf -,或更簡單的 tar xyvf filename ,這很不錯的tar命令被不斷的完善。

說明:

A:有時候一些文件必須安裝在用戶的 home 目錄下,或更多的是在一個固定的目錄,比如 /, /usr/src, 或 /opt 。所以必須仔細閱讀安裝包的配置信息。當一個軟體包里如果有config 和 Makefiles 文件則最好去編輯它,這里包括了安裝指令和說明。提示:你改變 makefile 會導致不同的結果。大部分軟體包允許用 make install 自動處理安置二進制文件在適當的系統位置。

B:你可能碰到過一些共享文件、shell 存檔文件、尤其是 Internet 上的源碼新聞組。它們保留的原因是具有人性化的可讀性,並且允許新聞組緩沖並通過它們篩選和剔除出不合格的。它們可能用 unshar filename.shar 命令來解壓。

C: 一些源碼存檔文件是用非標準的 DOS,Mac 或其他壓縮的比如:

zip, arc, lha, arj, zoo, rar, and shk.

D: 有時候,你可能需要使用一個 patch 或顯示改變了的 diff 文件來升級或修復存檔的源碼文件。這 doc 文件或者 README 文件將告訴你怎麼去使用。一個很好的命令用標准語法來調用的命令是 patch < patchfile.

2: 關於 rpm 安裝包

一些 Linux 用戶懼怕通過使用源碼來手動安裝軟體包,不過現在有方便的 rpm 和 deb 或 新格式的 slp 包。例如:rpm 安裝運行平穩又快,作為一個軟體安裝在某幾個有名的操作系統。

作為方便的RPM包也存在很多不好的缺點,例如:

A: 要了解軟體中更多更詳細的內容你必須去在二進制中去了解,而不是rpm包。

B: 還有安裝一個 rpm 包如果需要依賴關系那麼安裝就可能會導致失敗。

C: 當 rpm 請求你系統中不同版本的庫,那麼安裝將不能繼續,除非你為錯誤的庫位置創建連接符號到正確的位置。

說明:必須使用root 安裝 rpm 和 deb 。因為它需要必須的寫入許可權。

最簡單的,用命令 rpm -i packagename.rpm 和 dpkg --install packagename.deb 會自動解包和安裝。

3:關於安裝 Linux 包出現的一些問題及解決方案

假設 make 失敗有個鏈接錯誤: -lX11: No such file or directory,正好在 xmkmf 之後已被調用,這可能意味著 Imake 不能被完全建立。檢查第一部分 Makefile 文件的的行是這樣:

· LIB= -L/usr/X11/lib
· INCLUDE= -I/usr/X11/include/X11
· LIBS= -lX11 -lc -lm

這個 -L 和 -I 開關告訴編譯器和鏈接分別在哪裡找到 library 和 include 文件。在這個例子里, X11 庫應該在 /usr/X11/lib 目錄,且 X11 包含文件應該在 /usr/X11/include/X11 目錄里。假如對於你的機器上的這個錯誤,請處理修改 Makefile 並重新再 make。

沒有聲明涉及的數學庫函數,像下列各項:
/tmp/cca011551.o(.text 0x11): undefined reference to `cos'

要修復它,需要明確鏈接到匹配的庫,在 Makefile (看先前的例子) 里增加一個 -lm 到 LIB 或 LIBS 標記 。

用其他方法嘗試

仍然失敗 如果失敗,參考下列腳本:
make -DUseInstalled -I/usr/X386/lib/X11/config
這個直接方式的類別相當於。

在少數例子里,用 root 運行 ldconfig 可能會解決:
# ldconfig 更新共享庫鏈接符號。

一些 Makefiles 使用你系統里未被承認的庫別名。一個例子,構建可能需要 libX11.so.6 ,但是在 /usr/X11R6/lib 不存在文件或鏈接。然而,在那裡是 libX11.so.6.1。解決方法是用 root 運行ln -s /usr/X11R6/lib/libX11.so.6.1 /usr/X11R6/lib/libX11.so.6 ,接著需要運行 ldconfig 。
有一些包需要你安裝一個或更多庫的升級版本。需要拷貝一個或更多的庫到適當的目錄里,刪除舊的庫,重新設置動態鏈接庫。
4:一些其他的問題處理

安裝一個shell 腳本如果出現:No such file or directory 的錯誤消息。這是可以檢查文件許可權確定文件事可執行的,並檢查文件頭確定是否 shell 或程序是腳本在指定的位置被調用。一個例子,這個腳本可能是這樣開始的:

#!/usr/local/bin/EDEN

如EDEN的實際安裝位置是在你的 /usr/bin 目錄,用一個 /usr/local/bin 替代

這個腳本不能運行有兩個方法來糾正!!

A: 文件頭改成 #!/usr/bin/EDEN

B: 或增加一個鏈接符, ln -s /usr/bin/EDEN

5:一個典型的例子 Xloadimage

首先說明下面的例子來源於國外網站的一個技術實例,這里我做了翻譯和整理。

這個例子展現一個簡單的問題。xloadimage 程序對我的圖形工具的調整設置是有用的附加。從源碼目錄拷貝文件,用 tar xzvf 解壓文件,可是在運行 make 的時候出現令人討厭的錯誤並停止了。

gcc -c -O -fstrength-rece -finline-functions -fforce-mem

-fforce-addr -DSYSV -I/usr/X11R6/include

-DSYSPATHFILE=\"/usr/lib/X11/Xloadimage\" mcidas.c

In file included from /usr/include/stdlib.h:32,

from image.h:23,

from xloadimage.h:15,

from mcidas.c:7:

/usr/lib/gcc-lib/i486-linux/2.6.3/include/stddef.h:215:

conflicting types for `wchar_t'

/usr/X11R6/include/X11/Xlib.h:74: previous declaration of

`wchar_t'

make[1]: *** [mcidas.o] Error 1

make[1]: Leaving directory

`/home/thegrendel/tst/xloadimage.4.1'

make: *** [default] Error 2

這個錯誤消息包含了實質的線索:

查看 image.h 文件的 23 行:
#include < stdlib.h>
在源碼的某處對於 xloadimage, wchar_t 已經在指定標准 include 文件重新定義。 告訴我們首先在 image.h 的 23 行嘗試注釋它,或許 stdlib.h include 是不存在的,畢竟不是所有都是必需的。

在這點,構建中的收益來源於所有任何一個致命錯誤。xloadimage 現在功能正常。

6: 安裝 Linux 包的一些總結

堅持自己動手處理所有的安裝出現的問題,不斷總結努力學習,從錯誤里去仔細研究,努力動手排錯,從每個不足甚至失敗的地方得到擴充和提升,可以增強安裝構建軟體的技巧。

2. Linux系統中編譯安裝Nginx伺服器,看了還不會你來打我

使用yum安裝方式安裝PCRE:

yum安裝後檢查安裝結果:

使用yum安裝openssl-devel:

檢查yum安裝結果:

在確保Nginx編譯安裝所依賴的pcre-devel和openssl-devel已經安裝好了後,可以下載Nginx源碼進行編譯安裝。 Nginx源碼可以從Nginx官方網站(http://nginx.org)找到相應版本源碼的下載地址: http://nginx.org/download/nginx-1.16.0.tar.gz

下載Nginx源碼:

添加nginx用戶,服務於Nginx:

解壓軟體包:

編譯Ngixn源碼並安裝:

建立nginx應用程序軟鏈接:

啟動前為了避免報錯,先檢查配置文件語法:

啟動Nginx服務:

查看Nginx服務是否啟動成功:

說明已經啟動成功,打開瀏覽器輸入http://127.0.0.1/就可以看到nginx網頁信息。

3. Linux系統下源代碼編譯方式安裝軟體的大致步驟

是什麼語言呢? linux下多數用gcc

4. 如何編譯Linux操作系統的源代碼

首先uname
-r看一下你當前的linux內核版本
1、linux的源碼是在/usr/src這個目錄下,此目錄有你電腦上各個版本的linux內核源代碼,用uname
-r命令可以查看你當前使用的是哪套內核,你把你下載的內核源碼也保存到這個目錄之下。
2、配置內核
make
menuconfig,根據你的需要來進行選擇,設置完保存之後會在當前目錄下生成.config配置文件,以後的編譯會根據這個來有選擇的編譯。
3、編譯,依次執行make、make
bzImage、make
moles、make
moles
4、安裝,make
install
5、.創建系統啟動映像,到
/boot
目錄下,執行
mkinitramfs
-o
initrd.img-2.6.36
2.6.36
6、修改啟動項,因為你在啟動的時候會出現多個內核供你選擇,此事要選擇你剛編譯的那個版本,如果你的電腦沒有等待時間,就會進入默認的,默認的那個取決於
/boot/grub/grub.cfg
文件的設置,找到if
[
"${linux_gfx_mode}"
!=
"text"
]這行,他的第一個就是你默認啟動的那個內核,如果你剛編譯的內核是在下面,就把代表這個內核的幾行代碼移到第一位如:
menuentry
'Ubuntu,
with
Linux
3.2.0-35-generic'
--class
ubuntu
--class
gnu-linux
--class
gnu
--class
os
{
recordfail
gfxmode
$linux_gfx_mode
insmod
gzio
insmod
part_msdos
insmod
ext2
set
root='(hd0,msdos1)'
search
--no-floppy
--fs-uuid
--set=root
9961c170-2566-41ac-8155-18f231c1bea5
linux/boot/vmlinuz-3.2.0-35-generic
root=UUID=9961c170-2566-41ac-8155-18f231c1bea5
ro
quiet
splash
$vt_handoff
initrd/boot/initrd.img-3.2.0-35-generic
}
當然你也可以修改
set
default="0"來決定用哪個,看看你的內核在第幾位,default就填幾,不過我用過這種方法,貌似不好用。
重啟過後你編譯的內核源碼就成功地運行了,如果出現問題,比如滑鼠不能用,usb不識別等問題就好好查查你的make
menuconfig這一步,改好後就萬事ok了。
最後再用uname
-r看看你的linux內核版本。是不是你剛下的那個呢!有沒有成就感?

5. 9月2日 自製linux系統和源碼編譯安裝內核

開啟此虛擬機

到此一個小的自製的linux系統就完成了,也可以在bash下輸入一些命令使用了。

[root@centos6 ~]#udevadm trigger ---讓上面的文件生效
[root@centos6 ~]#ll /dev/wangusb ---可以看到軟鏈接已經建好了
lrwxrwxrwx. 1 root root 5 Sep 2 21:04 /dev/wangusb -> myusb
此時如果插入一個usb設備,就會被識別為設備名為myusb。

輔助文件:ramdisk
initrd
initramfs

設置內核編譯者自己加的版本號

返回進入修改文件系統,我們是想讓編譯的新內核也支持NTFS文件系統,目前的內核是不支持的

將這一項打成M,表示支持NTFS文件系統,並保存至/lib/moles目錄下,這里選擇的時候按y、m、n進行選擇

退出保存即可

6. 如何編譯安裝Linux內核

1.先解壓解壓後會看到源代碼的目錄linux-2.6.27.69(這個版本要與當前系統的版本一樣查看當系統版本uname-r只要版本號前的數字相同就可以了如2.6.27)2.進入目錄linux-2.6.27.69運行命令makedistclean3.將/boot下面的內核配置文件復制到linux-2.6.27.69下,並命名為.config4.運行命令makemenuconfig(注意操作的時候都要進入linux內核源代碼目錄linux-2.6.27.59)5.運行makebzImage編譯完後會在arch/x86/boot/下面產生一個bzImage內核文件6.makemoles編譯內核模塊7.makemoles_install安裝內核模塊(安裝完後會在/lib/moles下面產生個文件2.6.27.59)8.製作ramddistk文件系統mkinitrdinitrd-2.6.27.59.img2.6.27.599安裝內核cparch/x86/boot/bzImage/boot/vmlinuz-2.6.27.59cpinitrd-2.6.27.59.img/boot/10.修改/etc/grub.conf這個對著配製修改就可以了,但要指定相應內核文件與ramdisk文件修改後真接reboot一下,會出現啟動菜單項,選擇要啟動的內核,就可以了整個編譯安裝的過程就完成了需要注意是:運行makemenucofig的時候可能會出現問題這是由於需安些一些依賴包ncurses-devel在製作ramdisk的時候可能出現錯誤,提示nomolefound之類的提示這個時候要指定參數mkinitrd--builtin=ata_piix整個的編譯安裝過程就是這樣,這個編譯與安裝只是針對x86,至於arm編譯的時候也是類似就不多說了,在整個編譯與安裝可能出現的錯誤就兩個,也說的很清楚了

7. Linux中源碼編譯安裝程序包括哪些基本步驟

第一步:創建編譯腳本
進入到源碼目錄 執行 ./configure --prefix=/.../.....(--prefix=後面是想要安裝到的目錄)
第二部:編譯
執行 make
第三部:安裝
執行 make install
當然上面這幾部都是最基本的步驟,如果想優化編譯,要在./configure 後面加參數,或者configure之後手動修改Makefile文件 如O2(優化等級) FLAGS 等編譯參數的修改。
--------------------------------------------------------------------------------------------------------------
以上都是源碼包的編譯
如果是自己寫的C代碼 直接 用gcc編譯即可。
例如 編譯test.c
執行 gcc -o test test.c即可將test.c編譯為可執行的文件 test

自己打出來的 要採納啊!

8. linux上的編譯安裝的基本概念是什麼,具體的流程又是怎麼個樣子

計算機運行的程序都是二進制的代碼,那麼我們所用的編程語言都是自然語言中的字元,那麼就需要有一種機制來將這些轉化成二進制代碼,那麼根據轉化機制不一樣,編程語言(軟體 產生的源頭)分兩大類 解釋型 編譯型,解釋型就不說了,編譯型就是在寫好程序的源碼以後對程序進行編譯,編譯成二進制的可執行代碼。
在linux中很多軟體的源碼都會伴隨著軟體一起發布,軟體就是經過編譯的一些二進制的文件,這些二進制文件由源碼編譯而來。所以當我們拿到了軟體的源碼的時候,可以根據源碼編譯出軟體,然後對軟體進行安裝,這就是你所說的編譯安裝了,對於非電腦專業的人不需要了解那麼多,涉及的東西比較多,要知道在編譯的時候需要設置編譯參數的,,
所以會拿deb rpm包來安裝就行了。。使用打包好的二進制包安裝的另外的好處就是可以由包管理系統進行管理可以方便的對軟體包進行安裝升級和卸載,如果是源碼編譯那麼就需要自己手動的管理了。
具體的流程沒那麼復雜,linux軟體發布的源碼都是有標准格式 的,通常是tar.gz tar.bz2這樣的壓縮包,
tar xvf xxx.tar.gz 解壓源碼包
cd xxx 進入源碼目錄
more INSTALL 或者more README 閱讀源碼包里的安裝說明,看不懂英語的可以跳過這步
./configure 參數 配置編譯參數;最常見的是prefix=安裝路徑 這樣可以把軟體安裝到一個指定目錄而不是安裝到系統的文件結構中(linux的文件結構可以參考FHS標准規范里的定義)
make 當上一步正確的執行後會生成一個Makefile文件,使用make命令可以對軟體源碼進行編譯
make install 安裝(可能會需要root許可權)
//部分軟體還會提供make test 這樣的測試,在安裝前可以運行make test 來測試軟體是否編譯正確。

9. linux怎樣編譯git源碼包

方法/步驟1
用git --version命令檢查是否已經安裝

2
在CentOS5的版本,由於yum源中沒有git,所以需要預先安裝一系列的依賴包。在CentOS6的yum源中已經有git的版本了,可以直接使用yum源進行安裝。

3
yum -y install git
但是yum源中安裝的git版本是1.7.1,Github等需要的Git版本最低都不能低於1.7.2 。所以我們一般不用上面的方法,而是下載git源碼編譯安裝。

END
編譯安裝git
1
首先更新系統
yum -y update
更新完成之後有6.5變成6.7了

10. 如何編譯linux源代碼

首先uname -r看一下你當前的linux內核版本

1、linux的源碼是在/usr/src這個目錄下,此目錄有你電腦上各個版本的linux內核源代碼,用uname -r命令可以查看你當前使用的是哪套內核,你把你下載的內核源碼也保存到這個目錄之下。
2、配置內核 make menuconfig,根據你的需要來進行選擇,設置完保存之後會在當前目錄下生成.config配置文件,以後的編譯會根據這個來有選擇的編譯。
3、編譯,依次執行make、make bzImage、make moles、make moles
4、安裝,make install
5、.創建系統啟動映像,到 /boot 目錄下,執行 mkinitramfs -o initrd.img-2.6.36 2.6.36
6、修改啟動項,因為你在啟動的時候會出現多個內核供你選擇,此事要選擇你剛編譯的那個版本,如果你的電腦沒有等待時間,就會進入默認的,默認的那個取決於 /boot/grub/grub.cfg 文件的設置,找到if [ "${linux_gfx_mode}" != "text" ]這行,他的第一個就是你默認啟動的那個內核,如果你剛編譯的內核是在下面,就把代表這個內核的幾行代碼移到第一位如:
menuentry 'Ubuntu, with Linux 3.2.0-35-generic' --class ubuntu --class gnu-linux --class gnu --class os {

recordfail
gfxmode $linux_gfx_mode
insmod gzio
insmod part_msdos
insmod ext2
set root='(hd0,msdos1)'
search --no-floppy --fs-uuid --set=root 9961c170-2566-41ac-8155-18f231c1bea5
linux/boot/vmlinuz-3.2.0-35-generic root=UUID=9961c170-2566-41ac-8155-18f231c1bea5 ro quiet splash $vt_handoff
initrd/boot/initrd.img-3.2.0-35-generic
}
當然你也可以修改 set default="0"來決定用哪個,看看你的內核在第幾位,default就填幾,不過我用過這種方法,貌似不好用。

重啟過後你編譯的內核源碼就成功地運行了,如果出現問題,比如滑鼠不能用,usb不識別等問題就好好查查你的make menuconfig這一步,改好後就萬事ok了。

最後再用uname -r看看你的linux內核版本。是不是你剛下的那個呢!有沒有成就感?

閱讀全文

與linux如何從源碼編譯安裝相關的資料

熱點內容
帝國神話組建雲伺服器 瀏覽:825
鄧散木pdf 瀏覽:197
方舟怎麼直連伺服器圖片教程 瀏覽:561
假相pdf 瀏覽:334
找對象找程序員怎麼找 瀏覽:976
怎麼投訴蘋果商店app 瀏覽:470
華為手機如何看有多少個app 瀏覽:734
btr如何管理別的伺服器 瀏覽:410
spwm軟體演算法 瀏覽:184
70多歲單身程序員 瀏覽:221
高考考前解壓拓展訓練 瀏覽:217
用紙做解壓玩具不用澆水 瀏覽:584
谷輪壓縮機序列號 瀏覽:736
牛頓插值法編程 瀏覽:366
php多用戶留言系統 瀏覽:731
安卓和蘋果如何切換流量 瀏覽:703
怎麼知道dns伺服器是多少 瀏覽:976
5995用什麼簡便演算法脫式計算 瀏覽:918
電腦上如何上小米雲伺服器地址 瀏覽:921
手機資料解壓密碼 瀏覽:444