Как я могу узнать, будет ли мой исполняемый файл запускаться и на других компьютерах (linux)? - PullRequest
3 голосов
/ 14 июня 2011

У меня есть исполняемый файл, который я хочу иметь возможность распространять и запускать в других системах Linux. Есть ли способ быть уверенным в том, что это сработает, без доступа к конечной среде выполнения?

Например, я обеспокоен тем, что мой исполняемый файл может использовать динамическую библиотеку, которая присутствует только на моей машине для разработки.

Ответы [ 4 ]

4 голосов
/ 14 июня 2011

Предоставьте все соответствующие общие библиотеки с исполняемым файлом и установите $LD_LIBRARY_PATH в сценарии оболочки, который вызывает исполняемый файл, чтобы сообщить компоновщику, где найти общие библиотеки.Для получения дополнительной информации см. Справочную страницу ld.so(8) и обязательно соблюдайте соответствующие лицензии.

1 голос
/ 04 января 2012

Есть ли способ быть уверенным в том, что это будет работать, без доступа к конечной среде выполнения?

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

1 голос
/ 14 июня 2011

Посмотрите на упаковочные материалы Debian (.deb) и Redhat (.rpm).Это установщик для вашего пакета.Они не так уж и сложны, и вы можете сказать, что они ссылаются на другие пакеты с необходимыми общими объектами.

Инструменты упаковки обычно могут восстанавливать пакеты, в которых отсутствуют библиотеки и так далее.Это также поможет вам разместить ваши двоичные файлы таким образом, чтобы вам не нужно было устанавливать LD_LIBRARY_PATH или помещать внешний интерфейс сценария оболочки в ваш исполняемый файл.Проведите день, играя с каждым, и вы получите сносный установочный пакет.

0 голосов
/ 04 января 2012

Не могли бы вы просто статически связать все в массивную черную дыру на ужине?

...