Что-то вроде .dll в Linux - как их получить? - PullRequest
2 голосов
/ 22 ноября 2011

У меня есть программа, использующая gtkmm, gtkglextmm и exiv2.

Я хочу включить эти библиотеки в исполняемый файл, потому что приложение не будет работать, если пользователь не имеет их в своей системе.В Windows .dll-файлы решили эту проблему (я поместил их в тот же каталог, что и выходной файл).

Как подключить подобные библиотеки в Linux?Есть ли какой-нибудь инструмент, помогающий с этим?Я не могу заставить пользователя установить зависимости.

Ответы [ 3 ]

10 голосов
/ 22 ноября 2011

Стандартная практика для Linux - не распространять ваши зависимости.Это просто создает большое количество дублирования.Вместо этого вы должны указать зависимости в вашем установочном пакете и позволить менеджеру пакетов разрешить их.

4 голосов
/ 22 ноября 2011

Еще лучше, используйте систему пакетов дистрибутива, которые вы хотите настроить, например, .deb упаковка в Debian / Ubuntu / Mint (с aptitude или apt-get, сами по себе dpkg), Yum / Rpm на Redhat / Fedora и т. Д. И т. Д.

DLL-ы называются общими библиотеками (файлы с именем *.so) в Linux (в формате ELF , используйте objdump, nm ... для их изучения и gcc -fPIC -shared, чтобы построить их). Они могут быть программно загружены с помощью dlopen & dlsym. Помните, что между Windows DLL-s и Linux * .so существуют важные различия ( динамическое связывание не имеет такого значения в Windows & Linux)

0 голосов
/ 22 ноября 2011

Вы можете написать простой скрипт sh для запуска вашей программы:

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

и поместите так библиотеки в / path / to / intall / directory

...