如果我在linux中使用共享库,如果应用程序必须在运行时找到库,为什么还需要将它与-l链接?
我不能在链接步骤中使用正确的函数签名传入一个虚拟的.so,并在运行时将其替换为真正的.so并仍然可以正常工作吗?
有没有办法只使用头文件编译应用程序并在运行时进行链接?
答案 0 :(得分:2)
如果我在linux中使用共享库,如果应用程序必须在运行时找到库,为什么还需要将它与-l链接?
这样加载器就知道必须在运行时加载哪些库。
我不能在链接步骤中使用正确的函数签名传入一个虚拟的.so,并在运行时将其替换为真正的.so并仍然可以正常工作吗?
绝对
有没有办法只使用头文件编译应用程序并在运行时进行链接?
是的,但您有责任自己致电dlopen(3)
和dlsym(3)
来加载库和函数。