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就可以了