我的主目录中有以下目录。未定义对函数的引用
源
包括
库
在源目录中,我有以下文件:
a.c
#include <stdio.h>
#include "a.h"
extern void function(void);
int main()
{
printf("PREDEFINED = %d\n",PREDEFINED);
function();
return 0;
}
b.c
#include <stdio.h>
void function()
{
printf("Hello from function\n");
}
a.h
#define PREDEFINED 100
我编译b.c和移动B.0至lib文件夹。
然后我从source
夹
gcc -Wall -o temp a.c -I../include -L../Lib
试过以下命令,但它显示以下错误 a.c: undefined reference to
function``
但是,当我使用下面的命令时,它产生的输出文件而不temp
任何错误
gcc -Wall -o temp a.c -I../include ../Lib/b.o
我在哪里出错了?
你应该在头文件中真正地定义`function()`,例如“b.h”并将其包含在“a.c”中。无论如何,你究竟在做什么?建立“b.c”作为图书馆?你的制作系统非常不标准。对于快速命令行构建而言,通常将所有C文件同时编译到可执行文件中,而不用打扰目标文件。对于正确的make系统,将所有C文件编译成目标文件并将它们链接到可执行文件中更为常见。你有一个混合在这里。 – AlastairG 2010-12-23 14:58:07