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

Mar*_*rco 2 c++ linux dll compilation gtkmm

我有使用gtkmm,gtkglextmm和exiv2的程序.

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

如何在Linux上附加类似的库?有什么工具可以帮助吗?我无法强制用户安装依赖项.

Dav*_*nan 10

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

  • 这不是Windows.使用首选软件包管理器安装软件包非常简单.这只是做到这一点的方式.不要打平台. (4认同)
  • 好吧,我需要让我的程序在 Linux 上运行,而有人却懒得安装依赖项。我知道标准做法是什么,但我需要像 Windows 上的 dll 一样完成此操作。 (2认同)

Bas*_*tch 10

更好的是,使用您想要定位的发行版的软件包系统,例如Debian/Ubuntu/Mint 上的.debaptitude软件包(使用或apt-get,它们自己使用dpkg),Redhat/Fedora 上的 Yum/Rpm 等。

DLL-s在 Linux 上被称为共享库(名为 的文件)(采用ELF格式,使用, ... 来探索它们并构建它们)。可以使用dlopen &以编程方式加载它们。请注意,Windows DLL-s 和 Linux *.so 之间存在重要差异(动态链接在 Windows 和 Linux 上具有不同的含义)*.soobjdumpnmgcc -fPIC -shareddlsym