2

我试图找到如何使用谷歌在 linux 上创建 DLL-s,但得到的信息非常混乱。

是否可以在 linux 上编写动态链接库?如果没有,是否有其他方法可以从多个正在运行的程序中调用另一个模块中的代码?

4

4 回答 4

16

那是因为 DLL 是一个 Windows 术语。在 Linux 中,它们被称为共享库。

http://www.linux.org/docs/ldp/howto/Program-Library-HOWTO/shared-libraries.html

于 2008-09-28T12:37:30.843 回答
8

正如Sklivvz所说,您在 linux 上使用的术语是共享对象。这些文件扩展名为.so.

使用 gcc,您可以.so使用-shared选项创建一个。

例如。


gcc -shared -o libfoo.so foo.c

如果您将共享对象命名为 lib*.so,您可以使用-l链接器上的选项对其进行编译。请注意,在这种情况下会推断出“lib”。

IE。


ld -o a.out -lfoo someobject.o 

或者,您可以在运行时加载.so文件,就像使用.dlls 一样,使用 dlopen() 和 dlsym()。

于 2008-09-28T12:55:55.107 回答
1

如果您刚刚开始,这很多,但在某些时候您需要参考 Ulrich Drepper 的“<a href="http://people.redhat.com/drepper/dsohowto.pdf" rel="nofollow noreferrer ">如何编写共享库。"</p>

于 2008-09-28T19:48:17.580 回答
-1

我猜 .SO 文件而不是 DLL 文件,意思是共享对象,而不是 StackOverflow :),是你想要的。

于 2008-09-28T12:38:05.133 回答