首先,需要产生位置无关(position-independent)代码。
要做到这一点,gcc需要加上编译选项-fPIC
gcc -fPIC -O -c libbar.c
这时候就适合构造共享库了,加上-shared编译选项
gcc -shared -o libbar.so libbar.o
可以把许多重定位文件加到共享库中。为了把baz.o和共享库连接在一起,可以如下操作:
# gcc -O -c baz.c
# gcc -o baz baz.o -L. -lbar