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是開源的,不要錢。 主要好處 編輯器不會...