導航:首頁 > 源碼編譯 > linux編譯

linux編譯

發布時間:2022-01-14 04:11:20

A. 如何自己編譯linux操作系統

編譯這個難啊,還要網速允許
你可以編譯
gentoo單純的自己編譯一個不屬於任何現在的版本可能不是一
般人可以做到的

B. 在linux中,怎麼用gcc編譯文件

在終端中輸入 gcc 文件名 -o 目標文件名
然後 ./目標文件名 就行了,沒有目標文件名,自動存為 a
執行 ./a 就行了。

在使用Gcc編譯器的時候,我們必須給出一系列必要的調用參數和文件名稱。GCC編譯器的調用參數大約有100多個,其中多數參數我們可能根本就用不到,這里只介紹其中最基本、最常用的參數。
GCC最基本的用法是∶gcc [options] [filenames]
其中options就是編譯器所需要的參數,filenames給出相關的文件名稱。
-c,只編譯,不連接成為可執行文件,編譯器只是由輸入的.c等源代碼文件生成.o為後綴的目標文件,通常用於編譯不包含主程序的子程序文件。
-o output_filename,確定輸出文件的名稱為output_filename,同時這個名稱不能和源文件同名。如果不給出這個選項,gcc就給出預設的可執行文件a.out。
-g,產生符號調試工具(GNU的gdb)所必要的符號資訊,要想對源代碼進行調試,我們就必須加入這個選項。
-O,對程序進行優化編譯、連接,採用這個選項,整個源代碼會在編譯、連接過程中進行優化處理,這樣產生的可執行文件的執行效率可以提高,但是,編譯、連接的速度就相應地要慢一些。
-O2,比-O更好的優化編譯、連接,當然整個編譯、連接過程會更慢。
-Idirname,將dirname所指出的目錄加入到程序頭文件目錄列表中,是在預編譯過程中使用的參數。C程序中的頭文件包含兩種情況∶
A)#include <myinc.h>
B)#include 「myinc.h」
其中,A類使用尖括弧(< >),B類使用雙引號(「 」)。對於A類,預處理程序cpp在系統預設包含文件目錄(如/usr/include)中搜尋相應的文件,而B類,預處理程序在目標文件的文件夾內搜索相應文件。

GCC執行過程示例

示例代碼 a.c:
#include <stdio.h>
int main()
{
printf("hello\n");
}
預編譯過程:
這個過程處理宏定義和include,並做語法檢查。
可以看到預編譯後,代碼從5行擴展到了910行。
gcc -E a.c -o a.i
cat a.c | wc -l
5
cat a.i | wc -l
910
編譯過程:
這個階段,生成匯編代碼。
gcc -S a.i -o a.s
cat a.s | wc -l
59
匯編過程:
這個階段,生成目標代碼。
此過程生成ELF格式的目標代碼。
gcc -c a.s -o a.o
file a.o
a.o: ELF 64-bit LSB relocatable, AMD x86-64, version 1 (SYSV), not stripped
鏈接過程:
鏈接過程。生成可執行代碼。鏈接分為兩種,一種是靜態鏈接,另外一種是動態鏈接。使用靜態鏈接的好處是,依賴的動態鏈接庫較少,對動態鏈接庫的版本不會很敏感,具有較好的兼容性;缺點是生成的程序比較大。使用動態鏈接的好處是,生成的程序比較小,佔用較少的內存。
gcc a.o -o a
程序運行:
./a
hello
編輯本段
GCC編譯簡單例子

編寫如下代碼:
#include <stdio.h>
int main()
{
printf("hello,world!\n");
}
執行情況如下:
gcc -E hello.c -o hello.i
gcc -S hello.i -o hello.s
gcc -c hello.s -o hello.o
gcc hello.c -o hello
./hello
hello,world!

C. 在linux 編譯c。

gcc hello.c -o hello //gcc 是linux下的編譯器。 hello.c是源文件 hello是最終生成的可執行文件

./hello 運行這個程序

也可以不用-o, 直接gcc hello.c 這樣的話默認生成a.out可執行文件 ./a.out運行

D. linux 怎麼c編譯

在 Linux 系統下面,可以使用 gcc 編譯器對自己編寫的 C 語言源程序進行編譯。當然了,要想使用 c 編譯器對 C 語言源程序進行編譯,前提是在安裝 Linux 操作系統時,必須把 Linux 系統自帶的 gcc 編譯器安裝上。
常用的選項有(其中:$ 表示普通用戶裝下面的提示符,# 表示超級用戶下面的提示符):
$gcc my_program.c <cr>
如果 C 源程序沒有任何錯誤的話,編譯器就會自動生成一個預設的可執行程序,該文件名為 a.out
$gcc -o my_program my_program.c <cr> (-o 選項用於指定輸出的可執行程序名)
如果 C 源程序沒有任何錯誤的話,編譯器就會自動生成一個 my_program 的可執行程序
其他還有很多選項,可以參考 gcc 的詳細使用文檔。

E. 在linux環境下怎麼寫代碼 ,編譯

Linux輸入命令行 vim test.c 會打開test.c文件,按 i 進入編輯模式,就可以開始寫代碼了。
寫好後按 ESC 退出編輯模式,輸入 :wq 保存並退出。
註:有些linux發行版上沒有默認安裝vim,要先安裝。vim是vi編輯器的增強版(vi是默認都帶的,也可以用 vi test.c)。

編譯,命令行輸入
gcc -Wall test.c -o test
說明:-Wall選項用於顯示所有警告,-o test 指定輸出的可執行文件名為test(默認不指定為a.out)

要用Windows下那種開發方式,就在Linux系統上裝個Eclipse(加上 c/c++ 插件)。

F. linux終端下如何進行C語言編譯

1、首先在linux下判斷是否安裝gcc編譯器,直接執行:gcc -v,判斷是否安裝gcc。

G. linux下編譯C語言

printf("sumis%d
",sum);

H. linux 編譯

這個還真不是一兩句話能說清的……舉個例子吧!我在linux下編一個hello world。在終端里vim 一個hello.c的文件,在裡面編完代碼後退出。你可以直接gcc hello.c。若編譯成功,這時在當前路徑下生成一個a.out的文件。執行 ./a.out後便在終端下直接運行了。或gcc -o filename hello.c是自定義生成的文件名。gcc的參數還有很多,不一一說了,樓主man gcc一下吧。

I. Linux編譯錯誤

你的系統時間不對,makefile生成的時間比你make的時候的時間還要晚,這就造成不符合事實的情況 修改:打開Makefile,任意行尾端加上一個空格,保存即可 或者修改你的電腦的系統時間,使其晚於Makefile生成的時間. 望採納!

J. 如何編譯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編譯相關的資料

熱點內容
listsortjava 瀏覽:180
plc閃光電路編程實例 瀏覽:297
socket編程試題 瀏覽:201
華為的伺服器怎麼設置從光碟機啟動 瀏覽:867
程序員真的累嗎 瀏覽:323
學信網app為什麼刷臉不了 瀏覽:871
天蠍vs程序員 瀏覽:991
單片機下載口叫什麼 瀏覽:186
程序員的道 瀏覽:924
雲伺服器不實名違法嗎 瀏覽:556
怎樣查看文件夾圖片是否重復 瀏覽:993
文件怎麼導成pdf文件 瀏覽:806
打開sql表的命令 瀏覽:101
安卓手機如何面部支付 瀏覽:37
天元數學app為什麼登錄不上去 瀏覽:823
明日之後為什麼有些伺服器是四個字 瀏覽:103
安卓系統l1是什麼意思 瀏覽:25
伺服器一直崩應該用什麼指令 瀏覽:924
cm202貼片機編程 瀏覽:729
php構造函數帶參數 瀏覽:179