導航:首頁 > 文件類型 > linux編譯器頭文件配置

linux編譯器頭文件配置

發布時間:2023-03-16 11:09:12

❶ arm-linux-gcc怎麼編譯自己寫的頭文件

linux gcc編譯c文件頭文件
linux gcc編譯c文件頭文件,使用GCC編譯器編譯C語言

凶豬下山
轉載
關注
0點贊·1047人閱讀
GCC編譯C源代碼有四個步驟:預處理—->編譯—->匯編—->鏈接。

可以利用GCC的參數來控制執行的過程,這樣就可以更深入的了解編譯C程序的過程。

下面將通過對一個程序的編譯來演示整個過程。

#include

int main()

{

printf("happy new year!\n");

return 0;

}

1:預處理:編譯器將C程序的頭文件編譯進來,還有宏的替換,可以用gcc的參數-E來參看。

預處理 命令:gcc -E hello.c -o hello.i

作用:將hello.c預處理輸出hello.i

2:編譯:這個階段編譯器主要做詞法分析、語法分析、語義分析等,在檢查無錯誤後後,把代碼翻譯成匯編語言。可用gcc的參數-S來參看。

編譯器(ccl)將文本文件hello.i 翻譯成文本文件hello.s, 它包含一個匯編語言程序。匯編語言程序中的每條語句都以一種標準的文本格式描述了一條低級機器語言指令。

編譯命令:gcc -S hello.i -o hello.s

作用:將預處理輸出文件hello.i匯編成hello.s文件

3:匯編:把編譯階段生成的.s 文件轉換為二進制目標代碼。可用gcc的參數-c來參看。匯編器(as)將hello.s翻譯成機器語言指令,把這些指令打包成可重定位目標程序的格式, 並將結果保存在目標文件hello.o中。hello.o文件是一個二進制文件,它的位元組編碼是機器語言。

匯編 命令:gcc -c hello.s -o hello.o

作用:作用:將匯編輸出文件hello.s編譯輸出hello.o文件

4:鏈接:把obj文件鏈接為可執行的文件:鏈接器(ld)負責.o文件的並入。結果就是hello文件,它是一個課執行的目標文件,可以載入到存儲器後由系統調用。

鏈接命令:gcc hello.o -o hello

一步操作的話是: (-o必須在hello之前 )

$gcc hello.c -o hello

$./hello或者:(會默認生成a.out文件)

$gcc hello.c

$./a.out

❷ 深度linux的arm-linux-gnueabihf-gcc編譯參數如何配

一般來說,交叉編譯工具是用於在一種架構的主機(例如x86)上,編譯另一種主機(例如arm)運行的程序,在這個編譯期間,需要用到的頭文件/庫,往往需要從一個叫目標文件系統(sysroot)的路徑開始查找。

sysroot里包含usr,lib,usr/lib usr/include等文件夾結構和必要的頭文件和庫,你理解為目標機器上的整個文件系統,搬到你這台電腦上,然後作為一個文件夾存在。

交叉編譯原則上不能用主機(host)的頭文件,

交叉編譯一般無法使用主機的庫(so)文件

最後結論:你這個問題,如果你是為了另一套機器(比如arm開發板編譯),那麼需要搞一套目標機的文件系統才能順利編譯。

對了,目標文件系統需要編譯了python和dev頭文件/庫,好多嵌入式設備裁剪的很厲害,都不用python。

❸ Linux下c語言開發怎麼添加頭文件目錄和lib文件目錄

通過編譯抄選項可以設置的
Linux下一般用gcc,就以gcc的命令為例
要增加頭文件目錄inc,那麼編譯選項加上-Iinc
如果有多個 就寫多個
比如 -Iinc -I/home/name/include
類似的 增加lib路徑用-L
比如 -Llib -Lmy_lib
就是增加當前目錄下 lib和my_lib兩個文件夾作為庫文件目錄。

❹ 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中指定的路徑。

(4)linux編譯器頭文件配置擴展閱讀:

應用程序代碼編譯過程:

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

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

example:

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

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

❺ 關於在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"

在某些情況下,由於代碼組織等的問題,還是會出現編譯問題,這個就是代碼組織技巧的問題了,要根據具體代碼具體判斷了。
另外,准確的說頭文件只是在編譯的第一步,預處理的時候使用了,真正被「編」的應該是源文件,這個是編譯原理方面的問題了。

❻ 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」。

❼ linux設備驅動程序該添加哪些頭文件

#include <linux/spinlock_types.h>

#include <linux/blkdev.h>

#include <linux/mole.h>

#include <linux/kernel.h>

#include <linux/fs.h>

#include <linux/genhd.h>

#include <linux/init.h>

以上這些基本上都得用到的頭文件 一般編譯器會報錯,根據報錯信息,再添專加相應的屬頭文件即可。

閱讀全文

與linux編譯器頭文件配置相關的資料

熱點內容
桌面文件拖動後為啥自動歸位 瀏覽:471
從蘋果園到十院 瀏覽:901
pscs5加深工具 瀏覽:968
三星手機微信文件夾在哪 瀏覽:493
自己做app可以嗎 瀏覽:985
課程網站評價怎麼寫 瀏覽:869
小米手機上手機卡出來密碼 瀏覽:693
iphone手機國行和港行的區別 瀏覽:913
javagetservername 瀏覽:988
三劍豪升級 瀏覽:263
華為nova8如何防止app偷個人隱私 瀏覽:764
壓縮文件夾解壓後是空的 瀏覽:912
合成ts文件後順序亂了 瀏覽:952
三星s4文件傳電腦 瀏覽:161
Lgplc怎麼編程 瀏覽:471
主要的水稻資料庫有哪些 瀏覽:293
iphone霸氣壁紙 瀏覽:32
系統文件備份在哪個文件夾 瀏覽:53
win81升級win10卡住 瀏覽:766
jsp調用微信公眾號支付 瀏覽:767

友情鏈接