Linux上的.dll之类的东西 - 如何获取它们?

时间:2011-11-22 13:22:32

标签: c++ linux dll compilation gtkmm

我的程序使用gtkmm,gtkglextmm和exiv2。

我想将这些库包含在可执行文件中,因为如果用户在他/她的系统上没有这些库,该应用程序将无法运行。在Windows上.dll文件解决了这个问题(我把它们放在与输出文件相同的目录中)。

如何在Linux上附加类似的库?有什么工具可以帮助吗?我不能强迫用户安装依赖项。

3 个答案:

答案 0 :(得分:10)

Linux上的标准做法不是重新分发您的依赖项。这样做只会造成大量重复。您应该在安装包中指定依赖项,并让包管理器解决它们。

答案 1 :(得分:4)

更好的是,使用您要定位的分发[s]的包系统,例如Debian / Ubuntu / Mint上的.deb打包(aptitudeapt-get,自己使用dpkg),Redhat / Fedora上的Yum / Rpm等等。

DLL在Linux上被称为shared libraries(名为*.so的文件)(ELF格式,使用objdumpnm ...来探索他们,gcc -fPIC -shared来构建它们。它们可以通过编程方式加载dlopen& dlsym。请注意,Windows DLL-s和Windows之间存在重要差异。 Linux * .so(dynamic linking在Windows和Linux上没有相同的含义)

答案 2 :(得分:0)

您可以编写简单的sh脚本来启动程序:

#!/bin/sh
LD_LIBRARY_PATH=/path/to/intall/directory
path/to/your/exe

并将这些库放到/ path / to / intall / directory