當前位置:首頁 » 編程軟體 » linux編譯頭文件

linux編譯頭文件

發布時間: 2022-04-26 04:36:27

1. 關於在linux下用gcc編譯頭文件

首先,確定你的頭文件都用宏隔開了,防止了重復定義。例如,在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. linux下,C語言頭文件在哪

一、 C標准庫頭文件,以及Linux的標准庫文件的對應頭文件,默認放在/usr/include下。 如圖:

標識出了最常用的幾個頭文件。

二、 自定義頭文件,或者集成頭文件,需要在編譯的時候指定。可以在命令行中指定,也可以在makefile中指定。

指定自定義頭文件路徑方式為:

-IPATH1 -IPATH2...

如當前目錄下的inc文件夾,指定為頭文件, 那麼在編譯a.c時,可以命令寫作:

gcc a.c -I./inc -o a.out

3. linux下 頭文件,該怎麼處理

在Linux下面,如果要編譯一個C語言頭文件,,要使用GNU的gcc編譯器,以一個實例來說明如何使用gcc編譯器:
假設有下面一個非常簡單的源程序(hello.c):

1
2
3
4

int main(int argc,char **argv)
{
printf("Hello Linux\n");
}

要編譯這個程序,只要在命令行下執行:

1

gcc -o hello hello.c

gcc 編譯器就會生成一個hello的可執行文件;執行./hello,就可以看到程序編譯後的輸出結果「Hello Linux」。

4. Objective c中,linux下gcc 編譯頭文件的命令是什麼

預處理對頭文件、宏定義等進行處理,生成
.i
的默認文件,命令:gcc
-E
test.c>test.i

5. linux頭文件存在編譯時卻找不到

1、通過find命令查找編譯時找不到的頭文件。
find / -name x.h (x.h是缺少的頭文件,根據實際情況操作)
2、如果能找到, 就在/usr/include目錄下建立一個x.h的軟連接
ln -s /usr/include /usr/x/y/z/x.h (假設缺少的頭文件路徑 /usr/x/y/z/,根據實際情況操作)
3、如果不能找到,就說明當前系統缺少此頭文件的庫,自行網路搜索相應的庫安裝即可。

6. linux頭文件解釋:誰能解釋,謝謝了。答得好我狂加分。

1. 這是內核源碼的頭文件,一般人不敢說都熟悉滴。
2. 以linux開頭的的頭文件,如<linux/file.h>對應源碼目錄樹的include/linux/file.h
3. 以asm開頭的頭文件,如<asm/file.h>對應源碼目錄樹的arch/***/include/asm/file.h, 其中***對應某個具體的平台。
4. 仔細研讀並讀懂過linux源碼1/10的人,絕對是高手中的高手,不會出現在這里回答問題。
5. 我是菜鳥,源碼只看了一點。
6. 勸樓主別浮躁,想學內核驅動,要能靜的下來,認真看書。

7. linux下編寫c++,include的那些頭文件在什麼地方

C/C++程序在linux下被編譯和連接時,GCC/G++會查找系統默認的include和link的路徑,以及自己在編譯命令中指定的路徑。

1、#include <stdio.h>,直接到系統指定目錄去查找頭文件。

系統默認路徑為:/usr/include,/usr/local/include,/usr/lib/gcc-lib/i386-Linux/2.95.2/include(gcc庫文件的路徑,各個系統不一致)

2、#include "stidio.h",會先到當前目錄查找頭文件,如果沒找到在到系統指定目錄查找。

3、gcc編譯時查找頭文件,按照以下路徑順序查找:

gcc編譯時,可以設置-I選項以指定頭文件的搜索路徑,如果指定多個路徑,則按照順序依次查找。比如,gcc -I /usr/local/include/node a.c

gcc會查找環境變數C_INCLUDE_PATH,CPLUS_INCLUDE_PATH中指定的路徑。

(7)linux編譯頭文件擴展閱讀:

應用程序代碼編譯過程:

編譯器根據頭文件提供的庫函數介面形式,來編譯代碼,然後生成目標文件;然後,再使用鏈接器將這個目標文件與系統庫鏈接;最終生成應用程序。代碼包含了自己寫的內容,還有系統提供好的現成的庫函數,整個結合起來才形成一個完整的程序。

庫函數的頭文件,在編譯的時候被使用,而庫函數的代碼段(庫文件),在鏈接的時候被使用。

example:

應用程序代碼在使用一個系統調用的時候,例如printf()函數,需要指定包含的頭文件stdio.h;另外,在鏈接的時候對應的鏈接libc.a(筆者電腦文件所在目錄:/usr/lib/i386-linux-gnu/libc.a)。

總結一下,編寫應用程序,需要使用linux系統提供的庫函數。具體實現起來,需要頭文件和庫文件。頭文件是需要我們編寫應用程序的時候,在源文件開頭添加的;而庫文件則需要配置編譯環境進行指定搜索目錄。

8. 關於在linux下用gcc編譯頭文件的問題。

我用一個例子來告訴你怎麼樣在 C++ 里使用C的頭文件/函數。

比方說我有一個C的頭文件叫 c.h, C的源碼文件叫 c.c,內容分別是

c.h:
#ifndef _ASDFD_INCLUDED_
#define _ASDFD_INCLUDED_

#include <stdio.h>

extern int test(int a);

#endif

c.c:
#include "c.h"

int test(int a)
{
printf("A = %d\n", a);
return a*a;
}

現在我想在c++中使用c.c中提供的函數test(),我的c++文件名字叫 a.cpp,那麼裡面跟C有關的部分就要用 extern "C" {} 大括弧括起來,看看我的
a.cpp:
#include <iostream>
using namespace std;

extern "C"
{
#include "c.h"
}

int main()
{
int b = 12;

b = test(b);

cout<<"b = "<<b<<endl;
return 0;
}

看到了吧,#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了。

9. linux 模塊編譯顯示沒有頭文件

編寫linux內核模塊,需要自己編寫Makefile,同時在Makefile裡面制定自己的內核路徑,這樣才能處理提示沒有頭文件錯誤。

編譯命令:

exportPATH=$PATH:#編譯工具鏈路徑
exportARCH=#CPU類別(例如arm)
exportCROSS_COMPILE=arm-none-linux-gnueabi-#(編譯工具xx-gcc的前綴xx)
make-C#編譯好的內核模塊運行的Linuxkernel內核源代碼目錄樹M=$`pwd`moles

Linux模塊編譯例子:

exportPATH=$PATH:/usr/local/arm/4.2.2-eabi/usr/bin
#forSamsungs5pc100
exportARCH=arm
exportCROSS_COMPILE=arm-none-linux-gnueabi-
make-C/home/wenxy/src/s5pc100/linux-2.6.35.5M=$`pwd`moles

10. 如何在linux shell中同時編譯一個源文件和一個頭文件,使其生成一個可執行文件

直接用gcc編譯.c文件,.c文件中 #include "頭文件" 即可。
gcc test.c -o output -Wall
其中,output為輸出的可執行文件,-Wall開關用於顯示所有警告信息。

熱點內容
scratch少兒編程課程 發布:2025-04-16 17:11:44 瀏覽:624
榮耀x10從哪裡設置密碼 發布:2025-04-16 17:11:43 瀏覽:353
java從入門到精通視頻 發布:2025-04-16 17:11:43 瀏覽:68
php微信介面教程 發布:2025-04-16 17:07:30 瀏覽:293
android實現陰影 發布:2025-04-16 16:50:08 瀏覽:786
粉筆直播課緩存 發布:2025-04-16 16:31:21 瀏覽:336
機頂盒都有什麼配置 發布:2025-04-16 16:24:37 瀏覽:201
編寫手游反編譯都需要學習什麼 發布:2025-04-16 16:19:36 瀏覽:795
proteus編譯文件位置 發布:2025-04-16 16:18:44 瀏覽:353
土壓縮的本質 發布:2025-04-16 16:13:21 瀏覽:581