我知道这个问题有很多答案,但我总是在gcc c1.c上收到错误
c1.c:(.text+0x5): undefined reference to `f'
collect2: error: ld returned 1 exit status
无论我尝试什么。
这是c1.c
#include <stdio.h>
#include "c.h"
int main()
{
printf("F %d\n",f());
}
这是c2.c
#include <stdio.h>
int f(void) {return 7;}
int main()
{
printf("S %d\n",f());
}
这是c.h
int f(void);
我怎么能让它工作?实际上,我在一个像这样建模的大程序中得到了这个错误。我想这是做到这一点的方法。 (是的,主要应该返回0)。
答案 0 :(得分:1)
您将遇到问题,因为您定义了两个不同的main
函数,但执行此操作的一般方法是链接时问题:
gcc -c c1.c
gcc -c c2.c
gcc c1.o c2.o
您需要做的就是找出您想要的主要部分,并删除不需要的部分。
您可以执行以下操作:
gcc -Dmain=blah -c c1.c
gcc -c c2.c
gcc c1.o c2.o