Linux下C编程遇到一个问题:找不到文件路径。老师进来看看。
我写了一个测试的小例子,文件结构如下:
~/xiaolong/CProgram/test/下面有2个文件:file1,file2
file1里面文件结构及代码如下:
head.h
#include<stdio.h>
void SayHello();
main.c
#include "head.h"
int main(){
SayHello();
}
SayHello.c
void SayHello(){
printf("Hello world!!\n");
}
我在file1文件里面些了一个makefile文件编译以上程序是没有问题的,现在我想在file2文件里面些一个main程序,来调用file1文件里面的SayHello这个函数
在file2文件里面有一个test.c:
#include "~/xiaolong/CProgram/test/file1/head.h"
int main(){
SayHello();
return 0;
}
然后我用gcc test.c命令编译,出现以下错误:
No such file directory
compilation terminated
我认为只要在头文件中指定含有该函数声明的头文件就可以了,不知道错在哪里?
[解决办法]
先把#include "~/xiaolong/CProgram/test/file1/head.h"中的~换成具体的路径试下吧。“~”不一定能认识的呀!
[解决办法]
做Makefile时先用gcc -MM打印出文件的包含关系,避免出错
[解决办法]
应该是 gcc head.h test.c
有几个文件带上几个文件
[解决办法]
按照楼主的文件架结构,这样写就可以了:
#include "../file1/head.h"
另外编译的时候也要同步编译SayHello.c,否则找不到定义。
在file2文件夹里:
$gcc -Wall test.c ../file1/SayHello.c
[解决办法]
#include "~/xiaolong/CProgram/test/file1/head.h"
linux不认~
[解决办法]
包含头文件变的这么艰难,太可悲了...
建议你了解一下gcc -I这个选项。。。