LINUX.ORG.RU

uname -m = x86_64, а запускает только 32-битные бинарники

 


0

2

Понадобилось запустить 64-битный бинарник.
Поскольку использую ядро -686-bigmem, то решил загрузится на старом ноуте с livecd.
Первое что нашёл — старый rescue cd. Загрузился. И вот что он выдаёт:

% uname -a
Linux sysresccd 2.6.35-std200-amd64 #2 SMP Fri Dec 31 19:29:52 UTC 2010 x86_64 Intel(R) Celeron(R) CPU 560 @ 2.13GHz GenuineIntel GNU/Linux
% file test64
test64: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.18, not stripped
% ./test64
zsh: no such file or directory: ./test64
При этом
% file test32
test: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.9, not stripped
% ./test32
Hello world!
Почему? Как сделать так что он test64 запустил?

пальцем в небо:

chmod +x test64
В начало исходника написать
#!/bin/bash

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

А зачем тогда вообще есть возможность 64-битное ядро на этом livecd?
Если 64-битные бинарники в нём никак не запустить.

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

Спасибо, не знал про такую штуку. Но, как оказалось, оно только для простых вещей работает, что либо сложное ему не по зубам:

neo@nvh:/tmp/udpxy-1.0.21-2$ qemu-x86_64 /tmp/toolchain-mipsel_gcc4.1.2/bin/mipsel-linux-gcc --version
mipsel-linux-gcc (GCC) 4.1.2
Copyright (C) 2006 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

neo@nvh:/tmp/udpxy-1.0.21-2$ qemu-x86_64 /tmp/toolchain-mipsel_gcc4.1.2/bin/mipsel-linux-gcc -o util/mkdep util/mkdep.c
qemu: uncaught target signal 11 (Segmentation fault) - core dumped
Segmentation fault
mipsel-linux-gcc скомпилен под x86_64. Из-под qemu-x86_64 версию он ещё способен вывести, а вот компилировать, видимо, уже нет.

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

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

uname -m; file /lib/ld-linux.so.2; file /lib/i386-linux-gnu/ld-2.13.so
x86_64
/lib/ld-linux.so.2: symbolic link to `i386-linux-gnu/ld-2.13.so'
/lib/i386-linux-gnu/ld-2.13.so: ELF 32-bit LSB shared object, Intel 80386, version 1 (SYSV), dynamically linked, BuildID[sha1]=0x4f8ee54e7a3cc30fe827fa7d5a9c1ffd01aae367, stripped

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

а какой тогда прок в 64-битном ядре? или типа адресовать больше 4Г памяти можно, но каждому приложению по-прежнему выделяется максимум 4?

marvin_yorke ★★★
()

Да, дело было в юзерспейсе.

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