Рейтинг:0

неправильный путь к зависимостям разделяемой библиотеки

флаг in

Я собрал clazy с clang-12, но создатель Qt выдает ошибку:

Команда «/usr/local/clazy/bin/clazy-standalone --version» завершилась с кодом выхода 127. /usr/local/clazy/bin/clazy-standalone: ​​ошибка при загрузке общих библиотек: libclang-cpp.so.12: невозможно открыть файл общего объекта: нет такого файла или каталога

Я добавил правильные каталоги в .bashrc:

  • экспорт PATH=/usr/local/clang-12/bin:$PATH
  • экспорт LD_LIBRARY_PATH=/usr/local/clang-12/lib:$LD_LIBRARY_PATH

Вот распечатка общих зависимостей объектов для clazy-standalone:

    Linux-vdso.so.1 (0x00007ffd9ebe0000)
    ClazyPlugin.so => ​​/usr/local/clazy/lib/ClazyPlugin.so (0x00007f06c929d000)
    libclang-cpp.so.12 => /usr/local/clang-12/lib/libclang-cpp.so.12 (0x00007f06c4b2b000)
    librt.so.1 => /lib/x86_64-linux-gnu/librt.so.1 (0x00007f06c4b08000)
    libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f06c4b02000)
    libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f06c4adf000)
    libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f06c4990000)
    libz.so.1 => /lib/x86_64-linux-gnu/libz.so.1 (0x00007f06c4972000)
    libtinfo.so.6 => /lib/x86_64-linux-gnu/libtinfo.so.6 (0x00007f06c4942000)
    libstdc++.so.6 => /lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007f06c4761000)
    libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007f06c4746000)
    libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f06c4554000)
    /lib64/ld-linux-x86-64.so.2 (0x00007f06c9437000)

Вот распечатка зависимостей общих объектов для libclang-cpp.so.12:

    Linux-vdso.so.1 (0x00007ffee8df9000)
    libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007fbe393b1000)
    librt.so.1 => /lib/x86_64-linux-gnu/librt.so.1 (0x00007fbe393a6000)
    libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007fbe393a0000)
    libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007fbe39251000)
    libz.so.1 => /lib/x86_64-linux-gnu/libz.so.1 (0x00007fbe39235000)
    libtinfo.so.6 => /lib/x86_64-linux-gnu/libtinfo.so.6 (0x00007fbe39205000)
    libstdc++.so.6 => /lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007fbe39022000)
    libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007fbe39007000)
    libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fbe38e15000)
    /lib64/ld-linux-x86-64.so.2 (0x00007fbe3db60000)

libcland-cpp.so.12 не является символической ссылкой.

Опять же, комментарий @N0rbert не имеет ценности. У меня есть другие подобные проблемы, которые, как я подозреваю, связаны с этим типом проблемы. Linux по какой-то причине не может найти или использовать указанные файлы.

Я нашел сообщения о проблемах с общими библиотеками с 2005 года, так что, очевидно, я не единственный.

Может ли кто-нибудь, наконец, дать правильный ответ о том, как бороться с этим типом проблемы? Таким образом, таким людям, как я, не нужно часами читать посты без ответов. Или это "фича" линукса?

N0rbert avatar
флаг zw
Что не так с https://packages.ubuntu.com/focal/clazy? Почему вы вините ОС, пока играли с `/usr/local`?
флаг hr
Является ли `/usr/local/gcc-11.1.0/lib64/libstdc++.so.6` фактическим файлом или символической ссылкой? если последнее, то где оно разрешается (например, `realpath /usr/local/gcc-11.1.0/lib64/libstdc++.so.6`)?
FROST SKIPPER avatar
флаг in
Первый вопрос - нагруженный вопрос, который приведет только к аргументам. Итак, без комментариев. Я читал, что это рекомендуемый путь для установки дополнительных приложений. Если это не так, привет, отлично. То, что вы могли бы сделать N0rbert, дается правильный путь, а не просто троллить. Если вы не умеете читать между строк, я проделал это в Windows и проблем не возникло. В Ubuntu все, что у меня есть, это головная боль.
FROST SKIPPER avatar
флаг in
Судя по всему, это символическая ссылка, и реальный путь дает: . Этот файл существует. Выполнение --version на нем дает «Ошибка сегментации (дамп ядра)». Я думаю, это означает, что у меня проблема с установкой gcc-11. Не знаю, как понять, что с этим не так. Я не понимаю, почему компиляция gcc-11 успешна, если конечный продукт не работает.
FROST SKIPPER avatar
флаг in
Я скомпилировал clazy на clang-12 и получил похожую проблему. Команда «/usr/local/clazy/bin/clazy-standalone --version» завершилась с кодом выхода 127. /usr/local/clazy/bin/clazy-standalone: ​​ошибка при загрузке общих библиотек: libclang-cpp.so.12: невозможно открыть файл общего объекта: нет такого файла или каталога.
FROST SKIPPER avatar
флаг in
/usr/local/clang-12/lib/libclang-cpp.so.12 --version --> bash: /usr/local/clang-12/lib/libclang-cpp.so.12: Отказано в доступе
Рейтинг:0
флаг in

Да, хорошо. Так что я дал Linux шанс, и это фундаментальная проблема среди многих других, которые сообщество не решило.

Если вы собираете программы, ошибок не возникает, но общие библиотеки все равно не работают, и у вас установлены все необходимые пакеты. Есть решение. Установите Windows, это действительно работает, и вам не придется тратить время на эту печальную отмазку операционной системы.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.