Ich versuche, ein neues Softwarepaket unter openwrt mit opkg zu installieren, und die Installation war erfolgreich, und wir können die sehen Binärdatei existiert wirklich in der/usr/bin, und ich habe die lld-Prüfung trird, aber stellt sich heraus, die gleiche. wie unten:ELF-Datei existiert in/usr/bin, aber stellt sich heraus "-ash: file: not found"
[email protected] /usr/bin [#]# opkg files cfdisk
Package cfdisk (2.25.2-4) is installed on root and has the following files:
/usr/sbin/cfdisk
[email protected] /usr/bin [#]# ls /usr/sbin/
adjtimex arping ethtool iptables-save mkfs.ext3 pppd telnetd
airbase-ng besside-ng fdisk iw mkfs.ext4 rate.awk uhttpd
aireplay-ng brctl hostapd iwconfig modinfo rmmod wpa_supplicant
airmon-ng cfdisk insmod iwlist modprobe samba_multicall wpad
airmon-zc chroot ip6tables iwpriv nmbd smbd xtables-multi
airodump-ng crond ip6tables-restore lsmod ntpclient smbpasswd
airodump-ng-oui-update dnsmasq ip6tables-save miniupnpd ntpd swapoff
airserv-ng dropbear iptables mke2fs odhcp6c swapon
airtun-ng e2fsck iptables-restore mkfs.ext2 pdnsd tc
[email protected] /usr/bin [#]# cfdisk
-ash: cfdisk: not found
[email protected] /usr/bin [#]# ./cfdisk
-ash: ./cfdisk: not found
[email protected] /usr/bin [#]# ldd cfdisk
-ash: cfdisk: not found
[email protected] /usr/bin [#]# ldd id
libcrypt.so.0 => /lib/libcrypt.so.0 (0x77898000)
libm.so.0 => /lib/libm.so.0 (0x77872000)
libgcc_s.so.1 => /lib/libgcc_s.so.1 (0x7784e000)
libc.so.0 => /lib/libc.so.0 (0x777e2000)
ld-uClibc.so.0 => /lib/ld-uClibc.so.0 (0x778bc000)
[email protected] /usr/bin [#]# export
export HOME='/root'
export LOGNAME='root'
export OLDPWD='/usr'
export PATH='/usr/bin:/usr/sbin:/bin:/sbin'
export PS1='\[\033[35;1m\]\u\[\033[0m\]@\[\033[31;1m\]\h \[\033[32;1m\]$PWD\[\033[0m\] [\[\033[35m\]\#\[\033[0m\]]\[\033[31m\]\$\[\033[0m\] '
export PWD='/usr/bin'
export SHELL='/bin/ash'
export SHLVL='1'
export SSH_CONNECTION='192.168.1.152 29105 192.168.1.1 22'
export SSH_TTY='/dev/pts/0'
export TERM='xterm'
export USER='root'
[email protected] /usr/bin [#]#
danke.
Ihre cfdisk-Binärdatei ist wahrscheinlich mit einem dynamischen Linker verknüpft, der nicht existiert (dh etwas anderes als ld-uClibc.so.0) Führen Sie 'readelf -a' auf Ihrer Binärdatei aus, suchen Sie nach dem" Programminterpreter " – nos
danke @ nein, das readelf hat noch nicht installiert..kann ich diese datei in mein ubuntu-system kopieren, das readelf hat, dann check es aus? und ich denke, dass es wahrscheinlich durch linux version verursacht wurde. übrigens, die "ld-uClibc.so.0 "ist von der" id "als 'lld id' Befehl nur für die Vergleiche mit' ldd cfdisk'. – coder
Sicher, führe readelf auf der Binärdatei, wo immer du willst. Ich sage, da 'ldd id'' ld-uClibc.so.0' anzeigt, dann existiert diese bestimmte Bibliothek. und wahrscheinlich verwendet Ihre cfdisk das nicht, sondern einen anderen dynamischen Linker, der auf Ihrem Rechner nicht existiert. Möglicherweise weil cfdisk mit einer anderen Version von uClibc oder einer anderen C-Bibliothek kompiliert wurde. – nos