rsync 이후 실행 파일이 "실제로 존재"하지 않습니다.

rsync 이후 실행 파일이 "실제로 존재"하지 않습니다.

두 개의 바이너리를 복사해야 하는 다음 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아키텍처를 포함한 세부 정보가 표시됩니다.

당신이 복사했을 가능성이 있습니다

  1. 64비트 시스템에 대한 32비트 파일 또는 vv
  2. Intel에서 ARM 또는 vv로
  3. 실행 파일에서 참조하는 동적으로 연결된 라이브러리가 하나 이상 누락되었습니다. ldd german-numbers필요한 라이브러리 목록을 보려면 사용하세요 .

관련 정보