【发布时间】:2008-09-28 12:32:07
【问题描述】:
我试图找到如何使用 google 在 linux 上创建 DLL-s,但得到的信息非常混乱。
是否可以在linux上编写动态链接库?如果没有,是否有其他方法可以从多个正在运行的程序中调用另一个模块中的代码?
【问题讨论】:
标签: linux gcc shared-libraries
我试图找到如何使用 google 在 linux 上创建 DLL-s,但得到的信息非常混乱。
是否可以在linux上编写动态链接库?如果没有,是否有其他方法可以从多个正在运行的程序中调用另一个模块中的代码?
【问题讨论】:
标签: linux gcc shared-libraries
那是因为 DLL 是一个 Windows 术语。在 Linux 中,它们被称为共享库。
http://www.linux.org/docs/ldp/howto/Program-Library-HOWTO/shared-libraries.html
【讨论】:
正如Sklivvz 所说,您在linux 上使用的术语是共享对象。这些文件的扩展名是.so。
使用 gcc,您可以使用 -shared 选项创建 .so。
例如。
gcc -shared -o libfoo.so foo.c
如果您将共享对象命名为 lib*.so,您可以使用链接器上的 -l 选项对其进行编译。请注意,“lib”是在这种情况下推断出来的。
即。
ld -o a.out -lfoo someobject.o
您也可以在运行时加载.so 文件,就像使用.dlls 一样,使用dlopen() 和dlsym()。
【讨论】:
很多如果您刚刚开始,但在某些时候您需要参考 Ulrich Drepper 的“How To Write Shared Libaries”。
【讨论】:
我猜 .SO 文件而不是 DLL 文件,意思是共享对象,而不是 StackOverflow :),是你想要的。
【讨论】: