Я выяснил, какие файлы .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
Я нахожу это странным, что программа не может связать с библиотекой, даже если это в основном сидит прямо в рабочем каталоге. Почему это не связано?
Я работаю с 'qmake', поэтому я добавил' QMAKE_LFLAGS + = -Xlinker -R .' в свой PRO-файл, который сделал трюк. Благодаря! – Pieter
@Pieter Я должен был упомянуть, что это не всегда хорошая идея, потому что он будет искать любой из своих общих объектов в '.', что дает непривилегированным пользователям возможность вставить свои собственные общие библиотеки вместо законных. По крайней мере, подумайте еще раз о том, чтобы упаковать вашу общую библиотеку в более часто используемый каталог. –
Просто, чтобы быть понятным в этом ... будет бинарный вид в * рабочем * каталоге или в его * собственной * директории? В первом случае я вижу только угрозу безопасности. Второе решение было бы более безопасным, но я не знаю, можно ли его достичь. – Pieter