নির্বাহযোগ্য, তবুও ফাইলের উপস্থিতিতে "এই জাতীয় কোনও ফাইল বা ডিরেক্টরি নেই" এবং উপস্থিত সমস্ত লাইব্রেরি এলডিডি রিপোর্ট করে


13

সুতরাং অন্য কোনও কমান্ড দ্বারা এক্সিকিউটেবল ফাইল বিদ্যমান, তবুও আমি যখন এটি সম্পাদন করার চেষ্টা করি তখন এটি দাবি করে যে এটি সেখানে নেই।

এটি নামের কোনও বিশেষ চরিত্র নয় কারণ আমি এটি "বিড়াল" হলেও এর নামকরণ করেছি। এবং এটি সঠিক আর্কিটেকচারের জন্য বাইনারি বলে মনে হচ্ছে ... "মনে হচ্ছে", আমার মনে হয় প্রশ্নটি হল, আর কী কী তাত ত্রুটি বার্তা নিক্ষেপ করছে ... ফাইলটি সেখানে নেই, কারণ এটি স্পষ্টতই!

ldd xls

    linux-gate.so.1 =>  (0xb77bc000)
    libQtGui.so.4 => /usr/lib/i386-linux-gnu/libQtGui.so.4 (0xb6cc2000)
    libpng12.so.0 => /lib/i386-linux-gnu/libpng12.so.0 (0xb6c98000)
    libSM.so.6 => /usr/lib/i386-linux-gnu/libSM.so.6 (0xb6c8f000)
    libICE.so.6 => /usr/lib/i386-linux-gnu/libICE.so.6 (0xb6c76000)
    libXrender.so.1 => /usr/lib/i386-linux-gnu/libXrender.so.1 (0xb6c6d000)
    libfreetype.so.6 => /usr/lib/i386-linux-gnu/libfreetype.so.6 (0xb6bd1000)
    libfontconfig.so.1 => /usr/lib/i386-linux-gnu/libfontconfig.so.1 (0xb6b9b000)
    libXext.so.6 => /usr/lib/i386-linux-gnu/libXext.so.6 (0xb6b88000)
    libX11.so.6 => /usr/lib/i386-linux-gnu/libX11.so.6 (0xb6a50000)
    libm.so.6 => /lib/i386-linux-gnu/i686/cmov/libm.so.6 (0xb6a2a000)
    libQtSql.so.4 => /usr/lib/i386-linux-gnu/libQtSql.so.4 (0xb69ea000)
    libQtCore.so.4 => /usr/lib/i386-linux-gnu/libQtCore.so.4 (0xb6704000)
    libz.so.1 => /lib/i386-linux-gnu/libz.so.1 (0xb66ea000)
    libgthread-2.0.so.0 => /usr/lib/i386-linux-gnu/libgthread-2.0.so.0 (0xb66e7000)
    libglib-2.0.so.0 => /lib/i386-linux-gnu/libglib-2.0.so.0 (0xb65ea000)
    libgobject-2.0.so.0 => /usr/lib/i386-linux-gnu/libgobject-2.0.so.0 (0xb6598000)
    librt.so.1 => /lib/i386-linux-gnu/i686/cmov/librt.so.1 (0xb658f000)
    libpthread.so.0 => /lib/i386-linux-gnu/i686/cmov/libpthread.so.0 (0xb6575000)
    libdl.so.2 => /lib/i386-linux-gnu/i686/cmov/libdl.so.2 (0xb6571000)
    libstdc++.so.6 => /usr/lib/i386-linux-gnu/libstdc++.so.6 (0xb6485000)
    libgcc_s.so.1 => /lib/i386-linux-gnu/libgcc_s.so.1 (0xb6468000)
    libc.so.6 => /lib/i386-linux-gnu/i686/cmov/libc.so.6 (0xb6305000)
    libaudio.so.2 => /usr/lib/i386-linux-gnu/libaudio.so.2 (0xb62ea000)
    libuuid.so.1 => /lib/i386-linux-gnu/libuuid.so.1 (0xb62e4000)
    libexpat.so.1 => /lib/i386-linux-gnu/libexpat.so.1 (0xb62ba000)
    libxcb.so.1 => /usr/lib/i386-linux-gnu/libxcb.so.1 (0xb6297000)
    /lib/ld-lsb.so.3 => /lib/ld-linux.so.2 (0xb77bd000)
    libpcre.so.3 => /lib/i386-linux-gnu/libpcre.so.3 (0xb6258000)
    libffi.so.5 => /usr/lib/i386-linux-gnu/libffi.so.5 (0xb624f000)
    libXt.so.6 => /usr/lib/i386-linux-gnu/libXt.so.6 (0xb61f1000)
    libXau.so.6 => /usr/lib/i386-linux-gnu/libXau.so.6 (0xb61ee000)
    libXdmcp.so.6 => /usr/lib/i386-linux-gnu/libXdmcp.so.6 (0xb61e8000)

আনম-এম (এছাড়াও, আমার বিতরণটি দেবিয়ান হুইজি)

i686

ফাইল xls

xls: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), 
     dynamically linked (uses shared libs), for GNU/Linux 2.6.15,
     BuildID[sha1]=0xa9786f61b371a683ae4306792f95e0636c288883, not stripped

ls -ld xls

-rwxr-xr-x 1 root root 4634064 May 20 14:35 xls

বিড়াল

root@pc170:# cat xls > zls
root@pc170:# ./zls
-su: ./zls: Permission denied
root@pc170:# chmod +x zls
root@pc170:# ./zls
-su: ./zls: No such file or directory

সময়

root@pc170:# time ./zls
-su: ./zls: No such file or directory

real    0m0.002s
user    0m0.000s
sys     0m0.000s

1
কি হবে LD_DEBUG=all /lib/ld-lsb.so.3 ./zls?
স্টাফেন চেজেলাস 20'13

1
এ সম্পর্কে একটি বিষয়: এটি বলে "su: "যা দেখে মনে হয় আপনি system()প্রোগ্রামের ভেতর থেকে কোনও বা কিছু সম্পাদন করছেন এবং এটি বলছে যে এটি করার পরে এটি যে suডিরেক্টরিতে শেষ হয় এটি নির্বাহযোগ্যকে খুঁজে পাবে না you এটি অনুলিপি বা সিমলিংক /binবা কিছু?
ব্র্যাচলে

চেষ্টা করা যাক objdump -j .interp -s ./zls। আমার সন্দেহ হয় যে ফাইলটি নেই যা বিদ্যমান নেই।
ডারোবার্ট

উত্তর:


20

এটি দেখতে নিখোঁজ লোডারটির মতো দেখাচ্ছে । সংক্ষিপ্ত গল্প: প্রোগ্রাম দ্বারা প্রত্যাশিত গতিশীল লোডারটি অনুপস্থিত এবং ত্রুটি বার্তাগুলি এক্ষেত্রে বিভ্রান্ত করছে। যেহেতু আমি এটির আগে আলোচনা করেছি বলে আমি মনে করি না, আসুন আউটপুটটির প্রাসঙ্গিক অংশটি ব্যাখ্যা করি ldd। এটি বেশিরভাগই ফর্মের লাইনের সমন্বয়ে গঠিত library_soname => /path/to/library_file

/lib/ld-lsb.so.3 => /lib/ld-linux.so.2 (0xb77bd000)

লাইব্রেরিগুলির মধ্যে আমরা এমন কিছু দেখতে পাই যা ভাগ করা লাইব্রেরি নয়: এটি এমন প্রোগ্রাম যা ভাগ করা লাইব্রেরিগুলি লোড করে। প্রোগ্রামটি অনুরোধ করছে /lib/ld-lsb.so.3, কিন্তু কার্নেলটি এটি খুঁজে পাচ্ছে না, সুতরাং এটি "এই জাতীয় কোনও ফাইল বা ডিরেক্টরি নেই" বলে প্রতিবেদন করে। তবুও lddলোডারটি সন্ধান করে, কারণ lddএকটি মোড়ক স্ক্রিপ্ট যা একটি বিশেষ পরিবেশে একটি হার্ড-কোডেড লোডারকে কল করে এবং লোডারটি সর্বদা নিজের পথের প্রতিবেদন করে না কেন প্রোগ্রামটি প্রত্যাশা করে।

আপনার কাছে /lib/ld-linux.so.2আপনার সিস্টেম, যা উপর কার্যত x86_32 লিনাক্স সিস্টেমে ELF লোডার জন্য আদর্শ অবস্থান। প্রোগ্রামটির প্রয়োজন /lib/ld-lsb.so.3, যা ডি জুর স্ট্যান্ডার্ড অবস্থান।

আপনার বিতরণের সর্বনিম্ন এলএসবি সমর্থন ইনস্টল করুন, উদাহরণস্বরূপ দেবিয়ান lsb-coreপ্যাকেজ। আপনার বিতরণে যদি এটি না হয় (সর্বাধিক করণীয়), একটি প্রতীকী লিঙ্ক তৈরি করুন /lib/ld-lsb.so.3 -> ld-linux.so.2। হতাশা আপনি লোডার স্পষ্টভাবে কল করতে পারেন: /lib/ld-linux.so.2 ./xls


প্রকৃতপক্ষে, লোডারটি হ'ল objজডাম্প লাইনটি প্রিন্ট করে ফেলত। আমি ভুলে গিয়েছিলাম এটি আসলে lddআউটপুট ছিল। ভালো বল ধরা!
ডার্বার্ট

বিভ্রান্তিকর ত্রুটির বার্তাটি দিয়ে আমি ঠিক এটিই দেখেছি। একটি সমস্যা হ'ল ডায়ামিক লোডার উপস্থিত না থাকলে 'এলডিডি' চলবে না কারণ এটি (কমপক্ষে শতভাগ) একটি শেল স্ক্রিপ্ট রয়েছে।
dajobe

একটি পোস্ট সমুদ্রের মধ্যে এই সর্বাধিক সহায়ক পোস্টের জন্য আপনাকে ধন্যবাদ যা 64৪-বিট সিস্টেমে 32-বিট লাইবগুলি হারিয়ে যাওয়ার কথা বলে।
মাইকেল

readelf -a zls | grep "Requesting program interpreter"লোডার মুদ্রণ করবে।
কেভিন স্মিথ
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.