求帮助!
现在我想写个linux下的应用程序,想将其中公用的一个目录编译成库文件后与主程序连接。
但是一直会提示未定义错误。
我尝试参考书写一个简单的程序,如附件,解压后可直接使用sh make.sh或make编译。
主程序中只要有调用f2()函数程序就会出现f2未定义错误。
而只调用f1()函数则不会出现这种错误,两个函数是非常相似的。
下面是我的整个操作过程,望高手帮忙解决。谢谢!
my@ubuntu:~/test$ cd lib
my@ubuntu:~/test/lib$ ls
f1.c f1.o f2.c f2.o libexample.a Makefile
my@ubuntu:~/test/lib$ cat f1.c
#include <stdio.h>
void f1(void)
{
printf("f1()\n");
}
my@ubuntu:~/test/lib$ cat f2.c
#include <stdio.h>
void f1(void)
{
printf("f1()\n");
}
my@ubuntu:~/test/lib$ cd ..
my@ubuntu:~/test$ ls
inc lib main.c main.o Makefile make.sh
my@ubuntu:~/test$ cat main.c
void f2(void);
int main()
{
//f1();
f2();
return 0;
}
my@ubuntu:~/test$ cd inc
my@ubuntu:~/test/inc$ ls
fx.h
my@ubuntu:~/test/inc$ cat fx.h
#ifndef __FX_H__
#define __FX_H__
extern void f1(void);
extern void f2(void);
#endif
my@ubuntu:~/test/inc$ cd ..
my@ubuntu:~/test$ ls
inc lib main.c main.o Makefile make.sh
my@ubuntu:~/test$ cat make.sh
cd lib/
gcc -c *.c
ar cr libexample.a f2.o f1.o
cd ..
gcc -o main main.c lib/libexample.a -I inc/
my@ubuntu:~/test$ sh make.sh
/tmp/ccjicsHw.o: In function 'main':
main.c:(.text+0x7): undefined reference to 'f2'
collect2: ld returned 1 exit status
my@ubuntu:~/test$