關於在linux下用gcc編譯標頭檔案

時間 2021-05-04 21:24:25

1樓:匿名使用者

首先,確定你的標頭檔案都用巨集隔開了,防止了重複定義。例如,在file.h 中的開頭就是

#ifndef __file__head___

#define __file__head___

//標頭檔案中的內容

#endif //__file__head___

之後,file.h中用到了list.h ,所以file.h中#include "list.h"//假設標頭檔案都在同一目錄下

list.h中用到了preapre.h 所以list.h中#include "prepare.h"

prepare.h中用到了node.h 所以prepare.h中#include "node.h"

在某些情況下,由於**組織等的問題,還是會出現編譯問題,這個就是**組織技巧的問題了,要根據具體**具體判斷了。

另外,準確的說標頭檔案只是在編譯的第一步,預處理的時候使用了,真正被「編」的應該是原始檔,這個是編譯原理方面的問題了。

2樓:

標頭檔案都是原始碼存放,include過這些標頭檔案的**,在編譯時gcc會自動加進,但是要保證路徑和檔案都存在。

關於在linux下用gcc編譯標頭檔案的問題。

3樓:匿名使用者

我用一個例子來告訴你怎麼樣在 c++ 裡使用c的標頭檔案/函式。

比方說我有一個c的標頭檔案叫 c.h, c的原始碼檔案叫 c.c,內容分別是

c.h:

#ifndef _asdfd_included_

#define _asdfd_included_

#include

extern int test(int a);

#endif

c.c:

#include "c.h"

int test(int a)

現在我想在c++中使用c.c中提供的函式test(),我的c++檔名字叫 a.cpp,那麼裡面跟c有關的部分就要用 extern "c" {} 大括號括起來,看看我的

a.cpp:

#include

using namespace std;

extern "c"

int main()

看到了吧,#include "c.h" 被 extern "c" {}括起來了。

然後是如何編譯,先把c檔案編出目標檔案(.o)來

gcc -c c.c

你會看到生成了 c.o,其實,有目標檔案就夠了,如果你一定要做成(靜態/動態)庫檔案,也是可以的,不過我這裡就不深入了,做成庫和直接用目標檔案對解決你的問題沒有任何區別。

然後再編譯c++檔案,也就是我的 a.cpp

g++ -o hello a.cpp c.o

看到了吧,我在編譯 a.cpp 的時候把c生成的 c.o也加上了。 然後生成 可執行的 hello, 執行

./hello

就可以看到

a = 12

b = 144

關於建立靜態庫,假定你有3個c檔案, a.c, b.c, c.c 提供了你c++要用到的介面,那麼可以把這三個c檔案編譯出來的目標檔案放到一個庫檔案裡供c++使用,方法為

先編譯出目標檔案

gcc -c a.c b.c c.c

這時候你應該看到有 a.o b.o c.o了

然後建立庫檔案

ar cr libtest.a a.o b.o c.o

這三個目標檔案就放入 libtest.a 這個靜態庫中了,然後編譯c++程式 (你的c++程式應該已經按照我前面說的用 extern "c" 把c的介面都括起來了),假定你的 libtest.a 放在 /home/aaa/lib下

g++ -o my.exe my.cpp -l/home/aaa/lib -ltest

就會生成可執行檔案 my.exe了。

4樓:匿名使用者

c**裡包含標頭檔案,編譯用gcc編譯c檔案,多個c檔案自己寫個makefile,-i可以指定標頭檔案目錄

比如gcc -i/my/include/file *********xx ,把標頭檔案放一個目錄就行了

5樓:趣園藝

在linux下面,如果要編譯一個c語言標頭檔案,,要使用gnu的gcc編譯器,以一個例項來說明如何使用gcc編譯器:

假設有下面一個非常簡單的源程式(hello.c):

int main(int argc,char **argv)要編譯這個程式,只要在命令列下執行:

gcc -o hello hello.c

gcc 編譯器就會生成一個hello的可執行檔案;執行./hello,就可以看到程式編譯後的輸出結果「hello linux」。

linux系統中用gcc編譯並且執行c程式

6樓:匿名使用者

【希望對你有幫助】

建議你看看程式設計的一些基礎知識

- 經典hello word 程式

#include

int mian()

- 編譯

-進入終端

-進入源內檔案所在的目錄

$ gcc hello.c -o hello- 執行容

$ ./hello

7樓:淺淺邂逅

1、gcc t 檔名

抄.c -o 檔名

2、直襲

接執行 o 後面的檔名即可bai

gcc(選項

du)(引數)

選項:

-o:指定生zhi成的輸出檔案;

-e:僅執行dao編譯預處理;

-s:將c**轉換為彙編**;

-wall:顯示警告資訊;

-c:僅執行編譯操作,不進行連線操作。

示例:

->gcc test.c -o test

->test

在linux作業系統下如何聯網,linux下如何配置網路?

不同發行版本的linux使用圖型化的工具聯網的方式也是不同的。建議樓主使用命令列配置網路。ifconfig檢視網路所有網絡卡的資訊。後面接上一些引數來配置網路。ifconfig eth0 192.168.0.1 netmask 255.255.255.0 意思為設定名為eth0的網絡卡的ip地址為1...

tomcat怎麼在linux下執行

你把整個資料夾的許可權改成777 tomcat bin 執行命令 shutdown.sh 關閉 tomcat bin 執行命令 startup.sh 開啟 怎麼啟動linux下的tomcat 進入tomcat bin 下 startup.sh 執行 startup.sh咯 linux下啟動tomca...

在linux下編寫php有什麼好處

應該不是 編寫 而是 部署 或者 執行 linux 是 php 的 老家 可以自己根據需要編譯安裝 php php 在 linux 下的效能表現要好於 windows。 windows以前對php支援不好 伺服器執行要穩定安全,所以常用linux了。linux是開源的,不要錢。 主要好處 編輯器不會...