Не могу выполнить двоичный файл в Ubuntu
Я не могу поверить, что я спрашиваю это... ясно, что я в редкой форме сегодня.
Попытка настроить новый компьютер с Ubuntu и просто загрузил p4 (клиент Perforce для командной строки). Это загрузка одного файла - статически связанный двоичный исполняемый файл, поэтому я просто сделал:
wget http://www.perforce.com/downloads/perforce/r09.2/bin.linux26x86/p4
... прямо в /usr/bin. Достаточно просто. Кроме:
root@aj-ubuntu:/usr/bin# ll p4
-rwxr-xr-x 1 root root 748808 2010-02-11 16:54 p4
root@aj-ubuntu:/usr/bin# ./p4
-su: ./p4: No such file or directory
root@aj-ubuntu:/usr/bin# /usr/bin/p4
-su: /usr/bin/p4: No such file or directory
Что в мире происходит здесь...?!
Заранее спасибо за ваши насмешки:)
-Л
7 ответов
Хорошо, я получил файл с вашего URL (его размер меньше 800 КБ) и попробовал это (с удобного терминала Cygwin).
$ file p4
p4: исполняемый ELB 32-разрядный LSB, Intel 80386, версия 1 (SYSV), для GNU/Linux 2.2.5, динамически связанный (использует общие библиотеки), раздетый
Но вы ожидаете, что он будет статически связан, почему?
Обновление: просто чтобы быть уверенным, пожалуйста, подтвердите, что вы используете 32-битную Ubuntu.
Если вы используете 64-битную систему, вам, вероятно, понадобитсяia32-libs
пакет.
Вот что происходит, когда ваш исполняемый файл недействителен, это может быть для другой архитектуры или для другого ядра. Или просто поврежденный заголовок ELF.
Интерпретатор readelf -a /usr/bin/p4 | grep interpreter
указывает на, вероятно, отсутствует. Вероятно, он поставляется в какой-то компат-упаковке, на что указывают другие комментаторы.
Делать ls -lb p4*
чтобы увидеть, есть ли какие-нибудь случайные символы в имени файла.
Пытаться file ./p4
и посмотрим, что там написано. Скорее всего, у вас не установлены нужные библиотеки для его запуска (поэтому он вообще не может загрузить бинарный файл - у вас возникают те же проблемы с Windows, если у вас нет нужных библиотек)
Статический исполняемый файл не зависит от библиотек.... ему нужно совместимое ядро, а именно то, которое имеет те же системные вызовы, на которых оно было построено.
p4 - клиент перформанс, а ваш построен на ядре v2.2.5 10 лет назад...
он будет работать с (долго не поддерживаемыми) ядрами версии 2.2,
он может работать с ядром 2.4 (месяц без поддержки),
он не будет работать с ядрами 2.6 и 3.x (все еще поддерживается)
Они делают версию для клиентов 2.6 http://www.perforce.com/downloads/complete_list доступной для ваших нужд.