① linux下的gcc編譯後生成Linux下的可執行文件,window下gcc編譯後是exe文件,為什麼不一樣啊是怎麼做到的
首先,這win和Linux下的gcc功能是一樣的,實際的gcc.exe和linux下的gcc這兩個文件不是一樣的,他們畢竟需要在工作在不同的平台上,而且他們做的一些工作是有區別的。
編譯過程是把源文件翻譯成機器碼,然後鏈接成一個整體,拼接成一個文件。不管是win下的exe還是Linux下的ELF,都是按照一定規范來的,比如頭部放什麼,尾部放什麼,中間又存哪些信息等。但是,如果要編譯出正確的可執行的文件,不同的操作系統里就必須按照不同的規范來組織這個文件。
這些文件的執行過程,並不是說它們可以直接執行,執行的時候,系統把它們從磁碟上,讀到內存中,經過一系列的前期工作,才可以最終執行起來,這個前期過程都是操作系統來搞定的。
你不應該問gcc是怎麼做到的,而應該問gcc為什麼需要這樣。如果你需要知道細節,去看《程序員的自我修養》
② linux下多個.o文件如何鏈接生成可執行程序
方法和詳細的操作步驟如下:
1、第一步,找到需要打開的.o後綴文件,見下圖,轉到下面的步驟。
③ 如何在linux下運行c生成的可執行程序
gcc
first.C
-o
first
說明:
1>編譯當前目錄下、名字叫做first.C的c源文件;
2>在當前目錄下、生成名字叫first(這個名字可以自己隨便寫、符合linux命名規則就行)的可執行程序;
關於運行:
用ls
-l
命令,可以看到當前目錄下有一個綠色的文件、名字叫first,就是剛剛編譯得到的文件;
使用命令「./first」既可運行(無雙引號、雙引號是用來說明的);
④ 如何在linux環境下編輯一個c語言源程序並將其編譯為可執行文件
打開安裝好的Linux系統(ubuntu18.04)
1.安裝編輯器
使用語句:sudo apt-get install vim安裝vim,可以在安裝前查看是否安裝vim編輯器。(特別提示:在安裝vim前最好將軟體更新,使用指令sudo apt-get update.)之所以要加sudo的原因是這些安裝和更新軟體的時候需要使用管理員許可權才可以進行。
2.安裝gcc編譯器
和安裝vim類似使用sudo apt-get install gcc,安裝完成後可以使用cc-v來查看編譯器版本信息等。cc -v界面如下:
⑤ 如何在linux下編譯,執行c程序
1.編譯單個源文件
[例如]在屏幕上列印"Hello,Linux."
[源代碼]#include<stdio.h
#include<stdlib.h
int main(int argc,char **argv){printf("Hello,Linux.\n");exit(0);}將源文件保存為hello.c,開始進行編譯
$gcc -o hello hello.c
編譯成功完成後,在當前路徑下,生成一個名為hello的文件,然後執行
$./hello在屏幕上,你將會看到列印結果:Hello,Linux.
說明:在默認情況下,編譯成功完成後,會在當前路徑下,生成一個名為a.out的文件,然後執行$./a.out便可列印結果,但通常可以通過選項-o來指定自己的可執行程序名稱;
2.編譯多個源文件
3.使用外部函數庫
4.使用共享函數庫和靜態函數庫5.gcc選項詳細描述
⑥ linux 怎麼編譯c的源程序的gcc,編譯命令是什麼
在Linux下面,如果要編譯一個C語言源程序,我們要使用gcc編譯器。
先將源文件編譯成目標文件:gcc - c hello.c
生成hello.o文件,再將目標文件編譯成可執行文件:gcc -o hello hello.o
如:
int main(int argc,char **argv)
{
printf("Hello Linux ");
}
(6)linux編譯可執行文件擴展閱讀:
在使用GCC編譯器的時候,我們必須給出一系列必要的調用參數和文件名稱。GCC編譯器的調用參數大約有100多個,這里只介紹其中最基本、最常用的參數。具體可參考GCC Manual。
GCC最基本的用法是∶gcc [options] [filenames]
其中options就是編譯器所需要的參數,filenames給出相關的文件名稱。
網路_gcc
⑦ linux編譯的內核怎麼不是可執行文件
准確的說,編譯生成的確實是一個可執行文件(含有代碼+數據,可執行),但是你這里說的可執行是在操作系統之上的可執行。而操作系統支持的可執行是有一定的格式的。比如
windows
的pe,linux
的elf,其實是有辦法把兩種格式互換的。從bios載入第一扇區引導區,到後面支持整個上層用戶進程,都是裡面設計好的,和我們操作系統上可執行程序的不一樣。不過我們可以構造這個內核文件,使它能在os上跑。
⑧ Linux下,用什麼命令編譯m文件為可執行文件
windows操作系統根據文件的擴展名來區分文件類型,而Linux系統不是,Linux通過查看文件內的頭部信息來確定文件的類型,而與文件的名字無關。使用gcc 編譯test時出現錯誤,不是操作系統的原因,代碼文件命名為text與text.c,對於操作系統來說,它們都是text文件,沒有什麼區別,但對於編譯程序gcc來說就不同了,gcc編譯器程序是根據文件的擴展名來判斷文件類型的,所以使用gcc test -o test.out命令出現的錯誤不是操作系統的原因,而是gcc的原因,gcc程序的輸入文件一般擴展名為.c .cpp .o .asm .S .s等,具體見gcc幫助文檔。
⑨ Linux怎麼編譯直接執行文件(C/C++)的呢
GCC是Linux操作系統下一個非常重要的源代碼編譯工具,C、C++都可以通過gcc編譯後來執行,案例如下: 在屏幕上列印"Hello,Linux."
#include<stdio.h>
#include<stdlib.h>
intmain(intargc,char**argv)
{
printf("Hello,Linux. ");
exit(0);
}
將源文件保存為hello.c,開始進行編譯
$gcc-ohellohello.c
編譯成功完成後,在當前路徑下,生成一個名為hello的文件,然後執行
$./hello
在屏幕上,將會看到列印結果:Hello,Linux.
⑩ 在linux中如何編譯C程序,使之成為可執行文件如何調試
Gcc最基本的用法是∶gcc [options] [filenames] 其中options就是編譯器所需要的參數,filenames給出相關的文件名稱。 -c,只編譯,不連接成為可執行文件,編譯器只是由輸入的.c等源代碼文件生成.o為後綴的目標文件,通常用於編譯不包含主程序的子程序文件。 -o output_filename,確定輸出文件的名稱為output_filename,同時這個名稱不能和源文件同名。如果不給出這個選項,gcc就給出預設的可執行文件a.out。 -g,產生符號調試工具(GNU的gdb)所必要的符號資訊,要想對源代碼進行調試,我們就必須加入這個選項。 -O,對程序進行優化編譯、連接,採用這個選項,整個源代碼會在編譯、連接過程中進行優化處理,這樣產生的可執行文件的執行效率可以提高,但是,編譯、連接的速度就相應地要慢一些。 -O2,比-O更好的優化編譯、連接,當然整個編譯、連接過程會更慢.
例子:
gcc -o test test.c
結果生成可執行文件test