我的环境是Ubuntu 14 32位.
我分别写了三个名为main.c,foo.c和bar.c的c文件.
代码很简单.
第一个源代码是main.c
#include<stdio.h>
extern void foo();
int main(){
foo();
return 0;
}
Run Code Online (Sandbox Code Playgroud)
第二个源代码是foo.c
#include<stdio.h>
void foo(){
printf("Hi,I am foo.");
bar();
}
Run Code Online (Sandbox Code Playgroud)
最后一个是bar.c
#include<stdio.h>
void bar(){
printf("Hi,I am bar.");
}
Run Code Online (Sandbox Code Playgroud)
上面的所有文件都放在名为test的同一个文件夹中.
(它的绝对路径是/ home/jack/Desktop/test)
然后我发出命令:
$ gcc -fPIC -shared -Wl,-soname,libbar.so.1 -o libbar.so.1.0.0 bar.c
$ ln -s libbar.so.1.0.0 libbar.so
$ gcc -fPIC -shared -Wl,-soname,libfoo.so.1 -o libfoo.so.1.0.0 foo.c -lbar -L.
$ ln -s libfoo.so.1.0.0 libfoo.so
$ gcc -c main.c
$ ld -rpath /home/jack/Desktop/test -e main -o main main.o -L. -lfoo …Run Code Online (Sandbox Code Playgroud)