像Linux上的.dll的东西 – 如何让他们?

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

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

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

更好的是,使用你想要的发行版的软件包系统,比如在Debian / Ubuntu / Mint上(使用aptitudeapt-get ,使用dpkg自己),在Redhat / Fedora上的Yum / Rpm等等。等等

在Linux( ELF格式,使用objdumpnm …探索它们,以及gcc -fPIC -shared来构建它们),DLL-s被称为共享库 (文件名为*.so )。 他们可以用dlopen & dlsym编程加载。 请注意,Windows DLL-s和Linux * .so(Windows和Linux上的动态链接不具有相同的含义)

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

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

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

并把库放到/ path / to / intall /目录