linux源碼編譯命令 linux 命令源碼

linux 怎么編譯c的源程序的?gcc,編譯命令是什么?

編譯方法:格式 gcc [option] [sourcefilename]常用的選項(xiàng)最簡(jiǎn)單的是:gcc hello.c默認(rèn)的情況下將生成a.out的可執(zhí)行性文件,

我們提供的服務(wù)有:成都網(wǎng)站設(shè)計(jì)、網(wǎng)站建設(shè)、微信公眾號(hào)開(kāi)發(fā)、網(wǎng)站優(yōu)化、網(wǎng)站認(rèn)證、桃源ssl等。為1000+企事業(yè)單位解決了網(wǎng)站和推廣的問(wèn)題。提供周到的售前咨詢(xún)和貼心的售后服務(wù),是有科學(xué)管理、有技術(shù)的桃源網(wǎng)站制作公司

只需要在終端上輸入./a.out就可以看到執(zhí)行的結(jié)果,如果你想指定生成目標(biāo)文件的名字那么你可以加上 -o選項(xiàng),命令如下:gcc -o hello hello.c

命令:gcc -c hello hello.c

擴(kuò)展資料:

gcc命令的基本用法

gcc[options]?[filenames] ?

其中,filenames為文件名;options為編譯選項(xiàng)。

當(dāng)不使用任何編譯選項(xiàng)編譯hello.c時(shí),gcc將會(huì)自動(dòng)編譯產(chǎn)生一個(gè)a.out的可執(zhí)行文件:

[root@localhost?c]#?ls ?

hello.c ?

[root@localhost?c]#?gcc?hello.c ?

[root@localhost?c]#?ls ?

a.out??hello.c?

執(zhí)行:

[root@localhost?c]#?./a.out ?

Hello,?World!?

使用-o編譯選擇,可以為編譯后的文件指定一個(gè)名字:

[root@localhost?c]#?ls ?

a.out??hello.c ?

[root@localhost?c]#?gcc?hello.c?-o?hello ?

[root@localhost?c]#?ls ?

a.out??hello??hello.c ?

執(zhí)行:

[root@localhost?c]#?./hello ?

Hello,?World!?

注意:使用-o選項(xiàng)時(shí),-o后面必須跟一個(gè)文件名,即:-o outfile。

為了便于描述后面的選項(xiàng),刪除hello和a.out可執(zhí)行文件。

如何編譯Linux操作系統(tǒng)的源代碼?

1. 檢測(cè)/usr/src/linux/include/linux/version.h是否存在,以判斷是否以安裝內(nèi)核源碼,而如果只將內(nèi)核源碼包解壓,并不存在version.h這個(gè)文件,所以需要做如下步驟:

在內(nèi)核源碼目錄下(/usr/src/linux)

1)make include/linux/version.h 生成version.h文件

2)make include/asm 創(chuàng)建

如果從下載的源碼包,使用下列命令安裝:

cd /usr/src 進(jìn)入/usr/src目錄中,將源碼包放置在這里。

tar jxvf linux-2.6.18.tar.bz2 解壓源碼包,會(huì)生成linux-2.6.9目錄

ln -s /usr/src/linux-2.6.18 /usr/src/linux 編譯內(nèi)核建議做個(gè)軟鏈接。

并且要確保/lib/modules/2.6.18/下的build,source目錄

正確指向/usr/src/linux-2.6.18的:

[root@localhost modules]#ls -l /lib/modules/2.6.18

lrwxrwxrwx 1 root root 21 2008-07-03 14:28 build - /usr/src/linux-2.6.18/

lrwxrwxrwx 1 root root 21 2008-07-03 14:28 source - /usr/src/linux-2.6.18/

做完這些,我去安裝NVIDIA驅(qū)動(dòng),結(jié)果編譯時(shí)出錯(cuò)。

將內(nèi)核源碼編譯一次,不安裝,就可以正常編譯了

2.4.x內(nèi)核不知是否如此,如果編譯NVIDIA過(guò)程中出現(xiàn)錯(cuò)誤,就先編譯一下內(nèi)核

方法很簡(jiǎn)單:

從/boot目錄下復(fù)制config-2.6.10到/usr/src/linux下

命名為.config

對(duì)于2.6.x內(nèi)核使用下列命令編譯:

cd /usr/src/linux 進(jìn)入源碼目錄

make 編譯內(nèi)核及模塊

注意:不要去make install 只要編譯就可以了。

2.4.x使用下列命令編譯內(nèi)核,同樣,只編譯不安裝。

cd /usr/src/linux

make dep 建立依賴(lài)關(guān)系(不知道是否有必要,做下沒(méi)壞處)

make bzImage 編譯內(nèi)核

make modules 編譯模塊

通常發(fā)行版中/boot中應(yīng)該有當(dāng)前內(nèi)核的配置文件,如上面的config-2.6.9

如果沒(méi)有的話,可以通過(guò)下列命令創(chuàng)建出.config

[root@localhost linux]# cd /usr/src/linux

[root@localhost linux]#make menuconfig 字符界面配置內(nèi)核

[root@NEWLFS linux]#make xconfig 圖形界面配置內(nèi)核

這兩種方法任選其一,喜歡的話,可以自己配置一下。

或者直接使用默認(rèn)值,保存退出即可。這樣編譯時(shí)間會(huì)長(zhǎng)一些。

make menuconfig: 假如是在圖形界面中的終端運(yùn)行,要保證

該終端窗口為全屏,才不會(huì)出錯(cuò)。

如何編譯linux源代碼

首先uname -r看一下你當(dāng)前的linux內(nèi)核版本

1、linux的源碼是在/usr/src這個(gè)目錄下,此目錄有你電腦上各個(gè)版本的linux內(nèi)核源代碼,用uname -r命令可以查看你當(dāng)前使用的是哪套內(nèi)核,你把你下載的內(nèi)核源碼也保存到這個(gè)目錄之下。

2、配置內(nèi)核 make menuconfig,根據(jù)你的需要來(lái)進(jìn)行選擇,設(shè)置完保存之后會(huì)在當(dāng)前目錄下生成.config配置文件,以后的編譯會(huì)根據(jù)這個(gè)來(lái)有選擇的編譯。

3、編譯,依次執(zhí)行make、make bzImage、make modules、make modules

4、安裝,make install

5、.創(chuàng)建系統(tǒng)啟動(dòng)映像,到 /boot 目錄下,執(zhí)行 mkinitramfs -o initrd.img-2.6.36 2.6.36

6、修改啟動(dòng)項(xiàng),因?yàn)槟阍趩?dòng)的時(shí)候會(huì)出現(xiàn)多個(gè)內(nèi)核供你選擇,此事要選擇你剛編譯的那個(gè)版本,如果你的電腦沒(méi)有等待時(shí)間,就會(huì)進(jìn)入默認(rèn)的,默認(rèn)的那個(gè)取決于 /boot/grub/grub.cfg 文件的設(shè)置,找到if [ "${linux_gfx_mode}" != "text" ]這行,他的第一個(gè)就是你默認(rèn)啟動(dòng)的那個(gè)內(nèi)核,如果你剛編譯的內(nèi)核是在下面,就把代表這個(gè)內(nèi)核的幾行代碼移到第一位如:

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

}

當(dāng)然你也可以修改 set default="0"來(lái)決定用哪個(gè),看看你的內(nèi)核在第幾位,default就填幾,不過(guò)我用過(guò)這種方法,貌似不好用。

重啟過(guò)后你編譯的內(nèi)核源碼就成功地運(yùn)行了,如果出現(xiàn)問(wèn)題,比如鼠標(biāo)不能用,usb不識(shí)別等問(wèn)題就好好查查你的make menuconfig這一步,改好后就萬(wàn)事ok了。

最后再用uname -r看看你的linux內(nèi)核版本。是不是你剛下的那個(gè)呢!有沒(méi)有成就感?

網(wǎng)頁(yè)題目:linux源碼編譯命令 linux 命令源碼
文章起源:http://bm7419.com/article28/ddcoicp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供做網(wǎng)站關(guān)鍵詞優(yōu)化、網(wǎng)站排名、網(wǎng)站設(shè)計(jì)建站公司、響應(yīng)式網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

商城網(wǎng)站建設(shè)