當前位置:首頁 » 編程軟體 » gcc編譯exe

gcc編譯exe

發布時間: 2023-03-12 12:58:53

1. c語言代碼怎麼編譯成.o文件再怎麼變成.exe文件

linux下gcc -c wen.c -o wen.o 生成.o文件gcc wen.o -o wen 就變成.exe文件

2. 為什麼我用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 參數,那麼你後面的可執行文件名,就隨便由你自己決定了,這個就沒有一定之規了。

3. linux 下可以用gcc 編譯windows可用的 exe文件嗎

根據gcc的編譯選項可以看出: 不能
由於Linux和windows是完全不兼容的, Linux上不使用文件後綴名來區分文件, 所以同樣是gcc編譯出來的文件,在Linux上可以執行, 在windows就不能了。

可以安裝Cygwin模擬Linux環境,將源代碼拷到windows下, 用Cygwin編譯出exe文件,可以在Windows上執行。

4. 如何在Linux下用gcc將c語言文件編譯成32位exe文件,且可以在Windows下運行

有方法的,不過要看你編繹出的程序需要用到多少windows的庫,看看linux下有沒有可以替代的,不過很多時候沒有windows內核還是無法編譯成功的。
方法一:安裝mingw32
方法二:virtualbox安裝xp的虛擬機
方法三:通過wine使用cl命令行編譯
上面幾個方法你可以嘗試一下。
至於編輯嘛,高手一般直接就用vim,如果你覺得難用的話,可以用eclipse或者kdevelop,kdevelop有點像windows下VS,希望對你有所幫助

5. 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是已經建立好的,已經存在的文件夾,上面這樣表示編譯後,
將生成的可執行文件安裝拷貝到那個目錄.

6. gcc編譯後的文件怎樣運行

Windows系統
假如生成的可執行文件名稱為prog.exe,位於D:\cpp文件夾下,那麼打開命令行,運行下面兩條命令
cd D:\cpp
prog.exe
注意,如果用gcc編譯的時候未指定可執行文件名稱,則默認為a.exe

Linux系統
假如生成的可執行文件名稱為prog,位於home下的CPP文件夾,那麼打開終端,運行下面兩條命令
cd ~/CPP
./prog
注意,如果用gcc編譯的時候未指定可執行文件名稱,則默認為a.out

7. 為什麼我用gcc編譯的.exe文件中文字顯示不出來,是我代碼有問題嗎 #inc

不怕麻煩的話呢,可以調整#include結構來讓各c文件相連。。
建議呢,把類型與函數的聲明整理到特定的.h文件中,然後用#ifndef來使其只被包含一次,然後,在用到其它文件中實現的函數的時候將相應的.h文件include進來就好。這樣呢,編譯的時候可以單個文件逐一編譯:
gcc -c main.c -o main.o
gcc -c del.c -o del.o
gcc -c insert.c -o insert.o
參數-c意思是只編譯不連接,-o是名命輸出文件。
全部編譯成.o文件無誤後,再將所有的.o文件相連:
gcc main.o del.o insert.o -o prog
就可以生成prog了。

然後舉個例子說明處理.h文件:
比如這個create.c。裡面定義了一個struct和一個函數。那麼就可以寫create.h如下:

#ifndef __CREATE_H__
#define __CREATE_H__
struct student
{
long num ;
float score;
struct student *next;
};
struct student *creat(void);
#endif

然後呢,因為student這個struct在這個.h文件里已經聲明了,所以create.c里只要寫#include "create.h",而在用到這個struct或者這個函數的場合,也只要這樣簡單一句就可以了。而.h文件開頭的#ifndef可以保證同一個h文件不會被多次包含。當然,如果編譯器支持的話,用#pragma once也許會比#ifndef更省事一些。

熱點內容
phpsocketlisten 發布:2025-07-20 22:39:07 瀏覽:428
絕地求生未來之役要下什麼伺服器 發布:2025-07-20 22:34:26 瀏覽:65
linux對比工具 發布:2025-07-20 22:31:45 瀏覽:749
音樂緩存在什麼文件夾 發布:2025-07-20 22:31:40 瀏覽:817
ftp伺服器怎麼清理 發布:2025-07-20 22:08:26 瀏覽:3
點膠緩存機 發布:2025-07-20 22:06:45 瀏覽:737
手機存儲已損壞 發布:2025-07-20 21:51:00 瀏覽:53
安卓手機存儲卡格式化 發布:2025-07-20 21:18:57 瀏覽:249
小廠編程 發布:2025-07-20 21:17:24 瀏覽:798
我的世界無人管理的伺服器伺服器ip 發布:2025-07-20 20:49:58 瀏覽:90