У меня есть общий объектный файл, с которым я бы хотел связать. Файл в настоящее время находится в моем домашнем каталоге - это не, который находится в каталоге обычной библиотеки, например /usr/lib
, потому что я просто тестирую и не имею разрешений для его развертывания до /usr/lib
.Ссылка на общий файл объекта в моем домашнем каталоге
Итак, я пытаюсь скомпилировать и связать с ним следующим образом:
g++ test.cpp -o test -L. mylib.so -g3
компилятор не возвращает ошибку, однако, когда я бегу, я получаю ошибку:
./test: error while loading shared libraries: mylib.so: cannot open shared object file: No such file or directory
Ладно, так после некоторого Googling вокруг я понял, проблема в том, что моя библиотека запустить путь не включает мой домашний каталог, поэтому мне нужно передать вариант компоновщика при компиляции. Хорошо, поэтому я стараюсь:
g++ test.cpp -o test -Wl,-rpath,. -L. mylib.so -g3
Это компилируется, однако, когда я запускаю программу, она сразу же устраняет неисправности.
Итак, я использую gdb
, чтобы увидеть, что происходит:
(gdb) run
Starting program: ~/test
warning: no loadable sections found in added symbol-file system-supplied DSO at 0x2aaaaaaab000
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib64/libthread_db.so.1".
Program received signal SIGSEGV, Segmentation fault.
трассировку не показывает никакой полезной информации. Существует один StackFrame:
#0 0x0000000000400808 in main() at test.cpp:13
Итак, я уверен, что это, скорее всего, проблема с тем, как я компиляции и компоновки, но прибегая к помощи вокруг этого вопроса не получится большую часть ответа.
Какое значение Возможные или вероятные причины ошибки "no loadable sections found ...
" Сообщение ошибки? Означает ли это, что среда выполнения не может найти определенные библиотеки? Файл .so
был скомпилирован с использованием флагов -fPIC
и -shared
.
«Итак, я уверен, что это, вероятно, проблема с тем, как я компилирую и связывая» - совершенно наоборот. это, вероятно, не имеет к этому никакого отношения. пост минимальный код. –