静态方式调用so,连接时,从哪取的符号? (windows上.dll可以有对应的导出库.lib)

在window上,假设有个动态连接库B.dll,它有对应的导出库B.lib。然后写一个程序A.exe,这个A.exe中,以静态方式(隐式)调用了动态链接库B.dll。在build A.exe的链接阶段,链接器会把B.lib链接到A.exe里。A.exe被执行时,B.dll被才加载。

那么,在linux上,build动态链接库时,只产生了so文件。如果用静态方式调用这个so,链接时从哪找需要的符号信息呢?windows上dll对应有lib,但linux上只有so。难道链接时直接从so里取了符号信息?

作者: stoat   发布时间: 2011-04-02

貌似linux没有可以从.so文件提取符号的工具,因为很多库都是开源的可以自己编译一个.a的静态库使用,或者它本身就提供.a的静态库,你可以强制使用静态库,而不是动态库。

作者: wzzww   发布时间: 2011-04-02