linux C 的编译,链接问题 我写了两段简单的不能再简单的代码,可是还是出了错 代码1,add.c, extern int num[]; int b=2; int add(void) { int a; a=num[0]; return a+b; } 代码2 main.c , #include<stdio.h> extern int add(void); int num[2]={1,2}; int main() { int c; c=add(); printf("%d",c); return 0; } 然后编译,gcc -c add.c main.c 没有问题,然后链接,ld add.o main.o -o app,出问题了, 报错“ld: warning: cannot find entry symbol _start; defaulting to 0000000008048094 main.o: In function `main': main.c:(.text+0x23): undefined reference to `printf” 我不知道问题在哪里, 然后,我直接执行这个命令gcc add.c main.c -o app, 这时它又生成了可执行文件app。。。。而且可以正确执行!! 请问这是怎么回事????