关于静态库和动态库的链接问题
看到的一道笔试题,如下关于链接的说法错误的是()
A.一个静态库中不能包含两个同名全局函数的定义
B.一个动态库中不能包含两个同名全局函数的定义
C.如果两个静态库都包含一个同名全局函数,他们不能同时被链接
D.如果两个动态库都包含一个同名全局函数,他们不能同时被链接
[解决办法]
稍微修改了一下
[root@localhost test]# cat a.c
int a=1;
[root@localhost test]# cat b.c
int a=2;
[root@localhost test]# gcc -shared a.c -o a.so
[root@localhost test]# gcc -shared b.c -o b.so
[root@localhost test]# gcc main.c b.so a.so
[root@localhost test]# ./a.out
a:2
[解决办法]
我选择D
h1=dlopen("libfoo.so")foo_function1=dlsym(h1,"function1")h2=dlopen("libbar.so")bar_function1=dlsym(h2,"function1")