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

发布于 2024-12-17 13:33:06 字数 194 浏览 3 评论 0原文

我有使用 gtkmm、gtkglextmm 和 exiv2 的程序。

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

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

I have program using gtkmm, gtkglextmm and exiv2.

I want to include these libraries with the executable, because the app will not work if user doesn't has them on his/her system. On Windows .dll files solved the matter (I put them in the same directory as output file).

How to attached similar libraries on Linux? Is there any tool helping with that? I cannot force user to install dependencies.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

南…巷孤猫 2024-12-24 13:33:06

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

Standard practice on Linux is not to redistribute your dependencies. Doing so just creates large amounts of duplication. You should instead specify the dependencies in your installation package and let the package manager resolve them.

黑凤梨 2024-12-24 13:33:06

更好的是,使用您想要定位的发行版的软件包系统,例如 .deb在 Debian/Ubuntu/Mint 上打包(使用 aptitudeapt-get,本身使用 dpkg),Redhat/Fedora 上的 Yum/Rpm 等等等

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

Better yet, use the package system of the distribution[s] you want to target, e.g. .deb packaging on Debian/Ubuntu/Mint (with aptitude or apt-get, themselves using dpkg), Yum/Rpm on Redhat/Fedora, etc etc.

DLL-s are called shared libraries (files named *.so) on Linux (in ELF format, use objdump, nm ... to explore them, and gcc -fPIC -shared to build them). They can be programmatically loaded with dlopen & dlsym. Beware that there are important differences between windows DLL-s & Linux *.so (dynamic linking don't have the same meaning on Windows & Linux)

脱离于你 2024-12-24 13:33:06

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

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

并将so库放入/path/to/intall/directory

You can write simple sh script to start your program:

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

and put so libraries to /path/to/intall/directory

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文