将静态库链接到共享库,是否有更好的方法进行预先声明?

时间:2016-03-07 09:21:05

标签: c

用于说明问题的代码示例: 文件liba.c:

 int ajob (void)
 {
     return 19;
 }   

编译:

gcc -Wall -c liba.c
ar rcs liba.a liba.o

文件so.h:

int ajob (void); 
int sojob (void);

file libso.c

#include "so.h"
int sojob (void)
{
   return 4;   
}
#if defined(WILLWORK)
void afoo(void)
{
    ajob();
}
#endif

编译:

gcc -shared  -L ./ -o libso.so -la -fPIC libso.c

这将不包括共享库中的ajob函数。但这会:

gcc -shared  -L ./ -o libso.so -la -fPIC libso.c -DWILLWORK

文件来测试这个(appl.c):

#include <stdio.h>
#include "so.h"
int main(void)
{
    printf ("so + a = %d \n", sojob() + ajob());
    return 0;
}

编译:

gcc -Wall -lso appl.c -L ./  -R ./ 

我的问题是,是否有更优选的方法在共享库中包含静态库,避免使用“afoo”这样的虚拟函数?

0 个答案:

没有答案