LINUX.ORG.RU

Формат бинарника


0

0

Есть два бинарника, вот результаты команды file:

ELF 32-bit LSB executable, ARM, version 1 (ARM), dynamically linked

ELF 32-bit LSB executable, ARM, version 1 (SYSV), dynamically linked

Первый запускается, второй нет - пишет файл не найден. Чем они отличаются ? И что нужно делать чтобы запускался и второй с (SYSV) ?

если пишут что файл не найден, значит есть несоответствие в libc или ABI libc

Sylvia ★★★★★ ()

Извините, а chmod +x не пробовали?

ShTH ()
Ответ на: комментарий от Sylvia

ps: чтобы запустить второй, лучше его пересобрать для той системы где собрались запускать,
потому что установка дополнительной libc с другой ABI может и не получиться, зависит от того какие пути оно будет использовать, да и не стоит разводить помойку на embedded системе, там итак места мало наверное

Sylvia ★★★★★ ()
Ответ на: комментарий от Sylvia

Да, я пробовал включать в ядре EABI - не помогло. Правда установленный libc оставался конечно без изменений. А есть способ найти это соответствие ?

chipmunk ()
Ответ на: комментарий от Sylvia

у меня эмулятор qemu-arm. Целевой embedded системы нет, она есть у клиента и он мне прислал этот второй бинарник. Когда я пытаюсь откомпилировать простейший пример на своей системе - получаю формат первого бинарника. И не знаю как добиться чтобы мой эмулятор давал второй формат и запускал его.

chipmunk ()
Ответ на: комментарий от chipmunk

тут связка ядро+libc (+binutils+gcc)
с поддержкой чего уж собрано - такие бинарники и получатся,
к сожалению могу подсказать только это )

Sylvia ★★★★★ ()
Ответ на: комментарий от Sylvia

А если бинарник не сложный, можно попробовать натравить на него gdb вроде бы.

ShTH ()

Я дико извиняюсь, а файловая система, на которой лежит второй бинарь, не смонтирована случайно с опцией noexec?

Xenesz ★★★★ ()

> Чем они отличаются ? И что нужно делать чтобы запускался и второй с (SYSV) ?

пересобрать нужные либы с нужными флагами

http://wiki.debian.org/ArmEabiPort

ananas ★★★★★ ()
Ответ на: комментарий от ananas

спасибо всем большое, просветление наступило :) Я то устанавливаю бинарники arm-linux по сети, а нужно я так понимаю всё самим компилировать тем же toolchain'ом (OSELAS) которым я научился собирать бинарник второго формата.

chipmunk ()
Ответ на: комментарий от alex_custov

супер! теперь чётко ясна суть:

первый бинарник - [Requesting program interpreter: /lib/ld-linux.so.2] второй бинарник - [Requesting program interpreter: /lib/ld-linux.so.3] его то и нету в системе

странно, что я устанавливал по сети и получил не самую свежую версию дистрибутива, использовал вот это руководство - http://www.aurel32.net/info/debian_arm_qemu.php

спасибо :)

chipmunk ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.