다음 rsync 명령(정확한 경로와 호스트를 난독화)을 실행하면 두 개의 바이너리가 복사됩니다.
rsync -e "ssh -p 443" -a --info=progress2 -z user@remote:/srv/cgi-bin/ .
user@remotes's password:
5,970,149 100% 6.78MB/s 0:00:00 (xfr#2, to-chk=0/3)
모든 계정에서 명령이 성공적으로 완료되었습니다.
root@rapunzel:/s/h/p/cgi-bin # >>> ll
total 5.7M
-rwxrwxr-x 1 marcus marcus 3.9M Sep 10 2014 german-numbers
-rwxrwxr-x 1 marcus marcus 1.9M Sep 10 2014 german-numbers-cgi
하지만 바이너리를 실행하려고 하면 다음 오류가 발생합니다.
root@rapunzel:/s/h/p/cgi-bin # >>> ./german-numbers
zsh: no such file or directory: ./german-numbers
따라서 바이너리가 "정확히 존재"하지 않는 것처럼 보이지만 반면에 명확하게 열고 읽을 수 있습니다.
root@rapunzel:/s/h/p/cgi-bin # >>> head -n1 ./german-numbers
ELF04��'4('$444444�=%�=%@%����t��I%������HHHDDP�tdT;%T�T�llQ�td/lib/ld-linux.so.2GNUGNU,B�]2�h$���ɢҒ�S'��� @�P
����ݣkĉ����|(�CE���K��8��]���?�������g���FcH▒3
�_��,�%}�??��>fM7�sn�������F����A{S3a��������,b��)�P▒h�wza�S~�y��*-��y�L
�����m���<�lp�6����W$%xZ�G��X{��V���� �!� �!�t����@��ԅ����I��ԅ��� ��Ș
��librt.so.1__gmon_start___Jv_RegisterClasseslibutil.so.1libdl.so.2libgmp.so.3__gmpz_tdiv_qr__gmpz_and__gmpz_tdiv_q__gmpz_tdiv_r__gmpz_fdiv_qr__gmpn_gcd_1__gmpz_fdiv_q__gmpz_fdiv_r__gmpz_ior__gmpz_mul_2exp__gmp_set_memory_functions_fini__gmpz_sub__gmpz_xor__gmpz_com__gmpz_gcd__gmpz_fdiv_q_2exp__gmpz_init__gmpz_mul__gmpz_divexact__gmpn_cmp__gmpz_addclock_gettimetimer_deletetimer_settimetimer_createdlopendlerrordlsymlibm.so.6modfldexplibc.so.6_IO_stdin_usedepoll_createfflushstrcpysprintfsetlocalefopenstrncmpftruncatestrrchrregexecpipeftruncate64mmap64siginterruptepoll_waitftellstrncpyforksigprocmaskregfreeunlinkpthread_mutex_lockselectmkdirreallocabortgetpidkillstrdupmkstempstrtodstrtolisattysetmntentmmapctime_rfeoffgetscallocstrlensigemptysetmemset__errno_locationtcsetattrfseekgetpagesizeeventfddup2pause__fxstat64sigaddsetpthread_mutex_unlockstdoutfputcgetrusagefputsregerrormemcpyfclosemprotectmallocraisegetgid__lxstat64nl_langinfohasmntopt__xstat64getenv__ctype_b_locregcompstderrsigdelsetmunmapgetuidgetegid__sysv_signalpthread_mutex_initfwritefreadgettimeofdayiconv_closesigactionepoll_ctlstatfsgeteuidlseek64strchrendmntentutimegetlineiconviconv_opentcgetattrbsearchfcntlgetmntent_rmemmovefopen64access_IO_getcstrcmpstrerror__libc_start_mainvfprintfsysconf__environ__cxa_atexit_edata__bss_start_endGLIBC_2.1GLIBC_2.0GLIBC_2.2GLIBC_2.3GLIBC_2.7GLIBC_2.3.4GLIBC_2.3.2GLIBC_2.1.3
왜 zsh(및 기록상: bash )가 파일을 찾을 수 없는지 모르겠습니다. 아는 사람 있나요?
답변1
64비트 시스템에서 32비트 실행 파일을 실행하려고 합니다. 이렇게 하려면 32비트 라이브러리를 설치해야 합니다. 즉, 시스템 multilib를 만들어야 합니다.
또는 rsync를 통해 소스 코드를 보내 재컴파일해 보세요.
답변2
file german-numbers
및의 출력에는 uname -a
스키마를 포함한 세부정보가 표시됩니다.
복사했을 가능성이 높습니다.
- 32비트 파일을 64비트 시스템 또는 vv로
- 인텔에서 ARM 또는 vv로
- 실행 파일이 참조하는 하나 이상의 동적 링크 라이브러리가 누락되었습니다. 다음을 사용하여
ldd german-numbers
필요한 라이브러리 목록을 봅니다.