Распределение общих объектов с моей программой - PullRequest
1 голос
/ 06 января 2012

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

Я знаю, что на платформах Windows я могу просто записать файлы .dll в каталог исполняемого файла и покончить с этим. Похоже, что в Linux это не так.

$ ls
libjrtp.so.3.9.1  libjthread.so.1.3.1  libQtCore.so.4  libQtGui.so.4  streamer
$ ./streamer 
./streamer: error while loading shared libraries: libjrtp.so.3.9.1: cannot open shared object file: No such file or directory

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

1 Ответ

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

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

...