1. linux下編寫c++,include的那些頭文件在什麼地方
這個還主要看你將的GCC在哪裡,一般編程用的C++頭文件,都在gcc目錄下的include文件夾下。
2. 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中指定的路徑。
(2)linux網路編程頭文件擴展閱讀:
應用程序代碼編譯過程:
編譯器根據頭文件提供的庫函數介面形式,來編譯代碼,然後生成目標文件;然後,再使用鏈接器將這個目標文件與系統庫鏈接;最終生成應用程序。代碼包含了自己寫的內容,還有系統提供好的現成的庫函數,整個結合起來才形成一個完整的程序。
庫函數的頭文件,在編譯的時候被使用,而庫函數的代碼段(庫文件),在鏈接的時候被使用。
example:
應用程序代碼在使用一個系統調用的時候,例如printf()函數,需要指定包含的頭文件stdio.h;另外,在鏈接的時候對應的鏈接libc.a(筆者電腦文件所在目錄:/usr/lib/i386-linux-gnu/libc.a)。
總結一下,編寫應用程序,需要使用linux系統提供的庫函數。具體實現起來,需要頭文件和庫文件。頭文件是需要我們編寫應用程序的時候,在源文件開頭添加的;而庫文件則需要配置編譯環境進行指定搜索目錄。
3. windows與linux 頭文件對照
1.linux和windows平台下,能夠對應的頭文件就是符合C11標準的頭文件。其他的頭文件不僅和平台有關系,還和平台下的編譯環境有關,很難畫上等號的。
2.C語言符合標準的頭文件
#include <assert.h> //設定插入點
#include <ctype.h> //字元處理
#include <errno.h> //定義錯誤碼
#include <float.h> //浮點數處理
#include <fstream.h> //文件輸入/輸出
#include <iomanip.h> //參數化輸入/輸出
#include <iostream.h> //數據流輸入/輸出
#include <limits.h> //定義各種數據類型最值常量
#include <locale.h> //定義本地化函數
#include <math.h> //定義數學函數
#include <stdio.h> //定義輸入/輸出函數
#include <stdlib.h> //定義雜項函數及內存分配函數
#include <string.h> //字元串處理
#include <strstrea.h> //基於數組的輸入/輸出
#include <time.h> //定義關於時間的函數
#include <wchar.h> //寬字元處理及輸入/輸出
#include <wctype.h> //寬字元分類
3.linux常用頭文件如下:
POSIX標準定義的頭文件
<dirent.h> 目錄項
<fcntl.h> 文件控制
<fnmatch.h> 文件名匹配類型
<glob.h> 路徑名模式匹配類型
<grp.h> 組文件
<netdb.h> 網路資料庫操作
<pwd.h> 口令文件
<regex.h> 正則表達式
<tar.h> TAR歸檔值
<termios.h> 終端I/O
<unistd.h> 符號常量
<utime.h> 文件時間
<wordexp.h> 字元擴展類型
-------------------------
<arpa/inet.h> INTERNET定義
<net/if.h> 套接字本地介面
<netinet/in.h> INTERNET地址族
<netinet/tcp.h> 傳輸控制協議定義
-------------------------
<sys/mman.h> 內存管理聲明
<sys/select.h> Select函數
<sys/socket.h> 套接字借口
<sys/stat.h> 文件狀態
<sys/times.h> 進程時間
<sys/types.h> 基本系統數據類型
<sys/un.h> UNIX域套接字定義
<sys/utsname.h> 系統名
<sys/wait.h> 進程式控制制
------------------------------
POSIX定義的XSI擴展頭文件
<cpio.h> cpio歸檔值
<dlfcn.h> 動態鏈接
<fmtmsg.h> 消息顯示結構
<ftw.h> 文件樹漫遊
<iconv.h> 代碼集轉換使用程序
<langinfo.h> 語言信息常量
<libgen.h> 模式匹配函數定義
<monetary.h> 貨幣類型
<ndbm.h> 資料庫操作
<nl_types.h> 消息類別
<poll.h> 輪詢函數
<search.h> 搜索表
<strings.h> 字元串操作
<syslog.h> 系統出錯日誌記錄
<ucontext.h> 用戶上下文
<ulimit.h> 用戶限制
<utmpx.h> 用戶帳戶資料庫
-----------------------------
<sys/ipc.h> IPC(命名管道)
<sys/msg.h> 消息隊列
<sys/resource.h>資源操作
<sys/sem.h> 信號量
<sys/shm.h> 共享存儲
<sys/statvfs.h> 文件系統信息
<sys/time.h> 時間類型
<sys/timeb.h> 附加的日期和時間定義
<sys/uio.h> 矢量I/O操作
------------------------------
POSIX定義的可選頭文件
<aio.h> 非同步I/O
<mqueue.h> 消息隊列
<pthread.h> 線程
<sched.h> 執行調度
<semaphore.h> 信號量
<spawn.h> 實時spawn介面
<stropts.h> XSI STREAMS介面
<trace.h> 事件跟蹤
4. Linux下C編程頭文件
你在mymin.c文件中調用printf函數
前提在你mymin.c文件頭包含了其他的文件而這個文件里有包含stdio.h文件
那你在mymin.c文件里可以不包含stdio.h文件
看了下你文件的編寫
還是不合規范
幫你改下:
/*ex_min.h*/
#ifndef
_ex_min_h
#define
_ex_min_h
#include<stdio.h>
int
min(int
n1,int
n2);
#endif
/*ex_min.c*/
#include
"ex_min.h"
int
min(int
n1,int
n2)
{
printf("調用min\n");
if(n1>n2)
return
n1;
else
return
n2;
}
/*mymin.c*/
#include
"ex_min.h"
int
main()
{
int
n1,n2,n3;
scanf("%d,%d",&n1,&n2);
n3=min(n1,n2);
printf("%d",n3);
}
5. linux查看包含的頭文件源文件
linux下的內核頭文件放在/usr/include/linux/和/usr/include/sys/linux目錄樹:scripts目錄該目錄中不包含任何核心代碼,該目錄下存放了用來配置內核的腳本和應用程序源碼。lib目錄該目錄主要包含兩部分內容:gnuzip解壓縮演算法,用於在系統啟動過程中將壓縮的內核鏡像解壓縮;剩餘的文件用於實現一個C庫的子集,主要包括字元串和內存操作等相關函數。mm目錄該目錄包含了體系結構無關的內存管理代碼,包括通用的分頁模型的框架、夥伴演算法的實現和對象緩沖器slab的實現代碼。include目錄這個目錄包含了Linux源代碼目錄樹中絕大部分頭文件,每個體系架構都在該目錄下對應一個子目錄,該子目錄中包含了給定體系結構所必需的宏定義和內聯函數。init目錄該目錄中存放的是系統核心初始化代碼,內核初始化入口函數start_kernel就是在該目錄中的文件main.c內實現的。kernel目錄該目錄中存放的是Linux內核的最核心的代碼,用於實現系統的核心模塊,這些模塊包括:進程管理、進程調度器、中斷處理、系統時鍾管理、同步機制等。arch目錄該目錄中的每個子目錄中都與某種體系結構相對應,用於存放體系結構相關代碼,向平台無關的系統核心模塊提供所需的功能介面。每個體系結構對應的子目錄下通常至少包含以下幾個子目錄:kernel子目錄、lib子目錄、mm子目錄、boot子目錄。系統次核心組件包括:block目錄:用於實現塊設備的基本框架和塊設備的I/O調度演算法。usr目錄:該目錄中的代碼為內核尚未完全啟動時執行用戶空間代碼提供了支持ipc目錄:該目錄中的文件用於實現SystemV的進程間通信模塊。driver目錄:用於存放各類設備的驅動程序。sound目錄:存放了聲音系統架構,如OpenSoundSystem(OSS)、(ALSA)的相關代碼和具體音效卡的設備驅動程序。security目錄:存放了Security-EnhancedLinux(SELinux)安全框架的實現代碼crypto目錄:該目錄中存放了相關的加密演算法的代碼。Documentation目錄:存放了與內核相關的文檔。net和fs目錄:包含linux內核支持的眾多網路協議和文件系統。
6. linux下編寫c++,include的那些頭文件在什麼地方
C/C++程序在linux下被編譯和連接時,GCC/G++會查找系統默認的include和link的路徑,以及自己在編譯命令中指定的路徑。自己指定的路徑就不說了,這里說明一下系統自動搜索的路徑。
【1】include頭文件路徑
除了默認的/usr/include,
/usr/local/include等include路徑外,還可以通過設置環境變數來添加系統include的路徑:
#
C
export
C_INCLUDE_PATH=XXXX:$C_INCLUDE_PATH
#
CPP
export
CPLUS_INCLUDE_PATH=XXX:$CPLUS_INCLUDE_PATH
以上修改可以直接命令行輸入(一次性),可以在/etc/profile中完成(對所有用戶生效),也可以在用戶home目錄下的.bashrc或.bash_profile中添加(針對某個用戶生效),修改完後重新登錄即生效。
【2】link鏈接庫文件路徑
鏈接庫文件在連接(靜態庫和共享庫)和運行(僅限於使用共享庫的程序)時被使用,其搜索路徑是在系統中進行設置的(也可以在編譯命令中通過
-l
-L
來指定,這里講的是使用系統默認搜索路徑)。
一般
Linux
系統把
/lib
/usr/lib
/usr/local/lib
作為默認的庫搜索路徑,所以使用這幾個目錄中的鏈接庫文件可直接被搜索到(不需要專門指定鏈接庫路徑)。對於默認搜索路徑之外的庫,則需要將其所在路徑添加到gcc/g++的搜索路徑之中。
鏈接庫文件的搜索路徑指定有兩種方式:1)修改/etc/so.ld.conf
2)修改環境變數,在其中添加自己的路徑
1)在環境變數中添加
動態鏈接庫搜索路徑:
export
LD_LIBRARY_PATH=XXX:$LD_LIBRARY_PATH
靜態鏈接庫搜索路徑:
export
LIBRARY_PATH=XXX:$LIBRARY_PATH
以上修改可以直接命令行輸入(一次性),可以在/etc/profile中完成(對所有用戶生效),也可以在用戶home目錄下的.bashrc或.bash_profile中添加(針對某個用戶生效),修改完後重新登錄即生效。
2)在/etc/ld.so.conf
中添加指定的鏈接庫搜索路徑(需要root許可權),然後運行
/sbin/ldconfig,以達到刷新
/etc/ld.so.cache的效果。
以上兩種方式均可以達到指定鏈接庫搜索路徑的效果。
7. linux C語言的頭文件對應Windows下的頭文件是哪些
linux和windows平台下,能夠對應的頭文件就是符合C11標準的頭文件。其他的頭文件不僅和平台有關系,還和平台下的編譯環境有關,很難畫上等號的。
C語言符合標準的頭文件.
#include <assert.h> //設定插入點
#include <ctype.h> //字元處理
#include <errno.h> //定義錯誤碼
#include <float.h> //浮點數處理
#include <fstream.h> //文件輸入/輸出
#include <iomanip.h> //參數化輸入/輸出
#include <iostream.h> //數據流輸入/輸出
#include <limits.h> //定義各種數據類型最值常量
#include <locale.h> //定義本地化函數
#include <math.h> //定義數學函數
#include <stdio.h> //定義輸入/輸出函數
#include <stdlib.h> //定義雜項函數及內存分配函數
#include <string.h> //字元串處理
#include <strstrea.h> //基於數組的輸入/輸出
#include <time.h> //定義關於時間的函數
#include <wchar.h> //寬字元處理及輸入/輸出
#include <wctype.h> //寬字元分類
linux常用頭文件如下:
POSIX標準定義的頭文件
<dirent.h> 目錄項
<fcntl.h> 文件控制
<fnmatch.h> 文件名匹配類型
<glob.h> 路徑名模式匹配類型
<grp.h> 組文件
<netdb.h> 網路資料庫操作
<pwd.h> 口令文件
<regex.h> 正則表達式
<tar.h> TAR歸檔值
<termios.h> 終端I/O
<unistd.h> 符號常量
<utime.h> 文件時間
<wordexp.h> 字元擴展類型
-------------------------
<arpa/inet.h> INTERNET定義
<net/if.h> 套接字本地介面
<netinet/in.h> INTERNET地址族
<netinet/tcp.h> 傳輸控制協議定義
-------------------------
<sys/mman.h> 內存管理聲明
<sys/select.h> Select函數
<sys/socket.h> 套接字借口
<sys/stat.h> 文件狀態
<sys/times.h> 進程時間
<sys/types.h> 基本系統數據類型
<sys/un.h> UNIX域套接字定義
<sys/utsname.h> 系統名
<sys/wait.h> 進程式控制制
------------------------------
POSIX定義的XSI擴展頭文件
<cpio.h> cpio歸檔值
<dlfcn.h> 動態鏈接
<fmtmsg.h> 消息顯示結構
<ftw.h> 文件樹漫遊
<iconv.h> 代碼集轉換使用程序
<langinfo.h> 語言信息常量
<libgen.h> 模式匹配函數定義
<monetary.h> 貨幣類型
<ndbm.h> 資料庫操作
<nl_types.h> 消息類別
<poll.h> 輪詢函數
<search.h> 搜索表
<strings.h> 字元串操作
<syslog.h> 系統出錯日誌記錄
<ucontext.h> 用戶上下文
<ulimit.h> 用戶限制
<utmpx.h> 用戶帳戶資料庫
-----------------------------
<sys/ipc.h> IPC(命名管道)
<sys/msg.h> 消息隊列
<sys/resource.h>資源操作
<sys/sem.h> 信號量
<sys/shm.h> 共享存儲
<sys/statvfs.h> 文件系統信息
<sys/time.h> 時間類型
<sys/timeb.h> 附加的日期和時間定義
<sys/uio.h> 矢量I/O操作
------------------------------
POSIX定義的可選頭文件
<aio.h> 非同步I/O
<mqueue.h> 消息隊列
<pthread.h> 線程
<sched.h> 執行調度
<semaphore.h> 信號量
<spawn.h> 實時spawn介面
<stropts.h> XSI STREAMS介面
<trace.h> 事件跟蹤
8. linux下,C語言頭文件在哪
一、 C標准庫頭文件,以及Linux的標准庫文件的對應頭文件,默認放在/usr/include下。 如圖:
標識出回了最常用的幾答個頭文件。
二、 自定義頭文件,或者集成頭文件,需要在編譯的時候指定。可以在命令行中指定,也可以在makefile中指定。
指定自定義頭文件路徑方式為:
-IPATH1 -IPATH2...
如當前目錄下的inc文件夾,指定為頭文件, 那麼在編譯a.c時,可以命令寫作:
gcc a.c -I./inc -o a.out
9. Linux編程中帶有<linux/mole.h>頭文件該怎麼寫Makefile
你應該用的gcc編譯器吧?
考慮一下編譯選項:
-l -L
你要寫makefile,一樣考慮上面的兩個選項。
我看你使用的那些庫不是你自己寫的,那隻能說明編譯的時候,要制定頭文件與庫文件的位置。