“Никакой такой файл или каталог” на исполняемом файле, все же файл существует, и ldd сообщает, что все библиотеки представляют

wget только получит документ. Если документ находится в HTML, что Вы хотите, результат парсинга документа.

Вы могли, например, использовать lynx -dump -nolist, если у Вас есть рысь вокруг.

lynx легкий, простой веб-браузер, который имеет -dump функция, использованная для вывода результата процесса парсинга. -nolist избегает списка ссылок в конце, который появится, если страница будет иметь какие-либо гиперссылки.

Как упомянуто @Thor, elinks может использоваться для этого также, поскольку это также имеет a -dump опция (и имеет -no-references опустить список ссылок). Может быть особенно полезно, если Вы идете через некоторое использование сайта - кадры вздоха (MTFBWY).

Кроме того, имейте в виду, что, если страница не является действительно просто C кодом с HTML-тэгами, необходимо будет проверить результат, только чтобы удостовериться, что там существует код не чего иного как C.

13
01.10.2014, 17:42
1 ответ

Это действительно похоже на недостающий загрузчик. Рассказ: динамический загрузчик, ожидаемый программой, отсутствует, и сообщения об ошибках вводят в заблуждение в этом случае. Так как я не думаю, что обсудил это прежде, позвольте мне объяснить соответствующую часть вывода ldd. Большая часть из него constists строк формы library_soname => /path/to/library_file.

/lib/ld-lsb.so.3 => /lib/ld-linux.so.2 (0xb77bd000)

Среди библиотек мы видим что-то, что не является общей библиотекой: это - программа, которая загружает общие библиотеки. Программа запрашивает /lib/ld-lsb.so.3, но ядро не находит его, таким образом, это не сообщает “О таком файле или каталоге”. Все же ldd действительно находит загрузчик, потому что ldd сценарий обертки, который называет трудно кодированный загрузчик в специальной среде, и загрузчик всегда сообщает о своем собственном пути, какой путь загрузчика программа ожидала.

Вы имеете /lib/ld-linux.so.2 в Вашей системе, которая является фактическим стандартным местоположением для загрузчика ELF в системах x86_32 Linux. Программа требует /lib/ld-lsb.so.3, который является местоположением стандарта де-юре.

Установите минимальную поддержку LSB своего распределения, например, lsb-core пакет на Debian. Если Ваше распределение не имеет этого (большинство делает), создайте символьную ссылку /lib/ld-lsb.so.3 -> ld-linux.so.2. В отчаянии можно назвать загрузчик явно: /lib/ld-linux.so.2 ./xls.

20
27.01.2020, 19:53
  • 1
    Действительно, загрузчик - то, что это распечатала бы objdump строка. Я забыл, что это было на самом деле в ldd вывод. Хорошая выгода! –  derobert 22.05.2013, 19:53
  • 2
    Это - точно проблема, которую я видел с вводящим в заблуждение сообщением об ошибке. Одна проблема - то, что 'ldd' не будет работать, если динамический загрузчик не будет присутствовать, потому что это - (на песнях, по крайней мере) сценарий оболочки. –  dajobe 09.12.2015, 23:47
  • 3
    Спасибо за это самое полезное сообщение среди моря сообщений, которые говорят о пропавших без вести 32-разрядного, освобождает в 64-разрядной системе. –  Michael Burr 31.08.2016, 23:24
  • 4
    readelf -a zls | grep "Requesting program interpreter" распечатает загрузчик. –  Kevin Smyth 01.02.2018, 18:35

Теги

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