(g linux)
裝一個Linux系統(tǒng)要多少G?
一般6-10G,建議20G以上。r由于Linux的內(nèi)核的來源是一樣的, 但由于發(fā)行版本不同, 具體需要磁盤大小看具體系統(tǒng)需求。rLinux內(nèi)核比較小, 安裝系統(tǒng)其實用不了多大的磁盤空間, 不像MAX OS 和windows 。為了獲得完整的用戶體驗, 建議磁盤空間保證在20G以上, 如果需要安裝很多軟件和服務(wù), 那么自然就要擴(kuò)大磁盤容量了。 當(dāng)然也可以在系統(tǒng)裝好之后擴(kuò)充磁盤容量, 但為了避免麻煩和數(shù)據(jù)損失, 建議在安裝時多分一點兒空間。
linux gcc編譯好C文件后生成.o目標(biāo)文件,但是在執(zhí)行中($./test)出現(xiàn)沒有那個文件或目錄,請大神幫忙?
.o文件是不能被執(zhí)行的, c的源碼要經(jīng)過編譯和鏈接才能生成可執(zhí)行文件,你只是編譯了,沒有鏈接,這個文件相當(dāng)于Windows下的test.obj而已。gcc -Wall test.c -o test
Linux的gcc是怎么用的?
在終端中輸入 gcc 文件名 -o 目標(biāo)文件名然后 ./目標(biāo)文件名 就行了,沒有目標(biāo)文件名,自動存為 a執(zhí)行 ./a 就行了。在使用Gcc編譯器的時候,我們必須給出一系列必要的調(diào)用參數(shù)和文件名稱。GCC編譯器的調(diào)用參數(shù)大約有100多個,其中多數(shù)參數(shù)我們可能根本就用不到,這里只介紹其中最基本、最常用的參數(shù)。 GCC最基本的用法是∶gcc 其中options就是編譯器所需要的參數(shù),filenames給出相關(guān)的文件名稱。 -c,只編譯,不連接成為可執(zhí)行文件,編譯器只是由輸入的.c等源代碼文件生成.o為后綴的目標(biāo)文件,通常用于編譯不包含主程序的子程序文件。 -o output_filename,確定輸出文件的名稱為output_filename,同時這個名稱不能和源文件同名。如果不給出這個選項,gcc就給出預(yù)設(shè)的可執(zhí)行文件a.out。 -g,產(chǎn)生符號調(diào)試工具(GNU的gdb)所必要的符號資訊,要想對源代碼進(jìn)行調(diào)試,我們就必須加入這個選項。 -O,對程序進(jìn)行優(yōu)化編譯、連接,采用這個選項,整個源代碼會在編譯、連接過程中進(jìn)行優(yōu)化處理,這樣產(chǎn)生的可執(zhí)行文件的執(zhí)行效率可以提高,但是,編譯、連接的速度就相應(yīng)地要慢一些。 -O2,比-O更好的優(yōu)化編譯、連接,當(dāng)然整個編譯、連接過程會更慢。 -Idirname,將dirname所指出的目錄加入到程序頭文件目錄列表中,是在預(yù)編譯過程中使用的參數(shù)。C程序中的頭文件包含兩種情況∶ A)#include <myinc.h> B)#include “myinc.h” 其中,A類使用尖括號(< >),B類使用雙引號(“ ”)。對于A類,預(yù)處理程序cpp在系統(tǒng)預(yù)設(shè)包含文件目錄(如/usr/include)中搜尋相應(yīng)的文件,而B類,預(yù)處理程序在目標(biāo)文件的文件夾內(nèi)搜索相應(yīng)文件。 GCC執(zhí)行過程示例 示例代碼 a.c: #include <stdio.h> int main() { printf("hellon"); } 預(yù)編譯過程: 這個過程處理宏定義和include,并做語法檢查。 可以看到預(yù)編譯后,代碼從5行擴(kuò)展到了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 匯編過程: 這個階段,生成目標(biāo)代碼。 此過程生成ELF格式的目標(biāo)代碼。 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 鏈接過程: 鏈接過程。生成可執(zhí)行代碼。鏈接分為兩種,一種是靜態(tài)鏈接,另外一種是動態(tài)鏈接。使用靜態(tài)鏈接的好處是,依賴的動態(tài)鏈接庫較少,對動態(tài)鏈接庫的版本不會很敏感,具有較好的兼容性;缺點是生成的程序比較大。使用動態(tài)鏈接的好處是,生成的程序比較小,占用較少的內(nèi)存。 gcc a.o -o a 程序運行: ./a hello編輯本段GCC編譯簡單例子 編寫如下代碼: #include <stdio.h> int main() { printf("hello,world!n"); } 執(zhí)行情況如下: 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!
linux下c編程,為什么有些程序用g++就可以編譯,而用gcc時必須加上-lstdc++呢?
因為gcc只能編譯C語言編寫的程序,有的程序是用C++寫的,所以編譯的時候就要使用G++,或者手動加上標(biāo)準(zhǔn)C++庫
總結(jié)
- 上一篇: 安卓苹果软件互传(安卓苹果软件)
- 下一篇: 测量安卓手机电池损耗的软件(测量安卓)