什么是静态和动态库

时间:2014-04-25 16:57:28

标签: libraries

有人可以详细解释静态库和动态库之间的实际区别吗?每种方法的优点和缺点是什么?

1 个答案:

答案 0 :(得分:0)

程序中包含静态库,其中包含对库的精确偏移。模拟的伪代码示例可能是:

open_lib("foo.so")
add_arg(0, "arg1")
add_arg(1, "arg2")
execute_stuff_at_lib_location(0x34235)

动态库使用表来获取函数的偏移量:

open_lib("foo.so")
offset = get_function_offset("do_all_the_things")
add_arg(0, "arg1")
add_arg(1, "arg2")
execute_stuff_at_lib_location(offset)

动态链接几乎总是更好,因为静态链接的微小变化会导致代码无法使用。另一方面,通过使用静态链接,代码稍微快一些。

编辑:在某些系统上,静态库包含在程序中,因此每个应用程序都有自己的副本,而不是整个系统使用一个DLL。