3種可能
1. 也是最大可能。
你沒參考師兄的Makefile,在Linux下編譯通常都通過Makefile進行的
2. 如果你Makefile確認無誤,可能是內核版本不同,比如2.6.14的很多頭文件2.6.9沒有。
3. Linux編程有用戶態和內核態兩種區別,頭文件一樣,確定tcl.h是你特權級別范圍內的引用。
② 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
③ arm-linux-gcc 編譯hello.c提示:hello.c:1:21:stdio.h沒有文件或目錄
這個是
環境變數
的問題,但不是PATH的問題,說
頭文件
找不到,應該是-I的問題,你試著自己用
交叉編譯
的命令編譯,大概應該是這樣的:
arm-linux-gcc
-o
執行文件名(只要合法,隨便取)
hello.c
-I頭文件的路徑(一般是在/usr/路徑下)
如果再不行就不知道怎麼弄了
④ linux下有沒有io.h的頭文件
這個你應該有源代碼才行
#include <linux/***.h> 是在linux-2.6.29/include/linux下面尋找源文件。
#include <linux/io.h> //包含了ioremap、iowrite等內核訪問IO內存等函數的定義。
⑤ ubuntu下怎麼編譯linux內核
linux下編譯軟體通擾襲用三步曲:
./configure
make
sudo make install
但是編譯內核要復雜的多,特別是定製內核,需要根據特定的硬體信息,配置.config文件。可以說.config文件是編譯linux內核是否優異的關鍵。凱裂也可以到github或者碼元上尋找有沒有類似的型號,找到盯李閉同一型號的電腦可以直接到內核源碼目錄下,然後依次執行shell命令:make
sudo make install
sudo make moles_install
sudo update-grub2 或者sudo update-grub就可以了