- 3345 megtekintés
Hozzászólások
Asszem akkor szokott mondani ilyet, amikor a kernel által nem futtatható a bináris, pl. architektúra-eltérés miatt. readelf(1) (vagy esetleg file(1)) mit mond?
- A hozzászóláshoz be kell jelentkezni
A readelf -a olyan hosszu, hogy http://pastebin.com/3yCzNBaQ
A file:
JLinkGDBServer: ELF 32-bit LSB executable, ARM, version 1, dynamically linked (uses shared libs), stripped
Sajnos en nem talalok benne olyat, ami elorebb vinne :-(
Ez az architektura kulonbseg bennem is felotlott, de nem tudom hogyan tudnam kideriteni. Vagy esetleg meg little/big endian kulonbseg, bar talan mind a Raspbian mind a JLink little endian.
/sza2
- A hozzászóláshoz be kell jelentkezni
strace -eopen -f
Így próbáld, kicsit kevesebb lesz a "zaj" és a subprocess-ek is megjelennek az outputban.
Még az sem zárható ki, hogy elvileg támogatott az architektúrád, de dinamikusan linkelt a binárisod és olyan könyvtárat keres ami még/már nincs a rendszeredben.
- A hozzászóláshoz be kell jelentkezni
# strace -e open -f ./JLinkGDBServer
strace: exec: No such file or directory
Azt hiszem a futtahato allomanyok statikusan linkeltek:
# ldd ./JLinkGDBServer
not a dynamic executable
/sza2
- A hozzászóláshoz be kell jelentkezni
> JLinkGDBServer: ELF 32-bit LSB executable, ARM, version 1, dynamically linked (uses shared libs), stripped
Hasonlítsd kérlek össze más, működő binárisok kimenetével...
A "uses shared libs" még érdekes lehet. ldd mit mond? Megvan minden szükséges lib?
- A hozzászóláshoz be kell jelentkezni
A hello world-om ezt irja:
# file hello
hello: ELF 32-bit LSB executable, ARM, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.26, BuildID[sha1]=0x94bf7fb48b2cc0de890cb4736b63ab8519e0cfbc, not stripped
A csomagnak (.tgz) resze egy libjlinkarm.so.4.84.6 (meg egy symlink libjlinkarm.so.4), probalkoztam LD-PRELOAD-dal, illetve utana betettem ezt a ket file-t a "/usr/local/lib"-be, elvileg elerheto is:
# ldconfig -v | grep libjlinkarm.so.4.84.6
ldconfig: Path `/lib/arm-linux-gnueabihf' given more than once
ldconfig: Path `/usr/lib/arm-linux-gnueabihf' given more than once
libjlinkarm.so.4 -> libjlinkarm.so.4.84.6
Ami az ldd-t illeti:
# ldd ./JLinkGDBServer
not a dynamic executable
Azt gondolnam, ebben, ha hasznalni szeretne a libjlinkarm-ot, akkor benne kellene lenni. De lehet, hogy teljesen statikus a futtathato allomany, es a .so csak azert van, hogy lehessen csinalni sajat programokat, amik hasznalhatjak a shared object fuggvenyeit.
/sza2
- A hozzászóláshoz be kell jelentkezni
Tudom, triviális, így bocs a kérdésért... Van futtatási joga a file-ra annak, aki futtatni próbálja?
tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE- A hozzászóláshoz be kell jelentkezni
Igen, termeszetesen van, minden 755, egyelore root-kent probalom futtatni.
/sza2
- A hozzászóláshoz be kell jelentkezni
A readelf kimenetebol:
Program Headers:
Type Offset VirtAddr PhysAddr FileSiz MemSiz Flg Align
PHDR 0x000034 0x00008034 0x00008034 0x000c0 0x000c0 R E 0x4
INTERP 0x0000f4 0x000080f4 0x000080f4 0x00014 0x00014 R 0x1
[Requesting program interpreter: /lib/ld-uClibc.so.0]
LOAD 0x000000 0x00008000 0x00008000 0x59904 0x59904 R E 0x8000
LOAD 0x059904 0x00069904 0x00069904 0x032ac 0x32108 RW 0x8000
DYNAMIC 0x05a1e8 0x0006a1e8 0x0006a1e8 0x000f0 0x000f0 RW 0x4
GNU_STACK 0x000000 0x00000000 0x00000000 0x00000 0x00000 RWE 0x4
A piros resz nem lehet gond?
/sza2
- A hozzászóláshoz be kell jelentkezni
Szerintem csak akkor, ha nincs olyanod. ;)
tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE- A hozzászóláshoz be kell jelentkezni
Arra gondolok, hogy a Raspberry nem uClibc-s, ez a program meg lehet, hogy igen. Csak nem tudom, hogy ez, ha gond, athidalhato-e.
/sza2
- A hozzászóláshoz be kell jelentkezni
Lehet osszefugges, mert felganyoltam egy libuclibc0_0.9.9-cvs20020221-2_arm.deb csomagot, mostmar ez a hibauzenet:
# ./JLinkGDBServer
./JLinkGDBServer: can't load library 'librt.so.0'
/sza2
- A hozzászóláshoz be kell jelentkezni