Chinaunix

标题: 静态库相互包含了怎么办? [打印本页]

作者: xiaodada    时间: 2009-01-16 14:30
标题: 静态库相互包含了怎么办?
LD_LIBS = -L$(LIB_DIR) -laa -lbb

aa中用了bb函数, bb中用了aa中的函数. 这种相互包含的问题怎么解决?
作者: cjaizss    时间: 2009-01-16 15:12
没问题的
作者: cjaizss    时间: 2009-01-16 15:13
即便是间接递归都没问题.
比如以下测试:

  1. $ cat >1.c
  2. int func2(int);
  3. int func1(int i)
  4. {
  5.       if(i==1||i==0)return i;
  6.       return func2(i-1)+i;
  7. }
  8. $ cat >2.c
  9. int func1(int);
  10. int func2(int i)
  11. {
  12.       if(i==1||i==0)return i;
  13.         return func1(i-1)+i;
  14. }
  15. $ gcc -c 1.c
  16. $ gcc -c 2.c
  17. $ ar rcs lib1.a 1.o
  18. $ ar rcs lib2.a 2.o
  19. $ cat >test.c
  20. int func1(int);
  21. int func2(int);
  22. #include <stdio.h>
  23. int main()
  24. {
  25.         printf("%d\n",func1(10));
  26.         return 0;
  27. }
  28. $ gcc test.c -L. -l1 -l2
  29. $ ./a.out
  30. 55

复制代码





欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2