『壹』 GCC編譯器的參數與空格
按照INSTALL中的介紹,也是常用的方法,在configure的時候,加上–host=arm-linux,結果沒有實現我們要的效果,沒有將編譯器從默認的
gcc改成arm-linux-gcc,編譯器還是用的默認的gcc:
[crifan@localhost
lrzsz-0.12.20]$
CFLAGS=-O2
./configure
–host=arm-linux
loading
cache
./config.cache
………………..
checking
for
gcc…
(cached)
gcc
checking
whether
the
C
compiler
(gcc
-O2
)
works…
yes
checking
whether
the
C
compiler
(gcc
-O2
)
is
a
cross-compiler…
no
………………..
後來經過多次嘗試,最後受默認的
CFLAGS=-O2
./configure
進行配置所啟發,想到,是否可以將CC參數傳入到configure中,
結果證實,如果沒有自己的cache-file,即時加了對的CC參數,也還是無法傳入:
[crifan@localhost
lrzsz-0.12.20]$
CFLAGS=-O2
CC=arm-linux-gcc
./configure
–host=arm-linux
loading
cache
./config.cache
………………..
checking
for
gcc…
(cached)
gcc
checking
whether
the
C
compiler
(gcc
-O2
)
works…
yes
checking
whether
the
C
compiler
(gcc
-O2
)
is
a
cross-compiler…
no
checking
whether
we
are
using
GNU
C…
(cached)
yes
………………..
而且,如果CC參數放在configure後面:
./configure
CC=arm-linux-gcc
則不能識別:
[crifan@localhost
lrzsz-0.12.20]$
CFLAGS=-O2
./configure
CC=arm-linux-gcc
configure:
warning:
CC=arm-linux-gcc:
invalid
host
type
………………..
參數傳遞必須像
CFLAGS=-O2
./configure
一樣,將參數設置放在configure的前面:
CC=arm-linux-gcc./configure
才能識別的。
必須要自己制定自己的cache-file
然後用./configure進行新配置,加上CC參數,才會即時生效,編譯器才可以變成我們要的arm-linux-gcc:
[crifan@localhost
lrzsz-0.12.20]$
CC=arm-linux-gcc
./configure
–cache-file=cache_file_0
–prefix=/usr/crifan/lrzsz
………………..
checking
for
gcc…
arm-linux-gcc
checking
whether
the
C
compiler
(arm-linux-gcc
)
works…
yes
checking
whether
the
C
compiler
(arm-linux-gcc
)
is
a
cross-compiler…
yes
checking
whether
we
are
using
GNU
C…
yes
………………..
否則,就無法將我們的CC參數傳入了:
[crifan@localhost
lrzsz-0.12.20]$
CC=arm-linux-gcc
./configure
–prefix=/usr/crifan/lrzsz
………………..
checking
for
gcc…
(cached)
gcc
checking
whether
the
C
compiler
(gcc
)
works…
yes
checking
whether
the
C
compiler
(gcc
)
is
a
cross-compiler…
no
checking
whether
we
are
using
GNU
C…
(cached)
yes
………………..
[crifan@localhost
lrzsz-0.12.20]$
CFLAGS=-O2
CC=arm-linux-gcc
./configure
–cache-file=cache_file_0
loading
cache
cache_file_0
………………..
checking
for
gcc…
arm-linux-gcc
checking
whether
the
C
compiler
(arm-linux-gcc
-O2
)
works…
yes
checking
whether
the
C
compiler
(arm-linux-gcc
-O2
)
is
a
cross-compiler…
yes
checking
whether
we
are
using
GNU
C…
yes
最好此處在加上–prefix=/usr/crifan/lrzsz,表示具體安裝到哪裡
[crifan@localhost
lrzsz-0.12.20]$
CFLAGS=-O2
CC=arm-linux-gcc
./configure
–cache-file=cache_file_0
–prefix=/usr/crifan/lrzsz
loading
cache
cache_file_0
………………..
checking
for
gcc…
arm-linux-gcc
checking
whether
the
C
compiler
(arm-linux-gcc
-O2
)
works…
yes
checking
whether
the
C
compiler
(arm-linux-gcc
-O2
)
is
a
cross-compiler…
yes
checking
whether
we
are
using
GNU
C…
yes
………………..
其中,/usr/crifan/lrzsz是已經建立好的,已經存在的文件夾,上面這樣表示編譯後,
將生成的可執行文件安裝拷貝到那個目錄.
『貳』 windows下怎麼編譯exe文件
根據gcc的編譯選項可以看出: 不能 由於Linux和windows是完全不兼容的, Linux上不使用文件後綴名來區分文件, 所以同樣是gcc編譯出來的文件,在Linux上可以執行, 在windows就不能了。 可以安裝Cygwin模擬Linux環境,將源代碼拷到windows下, 用Cygwin編譯出exe文件,可以在Windows上執行。
『叄』 c語言如何把c程序編譯成可執行的exe文件
1、編寫一段簡單的代碼,如下圖所示,編輯一段簡單的輸出語句。
『肆』 怎麼用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!
『伍』 如何在Windows下編譯GCC
方法如下:
雙擊GCC安裝包,mingw-get-setup.exe,點擊Install安裝。
點擊Change選擇安裝路徑,盡量不要有中文和空格,
將package 下面的mingw-***和mingw32-***和msys-**。都勾選上,等待下載安裝,直到勾選框全部變成土灰色。
找到安裝目錄的bin目錄,將路徑右鍵復制下來。
找到計算機,右鍵,屬性。點擊 高級系統設置。
找到下面的 環境變數 點擊。
在系統變數裡面找到 Path變數,雙擊出現下面輸入框,在變數值的末尾添加剛剛復制的bin目錄,並在最後加上英文狀態下 的分號(;)。點擊確定。
測試是否安裝成功,在cmd命令提示符裡面輸入 gcc --help 回車鍵,
EditPlus 3 安裝完成之後的界面點擊File 下的 new C/C++
出現以下測試代碼,保存到指定目錄,最後不要有空格和中文,我保存到E:/My/Test下面測試。文件名為test.c
命令提示符窗口進入到 E:/MyTest 下 用dir 命令顯示當前目錄下的所有文件。
使用gcc 命令編譯 命令格式 如下 gcc test.c - o test 回車鍵。編譯完成。
直接輸入test運行,輸出hello,world。
測試完成。
『陸』 linux 下可以用gcc 編譯windows可用的 exe文件嗎
根據gcc的編譯選項可以看出: 不能
由於Linux和windows是完全不兼容的, Linux上不使用文件後綴名來區分文件, 所以同樣是gcc編譯出來的文件,在Linux上可以執行, 在windows就不能了。
可以安裝Cygwin模擬Linux環境,將源代碼拷到windows下, 用Cygwin編譯出exe文件,可以在Windows上執行。
『柒』 C語言編寫好代碼後,怎麼編譯,最後生成可執行文件
材料/工具:vc6.0
1、打開c語言編輯工具,在工具中寫入程序的源代碼。
『捌』 Linux中gcc無法編譯,顯示 gcc:exe.c:no such file or directory gcc:no input files 求教大神
輸入ls命令截圖看一下?
『玖』 如何將編寫好的C語言源程序變成可執行文件EXE
從網上轉來的
編譯
F5
使用Turbo
C來調試C程序的示例:
1、首先打開turboc,方法很簡單啦:找到turboc所在目錄,然後雙擊TC.exe。
2、然後會出現一個窗口,使用Alt+F組合鍵打開菜單選擇New選項回車新建文件
3、然後輸入c語言源程序(這里特別注意要細心,千萬不要輸錯了)
4、好當很長很長的源程序輸入完以後(雖然很多同學剛剛接觸c語言,還不知道自己輸了半天輸的是什麼)接一下檢查一下自己輸入的程序是否語法正確,然後使用Alt+R組合鍵打開菜單選擇Run選項回車,也就是運行選項(主要是看看輸了半天的程序在計算機當中運行是個什麼東東)
5、好像沒有什麼表示嗎,不要著急不是計算機出了問題,這個時候用Alt+R組合鍵選擇User
Scren選項回車
6、怎麼樣是不是有結果了.
7、好一個程序調試完畢我們需要保存一下我們辛苦勞動的結果,用Alt+F組合鍵選擇Save選項回車保存我們的程序(注意保存的目錄和文件名,文件名要以擴展名.c結尾)
『拾』 為什麼我用gcc編譯c程序到最後無法自動生成一個exe程序
gcc 是 Linux 系統下面的 C 語言編譯器。它和 WINDOWS 系統下面的 Microsoft Visual Studio C++ 6.0 不同,在 WINDOWS 系統下面對任何的一個源程序,經編譯、鏈接、到最終生成的所有可執行程序必定都是以 *.exe 結尾的,*.exe 是 WINDOWS 系統下面的可執行程序的後綴;而 gcc 對 C 語言進行編譯,並沒有規定可執行程序的具體名字到底是什麼。舉例如下:
$gcc my_program.c <cr>
如果在命令行中,沒有帶任何參數的話,如果 C 語言源程序沒有任何語法錯誤的話,那麼生成的預設的可執行文件就是:a.out;
$gcc my_program.c -o my_runfile <cr>
如果在命令行中,指定:-o 參數,代表對 my_program.c 進行編譯後,生成的可執行文件名為:my_runfile。
同理,在進行命令行編譯過程中,只要指定了 -o 參數,那麼你後面的可執行文件名,就隨便由你自己決定了,這個就沒有一定之規了。