1

如果我在 linux 中使用共享库,如果应用程序必须在运行时找到该库,为什么我需要将它与 -l 链接?

难道我不能在链接步骤中使用正确的函数签名传入一个虚拟 .so 并在运行时用真实的 .so 替换它并且仍然可以正常工作吗?

有没有办法只用头文件编译应用程序并在运行时进行链接?

4

1 回答 1

2

如果我在 linux 中使用共享库,如果应用程序必须在运行时找到该库,为什么我需要将它与 -l 链接?

这样加载器就知道必须在运行时加载哪些库。

难道我不能在链接步骤中使用正确的函数签名传入一个虚拟 .so 并在运行时用真实的 .so 替换它并且仍然可以正常工作吗?

绝对地。

有没有办法只用头文件编译应用程序并在运行时进行链接?

是的,但是有责任调用dlopen(3)dlsym(3)自己加载库和函数。

于 2012-05-23T17:31:33.890 回答