Linux下C编程遇到一个问题:找不到文件路径。老师进来看看。

SelfMedicated 2012-05-06 06:06:59
我写了一个测试的小例子,文件结构如下:
~/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

我认为只要在头文件中指定含有该函数声明的头文件就可以了,不知道错在哪里?
...全文
937 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq120848369 2012-05-11
  • 打赏
  • 举报
回复
包含头文件变的这么艰难,太可悲了...

建议你了解一下gcc -I这个选项。。。
SelfMedicated 2012-05-10
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 的回复:]

做Makefile时先用gcc -MM打印出文件的包含关系,避免出错
[/Quote]
你是说输入命令gcc -MM吗?我输入后,说:gcc:fatal error: no input files
compilation terminated
沭水河畔 2012-05-07
  • 打赏
  • 举报
回复
按照楼主的文件架结构,这样写就可以了:
#include "../file1/head.h"
另外编译的时候也要同步编译SayHello.c,否则找不到定义。
在file2文件夹里:
$gcc -Wall test.c ../file1/SayHello.c
龙战于野1988 2012-05-07
  • 打赏
  • 举报
回复
应该是 gcc head.h test.c


有几个文件带上几个文件
Red_angelX 2012-05-07
  • 打赏
  • 举报
回复
#include "~/xiaolong/CProgram/test/file1/head.h"
linux不认~
Furney 2012-05-06
  • 打赏
  • 举报
回复
做Makefile时先用gcc -MM打印出文件的包含关系,避免出错
JoeBlackzqq 2012-05-06
  • 打赏
  • 举报
回复
先把#include "~/xiaolong/CProgram/test/file1/head.h"中的~换成具体的路径试下吧。“~”不一定能认识的呀!

69,370

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧