程序员人生 网站导航

linux so库生成(一)

栏目:综合技术时间:2015-02-04 09:11:43

Dear!

先贴个大众版,希望逐字理解,有益!

$gcc -shared -Wl,-soname,libhello.so.1 -o libhello.so.1.0 hello.o
另外再建立两个符号连接:
$ln -s libhello.so.1.0 libhello.so.1
$ln -s libhello.so.1 libhello.so
这样1个libhello的动态连接库就生成了。最重要的是传gcc -shared 参数使其生成是动态库而不是普通履行程序。 -Wl 表示后面的参数也就是-soname,libhello.so.1直接传给连接器ld进行处理。实际上,每个库都有1个soname,当连接器发现它正在查找的程序库中有这样1个名称,连接器便会将soname嵌入连结中的2进制文件内,而不是它正在运行的实际文件名,在程序履行期间,程序会查找具有 soname名字的文件,而不是库的文件名,换句话说,soname是库的辨别标志。 这样做的目的主要是允许系统中多个版本的库文件共存,习惯上在命名库文件的时候通常与soname相同 libxxxx.so.major.minor 其中,xxxx是库的名字,major是主版本号,minor 是次版本号

Do you understand?

------分隔线----------------------------
------分隔线----------------------------

最新技术推荐