歡迎您光臨本站 註冊首頁

原來有兩套C庫

←手機掃碼閱讀     火星人 @ 2014-03-09 , reply:0
在linux系統中有內核空間 和 用戶空間
所以就有兩套C庫,一套對應內核程序,一套對應用戶空間的應用程序
內核的頭文件一般放在/usr/src/linux2.4/include/
用戶空間的頭文件一般放在/usr/include/
兩種頭文件共存,所以有時在用戶空間編譯的內核程序由於使用的是內核空間的C庫
到內核運行時就會有些問題
比如說編譯模塊程序,由於兩個庫的版本不一致
編譯出來的內核模塊載入內核后,會有version不匹配的問題
gcc編譯時會自動從/usr/include/下搜索相關頭文件,也就是用戶的應用程序
但是如果在用戶空間編譯內核程序的話(LKM 模塊),通常要指定
gcc -I/usr/src/linux2.4/include/等參數來使
其使用內核的C庫
還有就是頭文件雖然多,但是可以通過find命令查找,比如在/usr目錄下找unistd.h這個頭文件
可以這樣
find /usr -name unistd.h -print
有大量頭文件的名字是相同的但是內容不同,是鏈接或者引用


[火星人 ] 原來有兩套C庫已經有191次圍觀

http://coctec.com/docs/linux/show-post-55112.html