2015-05-18 2 views
0

У меня есть общий объектный файл, с которым я бы хотел связать. Файл в настоящее время находится в моем домашнем каталоге - это не, который находится в каталоге обычной библиотеки, например /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.

+0

«Итак, я уверен, что это, вероятно, проблема с тем, как я компилирую и связывая» - совершенно наоборот. это, вероятно, не имеет к этому никакого отношения. пост минимальный код. –

ответ

0

What are some possible or likely causes of the "no loadable sections found ..." error message?

Это предупреждение GDB, которое можно смело игнорировать.

Does this indicate the runtime environment is unable to find certain libraries?

Наоборот, это указывает на то, что ваша программа начинает нормально, и бежит к линии 13 из test.cpp (который давно уже инициализации), а затем падает.

К сожалению, вы не указали, на что похожа линия 13, поэтому больше не сможете помочь.

Смежные вопросы