真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

linux.編譯命令-o Linux編譯

linux下怎樣編譯程序

進入終端,用cd 命令切換到c文件的目錄

臨西ssl適用于網(wǎng)站、小程序/APP、API接口等需要進行數(shù)據(jù)傳輸應(yīng)用場景,ssl證書未來市場廣闊!成為成都創(chuàng)新互聯(lián)公司的ssl證書銷售渠道,可以享受市場價格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:18982081108(備注:SSL證書合作)期待與您的合作!

編譯命令:gcc -o exec_file (可執(zhí)行文件名) soucre_file.c(源文件)

然后 用命令 ./exec_file 運行

更高級的是用make 工具,自動編譯

Linux .so庫的使用

新建一個sort.c文件,寫一個最簡單的排序

使用 gcc -o libsort.so -fPIC -shared sort.c 產(chǎn)生libsort.so庫。

.so庫有兩種調(diào)用方法:

新建main.c文件:

使用命令 gcc -o main main.c -lsort -L. 編譯。

新建main2.c文件:

使用命令 gcc -o main2 main2.c -ldl 編譯。動態(tài)加載.so庫的話需要-ldl。

運行./main2后輸出遞增序列,調(diào)用成功。

linux Makefile問題.S.s: $(CPP) $(CFLAGS) $< -o $*.s什么意思

請慢慢看,真要詳細講起來,文字實在太多了,但是由于時間原因,我只能以粗略的文字講,語言有一些邏輯漏洞,請見諒。

首先我會以粗略的文字回答你的其中一個問題,然后后面會給出第二個問題的答案。

問:什么時候會執(zhí)行這些規(guī)則及其相對應(yīng)的命令?

答:當(dāng)你給make命令指定了它要生成的終極目標(biāo)時,它會從要生成的終極目標(biāo)尋址依賴的依賴條件,然后依賴條件一級一級的查找并執(zhí)行相對應(yīng)的命令。即如果當(dāng)有目標(biāo)需要.s、.o這些依賴條件的時候,會取找要生成.s、.o目標(biāo)的依賴條件,這個時候就會執(zhí)行這些規(guī)則:

.S.s:

$(CPP) $(CFLAGS) $ -o $*.s

.S.o:

$(CC) $(CFLAGS) -c $ -o $*.o

.c.o:

$(CC) $(CFLAGS) -c $ -o $*.o

一、

源代碼文件必須經(jīng)過:預(yù)處理(cpp)、編譯(ccl)、匯編(as)、鏈接(ld)。這四個階段最終才得到可執(zhí)行的程序:

makefile里定義了變量CPP=cpp;其中$(CPP)的意思是去定義變量CPP里的值:cpp,用cpp來預(yù)處理源文件。

$(CFLAGS)的意思是取定義變量CDLAGS里面的值,一般是一些自我定義的預(yù)處理命令和編譯命令的參數(shù)。

$的意思是:在規(guī)則的命令中,表示第一個依賴條件

-o是一個預(yù)處理、編譯等執(zhí)行命令需要的參數(shù)

/*

其實這條命令:$(CPP) $(CFLAGS) $ -o $*.s,就是一條預(yù)處理命令,將一個源文件預(yù)處理為.s文件后綴的文件,*為通配符。那源文件在哪里呢。其實這條命令.S.s: 已經(jīng)說了以.S結(jié)尾的文件就是源文件。那這條命令.S.s這么說了呢?請看下面的后綴規(guī)則講解。

*/

二、

老式風(fēng)格的"后綴規(guī)則"

后綴規(guī)則是一個比較老式的定義隱含規(guī)則的方法。后綴規(guī)則會被模式規(guī)則逐步地取代。因為模式規(guī)則更強更清晰。為了和老版本的Makefile兼容,GNU make同樣兼容于這些東西。后綴規(guī)則有兩種方式:"雙后綴"和"單后綴"。

雙后綴規(guī)則定義了一對后綴:目標(biāo)文件的后綴和依賴目標(biāo)(源文件)的后綴。如".c.o"相當(dāng)于"%o : %c"。單后綴規(guī)則只定義一個后綴,也就是源文件的后綴。

后綴規(guī)則中所定義的后綴應(yīng)該是make所認識的,如果一個后綴是make所認識的,那么這個規(guī)則就是單后綴規(guī)則,而如果兩個連在一起的后綴都被make所認識,那就是雙后綴規(guī)則。例如:".c"和".o"都是make所知道。

因而,如果你定義了一個規(guī)則是".c.o"那么其就是雙后綴規(guī)則,意義就是".c" 是源文件的后綴,".o"是目標(biāo)文件的后綴。如下示例:

.c.o:

$(CC) -c $(CFLAGS) $(CPPFLAGS) -o $@ $

其中.c.o:這個命令表示源文件的后綴為.c,目標(biāo)文件的后綴為.o;即也可理解為:生成.o的目標(biāo)文件依賴條件是源文件.c

下面命令是將是所有的.c源文件都編譯成.o的目標(biāo)文件。

注:后綴規(guī)則不允許任何的依賴文件,如果有依賴文件的話,那就不是后綴規(guī)則,那些后綴統(tǒng)統(tǒng)被認為是文件名,

如:

.c.o: foo.h

$(CC) -c $(CFLAGS) $(CPPFLAGS) -o $@ $

這個例子,就是說,文件".c.o"依賴于文件"foo.h",而不是我們想要的這樣:

%.o: %.c foo.h

$(CC) -c $(CFLAGS) $(CPPFLAGS) -o $@ $

因此后綴規(guī)則不允許任何的依賴文件。

linux c語言 編譯.o時,提示:undefined reference to `main'

一般是缺少相應(yīng)的頭文件,新建項目時 選擇console application,不要選MFC的那種項目。

主函數(shù)應(yīng)該寫成int main(),你寫成mian了。

鏈接時缺少相關(guān)的庫文件(.a/.so)

在此,只舉個靜態(tài)庫的例子,假設(shè)源碼如下。

先把test.c編譯成靜態(tài)庫(.a)文件

gcc -c test.c

ar -rc test.a test.o

至此,我們得到了test.a文件。我們開始編譯main.c

gcc -c main.c

這時,則生成了main.o文件,然后我們再通過如下命令進行鏈接希望得到可執(zhí)行程序。

gcc -o main main.o

你會發(fā)現(xiàn),編譯器報錯了:

/tmp/ccCPA13l.o: In function `main':

main.c:(.text+0x7): undefined reference to `test'

collect2: ld returned 1 exit status

其根本原因也是找不到test()函數(shù)的實現(xiàn)文件,由于該test()函數(shù)的實現(xiàn)在test.a這個靜態(tài)庫中的,故在鏈接的時候需要在其后加入test.a這個庫,鏈接命令修改為如下形式即可。

gcc -o main main.o ./test.a ?//注:./ 是給出了test.a的路徑

【擴展】:同樣,為了把問題說清楚,上面我們把代碼的編譯鏈接分開了,如果希望一次性生成可執(zhí)行程序,則可以對main.c和test.a執(zhí)行如下命令。

gcc -o main main.c ./test.a ?//同樣,如果不加test.a也會報錯。

“l(fā)inux”怎么編譯c的源程序的?“gcc”編譯命令是什么?

格式 gcc [option] [sourcefilename]

介紹一些常用的選項:最簡單的是:gcc hello.c

默認的情況下將生成a.out的可執(zhí)行性文件,你只需要在終端上輸入./a.out就可以看到執(zhí)行的結(jié)果.

如果你想指定生成目標(biāo)文件的名字那么你可以加上 -o選項,命令如下:

gcc -o hello hello.c

命令如下:

gcc -c hello hello.c

linux 怎么編譯c的源程序的?gcc,編譯命令是什么?

在Linux下面,如果要編譯一個C語言源程序,我們要使用gcc編譯器。

先將源文件編譯成目標(biāo)文件:gcc - c hello.c

生成hello.o文件,再將目標(biāo)文件編譯成可執(zhí)行文件:gcc -o hello hello.o

如:

int main(int argc,char **argv)

{

printf("Hello Linux\n");

}

擴展資料:

在使用GCC編譯器的時候,我們必須給出一系列必要的調(diào)用參數(shù)和文件名稱。GCC編譯器的調(diào)用參數(shù)大約有100多個,這里只介紹其中最基本、最常用的參數(shù)。具體可參考GCC Manual。

GCC最基本的用法是∶gcc [options] [filenames]

其中options就是編譯器所需要的參數(shù),filenames給出相關(guān)的文件名稱。

參考資料:

百度百科_gcc


分享題目:linux.編譯命令-o Linux編譯
網(wǎng)頁URL:http://weahome.cn/article/doogcop.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部