Мой друг не может запустить мою программу openGL в своем дистрибутиве Linux - PullRequest
0 голосов
/ 15 февраля 2012

Я программирую приложение opengl в Ubuntu, и оно прекрасно компилируется и работает.Но когда я отправляю свою программу (да, ту, что скомпилирована в режиме выпуска) моему другу, который, я думаю, запускает обычный debian, программа не будет работать для него.Он сказал мне, что ему не хватает некоторых библиотек.Поэтому мне интересно: если я отправлю ему библиотеки, которые я использую (файл .so), ему вместе с программой, сможет ли он его запустить?Я запустил lddtree, и вот вывод:

game => ./game (interpreter => /lib/ld-linux.so.2)
libGL.so.1 => /usr/lib/libGL.so.1
    libnvidia-tls.so.280.13 => /usr/lib/libnvidia-tls.so.280.13
    libnvidia-glcore.so.280.13 => /usr/lib/libnvidia-glcore.so.280.13
    libXext.so.6 => not found
    librt.so.1 => not found
    libdl.so.2 => not found
libX11.so.6 => not found
libXxf86vm.so.1 => not found
libstdc++.so.6 => not found
libm.so.6 => not found
libgcc_s.so.1 => not found
libc.so.6 => not found
libpthread.so.0 => not found

(Это вывод моего компьютера, а не его) Спасибо.

Ответы [ 3 ]

1 голос
/ 15 февраля 2012

Это немного сложнее, чем отправить ему двоичный файл. Вам может понадобиться собрать пакет Debian .

0 голосов
/ 15 февраля 2012

Создание распространяемых двоичных файлов для Linux вполне выполнимо. Это просто требует дополнительной работы. Возьмите Блендер для примера.

Ребята из Listaller создали несколько инструментов и библиотек, чтобы помочь в этом процессе. Я предлагаю вам прочитать их документацию.

http://listaller.tenstral.net/

К сожалению, большинство интересных документов исчезли из Интернета (почему?), Но вы все равно можете найти их в Wayback Machine. Ищите «binreloc» и «Autopackage»

Обновление

Теперь в вашем случае каноническое решение состоит в том, чтобы заново собрать все необходимые библиотеки (независимо от двоичных файлов дистрибутива) и связать их с относительными путями. Извините, я не могу сказать вам из головы детали, потому что, честно говоря, я их не помню. Сначала я должен был снова просмотреть свои записи и, возможно, повозиться.

Если вы ищете вдохновение, просто посмотрите, как это делает Blender.

0 голосов
/ 15 февраля 2012

Скорее всего, вы компилируете для разных версий (например, для libc - я гарантирую, что он есть, но, вероятно, он не соответствует вашей версии).

Лучшее решение - просто отправить ему исходный код и попросить его скомпилировать его (при условии, что ему нужно только набрать make).

Кроме того, вы можете кросс-скомпилировать его для его версии Debian или статически связать все. Хотя я не уверен, как это сделать.

...