gcc编译两个不同目录下的C文件时提示undefined referrence to ..........

aimerjing 2011-07-23 10:30:40
现在我有两个目录dir1和dir2,其中dir1中有两个文件,分别为
max.h内容为:

#ifndef __NUM_H
#define __NUM_H
extern int max(int a, int b);
#endif

max.c内容为 :

int max(int a, int b)
{
if(a >b)
return a;
else
return b;
}
在目录dir2中有main.c,内容为

#include <stdio.h>
#inlcude "dir1/max.h"

int main()
{
int a = 2, b = -1, result;
result = max(a, b);
printf("较大的数是: %d\n", result);

return 0;
}
查阅资料后,网上说使用GCC有两种方法可以运行,第一种,在两个目录中分别编译生成目标文件再把两个目录的目标文件编译在一起然后再执行,经试验,没问题。
第二种方法:在用gcc编译的时候,-指定.h所包含的目录。即:在dir2目录下,输入gcc -g main.c -o main -I ../dir1/
可是我使用这种方法得到的结果总是undefined reference to "max"。希望大家明示啊!!!
...全文
446 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
aimerjing 2011-08-07
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 louyong0571 的回复:]

main连接的时候需要max.o这个文件,要么先编好拷过来,要么跟楼上一样临时编译
[/Quote]
分别编译肯定是没问题的
aimerjing 2011-07-25
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 tracyjk 的回复:]

可以写成头文件的绝对路径
[/Quote]
问题现在是写成绝对路径也提示那个错误唉。。。
gududesiling 2011-07-25
  • 打赏
  • 举报
回复
对呀,4楼说的我同意。。。
牛晨光 2011-07-25
  • 打赏
  • 举报
回复
gcc -o main -I../ ../dir1/max.c main.c

“undefined reference to”是链接器报的错误,不是编译器报错。
这个是链接错误,不是编译错误。是因为从main的代码无法找到max函数实现体。


louyong0571 2011-07-25
  • 打赏
  • 举报
回复
main连接的时候需要max.o这个文件,要么先编好拷过来,要么跟楼上一样临时编译
Rydiy 2011-07-25
  • 打赏
  • 举报
回复
#include "../dir1/max.h"

在dir2中编译
gcc -o main main.c ../dir1/max.c
wang5150753 2011-07-25
  • 打赏
  • 举报
回复
写个makefile呗 这么用多麻烦
tracyjk 2011-07-23
  • 打赏
  • 举报
回复
可以写成头文件的绝对路径
昵称很不好取 2011-07-23
  • 打赏
  • 举报
回复
#inlcude "dir1/max.h"
在dir2中看不到dir1吧,是不是应该写成这样:#inlcude "../dir1/max.h"
aimerjing 2011-07-23
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 wyjq395 的回复:]

#inlcude "dir1/max.h"
你这边路径写对应该就没问题吧,gcc -g main.c -o main就够了。
[/Quote]
我在实际测试的时候路径写的是我当时准确的路径,只不过发贴的话为了简单起见用了个DIR1和DIR2,即使这样还是通不过编译的
wyjq395 2011-07-23
  • 打赏
  • 举报
回复
我说的路径写对是指写绝对路径
wyjq395 2011-07-23
  • 打赏
  • 举报
回复
#inlcude "dir1/max.h"
你这边路径写对应该就没问题吧,gcc -g main.c -o main就够了。

23,120

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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