Не является динамическим исполняемым файлом

Обновлено: 07.07.2024

Я могу видеть файл, его разрешение установлено как исполняемый. Не понимаю почему?

Вот больше информации: это XLE!

Как видите, переменная окружения правильно установлена, поскольку она знает, где искать команду xle, но ..

Извлеките команду readelf -l xle

* Какая * программа? Что ты пытаешься сделать? Можем ли мы увидеть что-то, что показывает вашу ошибку в терминале? Дайте нам хотя бы `ls -la | Grep `. 9 лет назад 3 Как ты это делаешь? Работает ли `. / Programname`? Если это так, а `programname` нет, то, возможно,` .` нет в вашей переменной PATH. Matt Lacey 9 лет назад 0 Вопрос обновлен! Я пытался ./xle все та же ошибка! 9 лет назад 0

/ Рабочий стол / XLE / bin $ ls -la | grep xle -rwxrwxr-x 1 yasaman yasaman 5050490 2010-11-05 08:27 xle -rw-rw-r-- 1 yasaman yasaman 32 2010-11-05 08:27 xledate.tcl 9 лет назад 0

@sarnold Готово! Не могли бы вы взглянуть на это? 9 лет назад 0 @Yasaman: Я пытался загрузить копию для себя, но им, очевидно, требуется какая-то _подпись_, прежде чем они дадут имя пользователя / пароль. Вздох. sarnold 9 лет назад 0 @sarnold Да! Жаль, что вы должны иметь лицензию, чтобы загрузить это! Тогда ты не представляешь, что мне с этим делать? Это как-то связано с тем, что я запускаю этот linux в виртуальной коробке? [Это единственное, что я могу думать сейчас] 9 лет назад 0 VirtualBox не должен влиять на это; вам, возможно, придется полагаться на PARC, чтобы поддержать вас в этой загрузке, поскольку другим даже трудно взглянуть на нее. :( sarnold 9 лет назад 0 @sarnold Большое спасибо за ваше время :) 9 лет назад 0 @sarnold Employed Russian добавил несколько полезных комментариев, хотя я пока не могу запустить программу. 9 лет назад 0

1 ответ на вопрос

/Desktop$ xle
bash: /home/yasaman/Desktop/XLE/bin/xle: No such file or directory

Это ясно показывает, что файл находится у вас PATH и имеет права на выполнение.

Наиболее частой причиной ENOENT ошибки в этих условиях является отсутствующий или поврежденный динамический загрузчик. not a dynamic executable Ошибка из ldd является еще одним свидетельством того, что это то, что происходит.

Когда ядро ​​является execve динамическим исполняемым файлом, оно фактически не запускает сам исполняемый файл. Вместо этого он запускает динамический загрузчик, и загрузчик фактически организует запуск исполняемого файла после сопоставления всех необходимых общих библиотек.

Что readelf -l xle говорит? Существует ли путь, указанный в INTERP сегменте? Это исполняемый файл?

Так как файл представляет собой 32-битный ELF исполняемый файл, вы, возможно, на 64-битной только системы? Если это так, вам нужно установить libc6-i386 пакет.

Библиотека представляет собой набор ресурсов, таких как подпрограммы / функции, классы, значения или спецификации типов.

Существует два типа библиотек:

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

Динамические библиотеки: динамические библиотеки для небольших программ по размеру. Эти библиотеки заканчиваются расширением .so. Еще одна особенность использования динамической компоновки при запуске многих программ. Она может использовать одну копию библиотеки, а не занимать память многими копиями одного и того же кода , Таким образом, последние программы используют динамическое связывание. В этой статье мы рассмотрим команды ldd, которые используются для управления разделяемыми библиотеками.

Общие библиотеки

Когда мы создаем программу, нам нужно много фрагментов кода, которые кто-то написал для выполнения обычных или специализированных функций в наших целях.

Эти фрагменты кода хранятся в разделяемых библиотеках.

Чтобы использовать их, мы связываем их с нашим кодом либо при создании программы, либо при запуске программы.

Синтаксис и параметры

Команда ldd выводит зависимости общих объектов. Синтаксис команды:

Мы можем использовать команды ldd с опциями

  • -v: вывести всю информацию.
  • -d: перемещение данных процесса.
  • -r: данные процесса и перемещение функций.
  • -u: вывод неиспользуемых прямых зависимостей.

1) Отобразить зависимости команды

Мы будем отображать зависимости команды cp.

2) Отобразить зависимости команды с деталями

Мы будем отображать зависимости команды cp с более подробной информацией, используя опцию -v.

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

Мы можем отобразить неиспользуемые прямые зависимости команды cp с использованием опции -u.

4) Работа только с динамическими исполняемыми файлами

Мы выведем ldd только для динамических исполняемых файлов с использованием опции -r.

5) ldd со стандартной исполняемой командой

Когда мы пытаемся выполнить ldd со стандартной командой, например ls, нам нужен полный путь к динамическому исполняемому файлу.

Мы видим, что ldd утверждает, что он не может найти ls.

Но с абсолютным путем ldd работал нормально.

6) Установите, что данный исполняемый демон поддерживает TCP Wrapper

Чтобы определить, поддерживает ли данный исполняемый демона TCP Wrapper или нет, выполните следующую команду.

Результат показывает, что демон OpenSSH (sshd) поддерживает TCP Wrapper.

7) ldd с отсутствующей зависимостью

Мы можем использовать команду ldd, когда исполняемый файл выходит из строя из-за отсутствующей зависимости.

Как только мы обнаружили недостающую зависимость, мы можем установить ее или обновить кеш командой ldconfig.

Мы будем выполнять перемещение и сообщать о любых недостающих объектах (только ELF), набрав команду ниже.

Мы будем выполнять перемещение для объектов и функций данных и сообщать о любых недостающих объектах или функциях (только для ELF), набрав команду ниже.

Я думаю, что лучший выбор как сервер, ОС является CentOS даже при том, что Redhat лучше! CentOS является производной от Redhat, это получает Redhat, изменил его немного (на изменении в ядре) и распределил под именем CentOS. Таким образом, эти два - то же. Большое преимущество на CentOS состоит в том, что ее свободной и большим преимуществом Redhat является его обширная и долговременная поддержка. Таким образом, если Вы хотите установить сеть для малого бизнеса или чего-то, что подобный CenOS является лучшим, но если Вы ищете сервер ОС, которая может обработать крупномасштабную или корпоративную сеть, лучшее, кажется, Redhat, Но помнить, что Redhat RHEL является дорогим.

о SUSE: OpenSUSE хорош, мощен, устойчив, безопасен, свободен, ориентирован на сети (!!) но весь уровень понижаются по сравнению с этими упомянутыми выше двумя.

о Ubntu (полученный из Debian): Это испытывает недостаток во всех функциях, которые должен иметь сервер!

Ошибка здесь происходила из-за не наличия достаточного количества RAM на VirtualMachine. Выполнение strace ./programname обозначенный, что программа закрывалась так же, как она начала работать, прежде, чем загружать любую из библиотек. Увеличение суммы доступной RAM гарантировало, что программа могла работать.

Полезные ответы

Были некоторые полезные ответы от других а именно, @slm, кто обеспечил полезные команды, чтобы проверить, что каждая из библиотек существовала, и @lgeorget кто, предлагая попытку strace команда.

Обычно в системе CentOS это - просто вопрос выполнения вкусной команды как так:

Можно работать назад от исходной системы как так:

В том выводе Вы видите где моя копия /bin/ls берет общие .so библиотеки для, говорит пример, librt.so.1 , который, оказывается, расположен здесь: /lib64/librt.so.1 .

Зная это, в исходной системе, можно выполнить эту команду для выяснения то, что пакет обеспечивает этой библиотеке:

Таким образом, пакет называют glibc-2.13-2.x86_64 . Таким образом для установки его Вы сделали бы это:

Хочу собрать jailkit, но выпадает ошибка, хотя все необходимые пакеты стоят.
Собираю так. Предварительно установил пакеты:

Потом приступил к скачиванию, распаковке и сборке:


Вот такую ошибку получаю:


Не понимаю куда копать, пните пожалуйста.
Всем спасибо за потраченное время.
  • Вопрос задан более трёх лет назад
  • 2241 просмотр

Простой 1 комментарий

castomi

Забавно что 2 человека проголосовало что вопрос простой. А решения вопроса так и нет)) Видимо он прям слишком простой)

Что говорят следующие две команды?

Что говорят следующие команды?

castomi

Прекрасно. У вас явно поломан /usr/bin/as
Можно продолжать разбираться с этим, тогда следующий вопрос:
Что говорят следующие команды:


А можно сразу идти переустанавливать binutils:
apt-get install --reinstall binutils

castomi

egor_nullptr

castomi

Добавил этот файл в вопрос. Я смотрел туда, но что-то мне это не помогло.

egor_nullptr

Вот тут он пробует скомпилировать проверочный файл и у него не получается. Может вы всё это проделываете в директории, в которую нельзя писать?

Читайте также: