linux编译头文件
首先,确定你的头文件都用宏隔开了,防止了重复定义。例如,在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"
在某些情况下,由于代码组织等的问题,还是会出现编译问题,这个就是代码组织技巧的问题了,要根据具体代码具体判断了。
另外,准确的说头文件只是在编译的第一步,预处理的时候使用了,真正被“编”的应该是源文件,这个是编译原理方面的问题了。
2. linux下,C语言头文件在哪
一、 C标准库头文件,以及Linux的标准库文件的对应头文件,默认放在/usr/include下。 如图:
标识出了最常用的几个头文件。
二、 自定义头文件,或者集成头文件,需要在编译的时候指定。可以在命令行中指定,也可以在makefile中指定。
指定自定义头文件路径方式为:
-IPATH1 -IPATH2...
如当前目录下的inc文件夹,指定为头文件, 那么在编译a.c时,可以命令写作:
gcc a.c -I./inc -o a.out
3. 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”。
4. Objective c中,linux下gcc 编译头文件的命令是什么
预处理对头文件、宏定义等进行处理,生成
.i
的默认文件,命令:gcc
-E
test.c>test.i
5. linux头文件存在编译时却找不到
1、通过find命令查找编译时找不到的头文件。
find / -name x.h (x.h是缺少的头文件,根据实际情况操作)
2、如果能找到, 就在/usr/include目录下建立一个x.h的软连接
ln -s /usr/include /usr/x/y/z/x.h (假设缺少的头文件路径 /usr/x/y/z/,根据实际情况操作)
3、如果不能找到,就说明当前系统缺少此头文件的库,自行网络搜索相应的库安装即可。
6. linux头文件解释:谁能解释,谢谢了。答得好我狂加分。
1. 这是内核源码的头文件,一般人不敢说都熟悉滴。
2. 以linux开头的的头文件,如<linux/file.h>对应源码目录树的include/linux/file.h
3. 以asm开头的头文件,如<asm/file.h>对应源码目录树的arch/***/include/asm/file.h, 其中***对应某个具体的平台。
4. 仔细研读并读懂过linux源码1/10的人,绝对是高手中的高手,不会出现在这里回答问题。
5. 我是菜鸟,源码只看了一点。
6. 劝楼主别浮躁,想学内核驱动,要能静的下来,认真看书。
7. 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中指定的路径。
(7)linux编译头文件扩展阅读:
应用程序代码编译过程:
编译器根据头文件提供的库函数接口形式,来编译代码,然后生成目标文件;然后,再使用链接器将这个目标文件与系统库链接;最终生成应用程序。代码包含了自己写的内容,还有系统提供好的现成的库函数,整个结合起来才形成一个完整的程序。
库函数的头文件,在编译的时候被使用,而库函数的代码段(库文件),在链接的时候被使用。
example:
应用程序代码在使用一个系统调用的时候,例如printf()函数,需要指定包含的头文件stdio.h;另外,在链接的时候对应的链接libc.a(笔者电脑文件所在目录:/usr/lib/i386-linux-gnu/libc.a)。
总结一下,编写应用程序,需要使用linux系统提供的库函数。具体实现起来,需要头文件和库文件。头文件是需要我们编写应用程序的时候,在源文件开头添加的;而库文件则需要配置编译环境进行指定搜索目录。
8. 关于在linux下用gcc编译头文件的问题。
我用一个例子来告诉你怎么样在 C++ 里使用C的头文件/函数。
比方说我有一个C的头文件叫 c.h, C的源码文件叫 c.c,内容分别是
c.h:
#ifndef _ASDFD_INCLUDED_
#define _ASDFD_INCLUDED_
#include <stdio.h>
extern int test(int a);
#endif
c.c:
#include "c.h"
int test(int a)
{
printf("A = %d\n", a);
return a*a;
}
现在我想在c++中使用c.c中提供的函数test(),我的c++文件名字叫 a.cpp,那么里面跟C有关的部分就要用 extern "C" {} 大括号括起来,看看我的
a.cpp:
#include <iostream>
using namespace std;
extern "C"
{
#include "c.h"
}
int main()
{
int b = 12;
b = test(b);
cout<<"b = "<<b<<endl;
return 0;
}
看到了吧,#include "c.h" 被 extern "C" {}括起来了。
然后是如何编译,先把C文件编出目标文件(.o)来
gcc -c c.c
你会看到生成了 c.o,其实,有目标文件就够了,如果你一定要做成(静态/动态)库文件,也是可以的,不过我这里就不深入了,做成库和直接用目标文件对解决你的问题没有任何区别。
然后再编译C++文件,也就是我的 a.cpp
g++ -o hello a.cpp c.o
看到了吧,我在编译 a.cpp 的时候把C生成的 c.o也加上了。 然后生成 可执行的 hello, 运行
./hello
就可以看到
A = 12
b = 144
关于创建静态库,假定你有3个C文件, a.c, b.c, c.c 提供了你C++要用到的接口,那么可以把这三个C文件编译出来的目标文件放到一个库文件里供C++使用,方法为
先编译出目标文件
gcc -c a.c b.c c.c
这时候你应该看到有 a.o b.o c.o了
然后创建库文件
ar cr libtest.a a.o b.o c.o
这三个目标文件就放入 libtest.a 这个静态库中了,然后编译C++程序 (你的C++程序应该已经按照我前面说的用 extern "C" 把C的接口都括起来了),假定你的 libtest.a 放在 /home/aaa/lib下
g++ -o my.exe my.cpp -L/home/aaa/lib -ltest
就会生成可执行文件 my.exe了。
9. 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
10. 如何在linux shell中同时编译一个源文件和一个头文件,使其生成一个可执行文件
直接用gcc编译.c文件,.c文件中 #include "头文件" 即可。
gcc test.c -o output -Wall
其中,output为输出的可执行文件,-Wall开关用于显示所有警告信息。