উত্তর:
আরেকটি বিকল্প হ'ল lipo; এর আউটপুট সংক্ষিপ্ত এবং এর চেয়ে বেশি পঠনযোগ্যotool ।
একটি উদাহরণ:
% lipo -info /usr/lib/libiodbc.a
Architectures in the fat file: /usr/lib/libiodbc.a are: x86_64 i386 ppc
% lipo -info libnonfatarchive.a
input file libnonfatarchive.a is not a fat file
Non-fat file: libnonfatarchive.a is architecture: i386
%
fileসম্ভবত আপনাকে বলতে হবে। otoolঅবশ্যই সক্ষম হতে হবে। তবে আমি fileপ্রথমে চেষ্টা করতাম , যেমন
logan:/Users/logan% file d2
d2: Mach-O executable ppc
সংরক্ষণাগার সহ উদাহরণ:
logan:/Users/logan% file /usr/lib/libMallocDebug.a
/usr/lib/libMallocDebug.a: Mach-O universal binary with 2 architectures
/usr/lib/libMallocDebug.a (for architecture i386): current ar archive random library
/usr/lib/libMallocDebug.a (for architecture ppc): current ar archive
fileপ্রায়শই ব্যর্থ হয়।
পূর্বে উল্লিখিত হিসাবে, fileসবসময় কাজ করে না।otool -hv -arch allসম্ভবত এটি সবচেয়ে কাছের জিনিস যা কাজের গ্যারান্টিযুক্ত - এটি লাইব্রেরির প্রতিটি একক ফাইলের জন্য আর্কিটেকচারের তথ্য দেয়।
উদাহরণ:
% otool -hv /sw/lib/libfftw3.a
সংরক্ষণাগার: / এসডাব্লু / লাইব / লিবিফটডব্লু.এ
/sw/lib/libfftw3.a(align.o):
মাচ শিরোনাম
ম্যাজিক সিপুটাইপ সিপাসুবাইট টাইপ ক্যাপ ফাইল টাইপ এনসিএমডি সাইজফফ সিএমডিএস পতাকাস
MH_MAGIC_64 X86_64 সব 0x00 ওবিজেইসিটি 3 336 সাবস্কিপশন_ভিয়া_সাইএমবুলস
/sw/lib/libfftw3.a(alloc.o):
মাচ শিরোনাম
ম্যাজিক সিপুটাইপ সিপাসুবাইট টাইপ ক্যাপ ফাইল টাইপ এনসিএমডি সাইজফফ সিএমডিএস পতাকাস
MH_MAGIC_64 X86_64 সমস্ত 0x00 ওবিজেইসিটি 3 416 সাবস্কিপশন_ভিয়া_সাইএমবুলস
...
বিকল্প হিসাবে, আমি খুঁজে পেয়েছি objdumpভাল কাজ করতে পারে। উদাহরণস্বরূপ, আমার পরিবেশে আমি vxWorks সহ গ্রন্থাগার সংরক্ষণাগারগুলি তৈরি করি এবং সেগুলি অন্যান্য প্রকল্পের সাথে লিঙ্ক করা দরকার। সংরক্ষণাগারটি সঠিক আর্কিটেকচার কিনা তা পরীক্ষা করতে আমি নীচের মতো কিছু করতে পারি (বাশ সিনট্যাক্স):
if [ "$(objdumpsparc -a ${ARCHIVE_FILE} 2>&1 | ggrep -cvP 'elf32-sparc-vxworks')" -ne "0" ]; then
echo "Cannot build with ${ARCHIVE_FILE}, it contains one or more non-sparc components"
fi;
এই উদাহরণটি যথাযথভাবে সঠিক নয়, কারণ কিছু লাইন দেখায় যে এলফ 32-স্পার্ক-ভিএক্সওয়ার্কস বলে না, তবে এটি খাপ খাইয়ে নেওয়া যথেষ্ট সহজ।
এর একটি দুর্দান্ত সুবিধা হ'ল objdump, বা অনুরূপ নামযুক্ত বৈকল্পিক বেশিরভাগ * নিক্স অপারেটিং সিস্টেমে ইনস্টল করা আছে, অন্যদিকে প্রতিক্রিয়াতে প্রস্তাবিত সরঞ্জামগুলি নয়।
সম্পাদনা এটি সবেমাত্র আমার কাছে ঘটেছিল ওপি ওএসএক্সের কাছে জিজ্ঞাসা করেছিল। আমার ক্ষমা।
objdumpকরতে আপনি ম্যাকপোর্টের মাধ্যমে জিএনইউ বিন্টিল ইনস্টল করতে পারেন। সমস্ত উপলব্ধ আর্কিটেকচারের মাত্র চালানো দেখার জন্য port search binutils। দেশীয় বিকাশের সরঞ্জামগুলি সংঘাত এড়াতে উপস্থাপিত হয় (উদাহরণস্বরূপ gobjdumpপরিবর্তে objdump)। আপনি সুবিধার জন্য একটি উপাধি তৈরি করতে চাইতে পারেন।
এই বাশ স্ক্রিপ্টটি আপনাকে প্রোগ্রামিয়ালি কোনও ভেরিয়েবলের জন্য আর্কিটেকচারের তালিকা পেতে সহায়তা করবে।
list_archs.sh:
#! /bin/bash
lipo -info $1 | sed -En -e 's/^(Non-|Architectures in the )fat file: .+( is architecture| are): (.*)$/\3/p'
ব্যবহারের উদাহরণ:
./list_archs.sh /usr/lib/libc.dylib
x86_64 i386