Не могу выполнить двоичный файл в Ubuntu

11318
AJ.

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

Попытка настроить новый компьютер с 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 

Что в мире происходит здесь ...?!

Заранее спасибо за ваши насмешки :)

4
Измените название Чувак ..: - \ Bibhas 14 лет назад 0
@Bibhas - достаточно справедливо. AJ. 14 лет назад 0
Обновление: просто чтобы убедиться, пожалуйста, подтвердите, что вы используете 32-битную Ubuntu. Если вы используете 64-битную систему, вам, вероятно, понадобится пакет 'ia32-libs'. спасибо за подсказку, ты просто спасешь меня от 8 часов боли в аду :) 12 лет назад 0

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

4
nik

Хорошо, я получил файл с вашего URL (его размер меньше 800 КБ) и попробовал это (с удобного терминала Cygwin).

$ file p4
p4: исполняемый 32-разрядный LSB ELF, Intel 80386, версия 1 (SYSV), для GNU / Linux 2.2.5, динамически связанный (использует общие библиотеки), удаленный

Но вы ожидаете, что он будет статически связан, почему?


Обновление: просто чтобы убедиться, пожалуйста, подтвердите, что вы используете 32-битную Ubuntu.
Если вы используете 64-битную систему, вам, вероятно, понадобится ia32-libsпакет ' '.

@nik - см. мое примечание к @gbjbaanb ниже. Я попытался «ldd», и все, что он сказал, было: «не динамический исполняемый файл». Итак, я предположил, что это статически связано. AJ. 14 лет назад 0
подтвердите, это то, что `file` дает и в моей системе. В данный момент у меня нет работающей системы Linux, поэтому я не могу проверить `ldd`. quack quixote 14 лет назад 1
@nik - твое обновление прибило его. Я использую 64-битную версию Ubuntu, но бинарный файл был создан для 32-битной архитектуры. я установил ia32-libs и это исправило, спасибо. AJ. 14 лет назад 2
1
gbjbaanb

попробуй file ./p4и посмотри, что там написано. Скорее всего, у вас не установлены нужные библиотеки для его запуска (поэтому он вообще не может загрузить бинарный файл - у вас возникают те же проблемы с Windows, если у вас нет нужных библиотек)

@gbjbaanb - я попробовал «ldd», и все, что он сказал, было: «не динамический исполняемый файл». Я не знал о «файле», хотя ... я попробую это. AJ. 14 лет назад 0
1
Dennis Williamson

Сделайте, ls -lb p4*чтобы увидеть, есть ли какие-нибудь случайные символы в имени файла.

1
visudo

Вот что происходит, когда ваш исполняемый файл недействителен, это может быть для другой архитектуры или для другого ядра. Или просто поврежденный заголовок ELF.

1
al.

Интептер readelf -a /usr/bin/p4 | grep interpreterуказывает на, вероятно, отсутствует. Вероятно, он поставляется в какой-то компат-упаковке, на что указывают другие комментаторы.

вывод: `[Запрашивающий интерпретатор программы: /lib/ld-linux.so.2]` ... quack quixote 14 лет назад 0
1
Quandary

chmod + x / usr / bin / p4

0
ZaB

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

p4 - клиент перформанс, а ваш построен на ядре v2.2.5 10 лет назад ...

он будет работать с (долго не поддерживается) ядром версии 2.2,

он может работать с ядром 2.4 (месяц без поддержки),

он не будет работать с ядрами 2.6 и 3.x (все еще поддерживается)

Они делают версию для клиентов 2.6 http://www.perforce.com/downloads/complete_list доступной для ваших нужд.