LINUX.ORG.RU

Не запускаются бинаркики с uClibc


0

0

Есть вот такая проблема, для примера два хелловорлда, один слинкован статично, другой нет, и его не удается запустить,

# ls -l
-rwxr-xr-x 1 root root 58288 Jun 7 2009 arm-hw
-rwxr-xr-x 1 root root 35283 Jun 7 2009 arm-hw-ld
# ./arm-hw-ld
-/bin/sh: ./arm-hw-ld: not found

А вот так должно быть, это -static
# ./arm-hw
Hello Wotld, -333#

Как это понимать? файл есть, а шелл пишет что его нет.
Нашел вот это, там та же проблема,
http://www.linuxquestions.org/questions/showthread.php?p=3478935#post3478935

но, не понятно как там все решилось, какой путь интерпретатора?

Спасибо,

★★

# ldd arm-hw-ld
checking sub-depends for '/lib/libc.so.0'
libc.so.0 => /lib/libc.so.0 (0x00000000)
/lib/ld-uClibc.so.0 => /lib/ld-uClibc.so.0 (0x00000000)
# readelf arm-hw-ld
Type: EXEC (Executable file)
Machine: ARM
Class: ELF32
Data: 2's complement, little endian
Version: 1 (current)
OS/ABI: UNIX - System V
ABI Version: 0
Interpreter: /usr/lib/ld.so.1
Dependancies:
libc.so.0

Вот /usr/lib/ld.so.1 действительно не существует,

# ln -s /lib/ld-uClibc-0.9.30.1.so /usr/lib/ld.so.1
# ./arm-hw-ld
Segmentation fault

Вывод, криво собран toolchain. Как это исправить кто нибудь знает?

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

Думаю у меня target неверно выбрана, но как её выбирать не понятно, arch-vendor-* с первой частью ясно, а дальше нет, если я там укажу напиример uclibc или eabi это подразумевает, что gcc будет собираться с какими то предопределенными настройками? (в gcc/config/arm/ же есть что то такое). Если да, то где весь список поддерживаемых target? Сейчас экпериметирую с этим, и разницы пока не видно.

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

Ну вот сделал TARGET=arm-linux-uclibc все стало нормально, только пришлось наложить softfloat патч на gcc. Но как формируетсь название целевой платформы я так и понял. Какой там сейчас ABI тоже как то не совсем ясно, размер enum == 4, это EABI ? (не зависимо от -mabi=xxx)

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

Sysroot. Эта фича не так давно используется. Ну, судя по LFS'ам и тому же buildroot'у. У меня с ней феерический гемморой несколько раз был.

Если всё ещё не работает, то попробуй svn://uclibc.org/trunk/buildroot.

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

На выбор с полтора десятка процессоров. Ну и можно выбрать между OABI и EABI. И сказать какой софт (вплоть до MPlayer'а) собрать.

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

buildroot тянет кучу всего, что нельзя и не нужно, и у меня не получилось это отключить (странный там какой то menuconfig). К тому же всегда приятнее разробратся и сделать все самому. Я от туда только патчи беру.

Ну и по теме, оказалось, что arm-linux-uclibc (правильно пишется arm-unknown-linux-uclibc) делает OABI бинари. Буду собирать arm-unknown-linux-uclibcgnueabi, нашел это в одной из многочисленных инструкций по сборке toolchain. Странно как то uclibcgnueabi ???

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