Проблемы с исполняемым файлом: файл не найден после использования chmod для исправления разрешений [дубликат]

На этот вопрос уже есть ответ здесь:

Я загрузил и извлек двоичный файл Linux для планировщика PDDL blackbox и пытаюсь запустить файл blackbox . Я перешел в каталог с файлом и попробовал ./ blackbox , что дало мне ошибку прав доступа. Ничего страшного, просто запустите chmod 755 blackbox , чтобы дать ему права на исполнение. Но затем, когда я снова пробую ./ blackbox , я получаю следующую ошибку:

bash: ./blackbox: No such file or directory

То же самое происходит, когда я передаю аргументы команды. Когда я запускаю ls -l , я вижу файл blackbox , и у него есть разрешения -rwxr-xr-x , поэтому я не уверен, почему он "потеря" файла.

Я использую Ubuntu 14.04 как двойную загрузку с Windows 7, если это важно.

РЕДАКТИРОВАТЬ: Я нашел полезный вопрос по суперпользователю, который частично меня туда привел. Я запустил readelf -l ./blackbox | grep ld-linux , чтобы найти то, что мне нужно, затем выполнил поиск содержимого пакета, чтобы узнать, что мне нужен пакет libc6-i386 .Теперь я могу сделать следующее:

user@ubuntu:~/path$ ./blackbox 
./blackbox: error while loading shared libraries: libstdc++.so.6: cannot open shared object file: No such file or directory
user@ubuntu:~/path$ ldd blackbox 
    linux-gate.so.1 =>  (0xf77af000)
    libstdc++.so.6 => not found
    libm.so.6 => /lib32/libm.so.6 (0xf774f000)
    libgcc_s.so.1 => not found
    libc.so.6 => /lib32/libc.so.6 (0xf75a4000)
    /lib/ld-linux.so.2 (0xf77b0000)
2
задан 20 March 2017 в 13:18

1 ответ

Складывается blackbox исполняемый файл был 32-разрядной программой, и я выполняю 64-разрядную ОС. Вот (несколько hacky) шаги, которые я сделал для решения этого вопроса (частично вел хронику в этом вопросе на Суперпользователе):

  • uname -m сказанный меня у меня есть 64-разрядная ОС, но file blackbox сказанный меня, что этот exe был 32-разрядным.
  • ldd blackbox (странно) сказанный меня, что файл не был динамическим исполняемым файлом, даже при том, что я также видел это от file. Попытка readelf -l ./blackbox | grep ld-linux сказанный меня [Requesting program interpreter: /lib/ld-linux.so.2], который был общей библиотекой, которую я не имел в том местоположении.
  • sudo apt-get install libc6-i386 получить тот файл библиотеки (нашел, что с пакетом ищут на packages.ubuntu.com).
  • Теперь ldd дал мне вывод, и я отсутствовал libstdc++.so.6 и libgcc_s.so.1 (см. мое редактирование), таким образом, я должен был получить эти файлы.
  • После немного большего количества поиска pacakage я нашел что gcc-snapshot пакет имел эти два файла, которые я пропускал. Это - вероятно, крупный молоток для моего крошечного гвоздя, и существуют, вероятно, лучшие решения, но sudo apt-get install gcc-snapshot получил меня файлы, в которых я нуждался.
  • После выполнения ldd снова, это решило вопрос с libgcc_s.so.1, но libstdc++.so.6 все еще не был найден. Я закончил тем, что шел в место где ldd найденный libgcc_s.so.1 и выполнение sudo ln -s /usr/lib/gcc-snapshot/lib32/libstdc++.so.6 libstdc++.so.6 получить символьную ссылку на недавно установленный файл.
1
ответ дан 20 March 2017 в 23:18

Другие вопросы по тегам:

Похожие вопросы: