Не могу выполнить двоичный файл в 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 указывает на, вероятно, отсутствует. Вероятно, он поставляется в какой-то компат-упаковке, на что указывают другие комментаторы.

chmod + x / usr / bin / p4

Делать 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 доступной для ваших нужд.

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