Определить местоположение libgcc_s.so.1 - PullRequest
1 голос
/ 18 февраля 2020

Прежде всего я нахожусь в Debian VPS без разрешений SUDO, без возможности установки чего-либо.

Я хочу запустить программу:

./program

И она сообщает мне, что она Нужна libgcc_s.so.1:

ERROR: ld.so: object '/lib/snoopy.so' from /etc/ld.so.preload cannot be preloaded (wrong ELF class: ELFCLASS64): ignored.
./program: error while loading shared libraries: libgcc_s.so.1: cannot open shared object file: No such file or directory

Мой вопрос: есть ли способ запустить программу без установки g cc -multilib (без sudo)? Я подумал, что, возможно, я мог бы загрузить g cc -multilib локально и указать путь при выполнении, но я не знаю как.

1 Ответ

0 голосов
/ 25 февраля 2020

В зависимости от того, как вы скомпилировали свою программу и в какой системе она запущена, вы должны быть в состоянии указать системе загружать / находить дополнительные библиотеки в указанном каталоге c, используя LD_LIBRARY_PATH .

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/your/custom/path/

Из справочной страницы ld.so

LD_LIBRARY_PATH

          A list of directories in which to search for ELF libraries at
          execution time.  The items in the list are separated by either
          colons or semicolons, and there is no support for escaping
          either separator.

          This variable is ignored in secure-execution mode.

          Within the pathnames specified in LD_LIBRARY_PATH, the dynamic
          linker expands the tokens $ORIGIN, $LIB, and $PLATFORM (or the
          versions using curly braces around the names) as described
          above in Rpath token expansion.  Thus, for example, the fol‐
          lowing would cause a library to be searched for in either the
          lib or lib64 subdirectory below the directory containing the
          program to be executed:

              $ LD_LIBRARY_PATH='$ORIGIN/$LIB' prog

          (Note the use of single quotes, which prevent expansion of
          $ORIGIN and $LIB as shell variables!)

Здесь из сообщения об ошибке кажется, что вы пытаетесь запустить 32-разрядный двоичный файл в 64-разрядной системе. Добавление правильных 32-битных библиотек должно позволить вам запустить вашу программу.

Другой вариант - просто скомпилировать ваш двоичный файл для 64-битной системы. Но это может быть проблематично c, если вы не работаете в родной 64-битной системе и, вероятно, вынудите вас кросс-компилировать .

...