এটি হল অ্যাবিচেক কমান্ড যা আমাদের একাধিক বিনামূল্যের অনলাইন ওয়ার্কস্টেশন যেমন উবুন্টু অনলাইন, ফেডোরা অনলাইন, উইন্ডোজ অনলাইন এমুলেটর বা MAC OS অনলাইন এমুলেটর ব্যবহার করে OnWorks ফ্রি হোস্টিং প্রদানকারীতে চালানো যেতে পারে।
কার্যক্রম:
NAME এর
abicheck - ব্যক্তিগত বা বিকশিত চিহ্নগুলিতে কল করার জন্য অ্যাপ্লিকেশন বাইনারিগুলি পরীক্ষা করুন৷
লাইব্রেরি এবং কিছু সিস্টেম লাইব্রেরির স্ট্যাটিক লিঙ্কিংয়ের জন্য।
সাইনোপিসিস
abicheck [-h][-k][-a][-I][-v] [-f তালিকা ফাইল] [-ও আউটফাইল] [-পৃ প্যাটার্ন] [-ই প্যাটার্ন] [-জ
চাকরি] [-l গ্রন্থাগার] [-এল ldpath] [(-s|-S) dbfile] [(-d|-D) dbfile] [-ও dbfile] [-ক
তালিকা ফাইল] নথি পত্র
বর্ণনাঃ
abicheck অ্যাপ্লিকেশান বাইনারিগুলিতে চালানো হয় এবং যখনই নিম্নলিখিতগুলির যে কোনও একটি সতর্কতা জারি করে৷
তিনটি শর্ত সনাক্ত করা হয়:
· বেসরকারী প্রতীক ব্যবহার সঞ্চয় করুন। ব্যক্তিগত চিহ্ন হল একটি লাইব্রেরির ফাংশন বা ডেটা ভেরিয়েবল
প্যাকেজ যে প্যাকেজ অভ্যন্তরীণ. এগুলি প্যাকেজে লাইব্রেরি দ্বারা ব্যবহৃত হয়
অভ্যন্তরীণ যোগাযোগের জন্য এবং এপিআই/এবিআই-এর অংশ নয় যে অ্যাপ্লিকেশন বিকাশকারীরা
ব্যবহার করা উচিত।
· নব্য প্রতীক ব্যবহার সঞ্চয় করুন। বিকশিত প্রতীকগুলি একটি লাইব্রেরিতে ফাংশন বা ডেটা ভেরিয়েবল
প্যাকেজ যা ডেভেলপার ব্যবহারের উদ্দেশ্যে, কিন্তু "বিকশিত" বা হিসাবে চিহ্নিত করা হয়েছে
"অস্থির" অর্থে যে তারা বেমানান হয়ে যেতে পারে বা পরবর্তী প্রকাশে অদৃশ্য হয়ে যেতে পারে
লাইব্রেরি প্যাকেজের।
· স্থির লিঙ্ক করা সিস্টেম লাইব্রেরিগুলির স্ট্যাটিক লিঙ্কিং (উদাহরণস্বরূপ, libc.a) একটিতে
অ্যাপ্লিকেশন সাধারণত একটি ভাল ধারণা নয় কারণ সিস্টেম লাইব্রেরি কোড এটি "লক" করে
অ্যাপ্লিকেশন বাইনারি সিস্টেমের পরবর্তী রিলিজের সাথে বেমানান হতে পারে। abicheck
কয়েকটি সিস্টেম লাইব্রেরির স্ট্যাটিক লিঙ্কিং সনাক্ত করার চেষ্টা করে।
ডিফল্ট আচরণ হল, প্রতিটি বাইনারি বস্তুর জন্য চেক করা, সেখান থেকে সরাসরি কল পরীক্ষা করা
শুধুমাত্র বাইনারি অবজেক্ট। দ্য -l বিকল্পটি বাইনারি অবজেক্টের লাইব্রেরিগুলিকে অনুমতি দেয়
তাদের কলও চেক করা হয়েছে।
বিকল্প
নিম্নলিখিত বিকল্পগুলি সমর্থিত:
-k গুরুতর ত্রুটি থাকলেও বাইনারি পরীক্ষা চালিয়ে যান (ডাইনামিক লিঙ্কার রিপোর্ট
অমীমাংসিত প্রতীক, এলডিডি(1) ব্যর্থতা, কোন চিহ্ন সনাক্ত করা হয়নি)।
-h সাহায্যের দীর্ঘ ফর্ম প্রিন্ট আউট.
-v ভার্বোস। অতিরিক্ত তথ্য প্রিন্ট আউট.
-f তালিকা ফাইল
সার্জারির তালিকা ফাইল একটি ফাইল যা পরীক্ষা করার জন্য বাইনারি বস্তুর একটি তালিকা রয়েছে, প্রতি লাইনে একটি।
কমান্ড লাইনে আর্গুমেন্ট হিসাবে প্রদত্ত যেকোন ফাইলের সাথে এই তালিকাটি যুক্ত করা হয়। যদি
তালিকা ফাইল হয় "-", তারপর stdin ব্যবহার করা হয়।
-o আউটফাইল
আউটপুট লিখুন আউটফাইল stdout এর পরিবর্তে।
-p প্যাটার্ন
সংস্করণ নামের প্যাটার্ন ম্যাচ লেবেল ব্যক্তিগত সংস্করণ সেট পরিবর্তন করুন. ডিফল্ট হয়
/ব্যক্তিগত/ একটি কেস-সংবেদনশীল মিল ব্যবহার করে।
যদি রেজেক্সের একটি উপাদান প্যাটার্ন একটি সারিতে দুটি কোলন রয়েছে: patt1::patt2,
তারপর প্রতীক-স্তরের ম্যাচিং চেক করে সক্রিয় করা হবে কিনা সংস্করণ::প্রতীক or
লাইব্রেরি::প্রতীক ম্যাচ প্যাটার্ন (যেখানে প্রতীকের নাম, সংস্করণ (যদি থাকে), এবং
লাইব্রেরি বেসনাম প্রতিস্থাপিত হয় প্রতীক, সংস্করণ, এবং লাইব্রেরি)। উদাহরণ স্বরূপ,
-p 'FOO_VERS.*::_foopriv'
or
-p 'libfoo.so.*::_foopriv'
-e প্যাটার্ন
একই রকম -p কিন্তু "বিকশিত" ইন্টারফেসের জন্য।
-L ldpath
স্থির কর LD_LIBRARY_PATH পরিবেশ পরিবর্তনশীল থেকে ldpath গতিশীল আহ্বান করার আগে
লিঙ্কার ব্যবহার করুন -L "" আনসেট করতে LD_LIBRARY_PATH
যদি এর উপাদানগুলির মধ্যে একটি ldpath স্ট্রিংটি "অনুসন্ধান", তারপর সমস্ত ভাগ করা লাইব্রেরি
in নথি পত্র পাওয়া যায় এবং তাদের পাথ "খুঁজে" অবস্থানে ঢোকানো হয়। মনে রাখবেন যে
অর্ডার র্যান্ডম হবে.
-l লাইব্রেরি
ভাগ করা লাইব্রেরির বেসনাম বা পুরো পাথনেম যোগ করুন লাইব্রেরি তালিকা থেকে
ব্যক্তিগত কল করার জন্য বস্তুগুলি পরীক্ষা করতে হবে। এই বিকল্পের চেয়ে বেশি ঘটতে পারে
একবার কমান্ড লাইনে এবং সংযোজন। ডিফল্টরূপে, শুধুমাত্র একটি থেকে সরাসরি কল
সিস্টেম লাইব্রেরিতে বাইনারি চেক করা হয়। দ্য -l সুইচ চেক করার অনুমতি দেয়
পরোক্ষ কল যেমন: app -> supportlib -> systemlib।
-a চেক করার আগে সমস্ত বাইনারি লুপ করুন এবং শেয়ার করা সমস্ত তালিকা সংগ্রহ করুন
বস্তু পাওয়া প্রতিটি ভাগ করা বস্তুর বেসনেম নিন এবং কাজ করুন যেন এটি ছিল
এর সাথে নির্দিষ্ট করা হয়েছে -l বিকল্প বিকল্প এবং তারপর abicheck চেক চালান. এই পথে,
সমস্ত "অ্যাপ্লিকেশন অভ্যন্তরীণ" অবজেক্টের কলগুলিকে কেবলমাত্র এর পরিবর্তে চেক করা হয়
সরাসরি কল। (উপযোগী যখন ভাগ করা বস্তুর তাদের নির্ভরতা না থাকে
নথিভুক্ত.)
-I চেক করার সময় শেয়ার্ড লাইব্রেরি উপেক্ষা করুন, শুধুমাত্র এক্সিকিউটেবল চেক করুন। মানানসই -এ,
লাইব্রেরিগুলি প্রথমে অনুসন্ধান করা হবে কিন্তু তারপর চেক করা হবে না।
-d dbfile, -D dbfile
ডাইনামিক (সর্বজনীন বনাম ব্যক্তিগত) জন্য ফলব্যাক ফ্ল্যাট-ফাইল প্রতীক ডাটাবেস নির্দিষ্ট করুন
পরীক্ষা এই শ্রেণীবিভাগ ব্যবহার করা হবে যদি লাইব্রেরি সংস্করণ না হয় (যেমন
শ্রেণীবিভাগ লাইব্রেরিতেই বিদ্যমান নেই)। ব্যবহার করুন -D শুধুমাত্র যে নির্দেশ করতে
থেকে তথ্য dbfile ব্যবহার করা উচিত. মধ্যে লাইন dbfile এর মধ্যে একটি হতে পারে
ফর্ম:
লাইব্রেরি|প্রতীক
লাইব্রেরি|ক্লাস|প্রতীক
লাইব্রেরি|FILE=পথ
লাইব্রেরি নির্দিষ্ট করার জন্য লাইব্রেরির সম্পূর্ণ পথ হতে হবে (এটি হতে পারে না a
ভিত্তি নাম)।
প্রথম ফর্ম চিহ্ন প্রতীক ব্যক্তিগত হিসাবে।
দ্বিতীয় ফর্ম চিহ্ন প্রতীক সঙ্গে শ্রেণী কোথায় শ্রেণী পাবলিক, প্রাইভেট বা হতে পারে
বিকশিত
তৃতীয় ফর্ম ফাইল নির্দেশ করে পথ চাহিদা অনুযায়ী খোলা উচিত যখন লাইব্রেরি is
প্রথম সম্মুখীন. ফাইল পথ ব্যতীত প্রথম দুটি ফর্মের লাইন রয়েছে
লাইব্রেরি ক্ষেত্র তৃতীয় ফর্মটি অনেক শ্রেণীবিভাগ প্রক্রিয়াকরণ এড়াতে একটি গতি
লাইব্রেরি জন্য লাইন রান সম্মুখীন হয় না.
-O dbfile
ডায়নামিক এর জন্য প্রতীক শ্রেণীবিভাগ পরিবর্তন করতে একটি ওভাররাইড ফাইল নির্দিষ্ট করুন
(সরকারি বনাম বেসরকারি) পরীক্ষা। ওভাররাইড ফাইলের বিন্যাসটি এরকম:
লাইব্রেরি|সিম্বল|ক্লাস
লাইব্রেরি সম্পূর্ণ পথ বা বেসনাম হতে পারে। যদি লাইব্রেরি হয় "__SKIP__" প্রতীক
যেকোন লাইব্রেরিতে এটি পাওয়া গেলে উপেক্ষা করা হবে৷ ক্লাসটি "সর্বজনীন" হতে পারে,
"ব্যক্তিগত", "বিকশিত", বা "মুছে ফেলা"। "মুছে ফেলা" শ্রেণীটি বিশেষ ক্ষেত্রে, মানে
কিছু রিলিজে প্রতীকটি লাইব্রেরি থেকে মুছে ফেলা হয়েছিল। প্রতীক "__ALL__" এর জন্য
"মুছে ফেলা" ক্লাস মানে পুরো লাইব্রেরি মুছে ফেলা হয়েছে বা অন্যথায় অস্থির
ব্যবহার করা.
উদাহরণ:
libfoo.so.1|__bar|প্রাইভেট
/lib/libxyz.so.1|baz|পাবলিক
__SKIP__|__fputwc_xpg5
এই সেটিংস লাইব্রেরির অভ্যন্তরে যেকোনো শ্রেণীবিভাগকে ওভাররাইড করে (লাইব্রেরি থেকে
সংস্করণ, থেকে পাওয়া যায় pvs(1), ইত্যাদি)।
-A তালিকা ফাইল
তালিকাভুক্ত লাইব্রেরিতে আগ্রহের ABI লাইব্রেরি সেট করুন তালিকা ফাইল (সম্পূর্ণ
পথের নাম, প্রতি লাইনে একটি)। শুধুমাত্র এই লাইব্রেরিতে কল চেক করা হবে; সব
অন্যান্য লাইব্রেরি কল উপেক্ষা করা হবে।
-s dbfile, -S dbfile
স্ট্যাটিক লিঙ্কিং পরীক্ষার জন্য আরও বিস্তৃত প্রতীক ডাটাবেস নির্দিষ্ট করুন। dbfile হতে পারে
ফাইলের একটি কমা বিভক্ত তালিকা। যদি একটি ফাইল একটি স্ট্যাটিক আর্কাইভ (lib*.a) হয়
চিহ্নগুলি বের করার জন্য প্রক্রিয়া করা হয়। অন্যথায় এটি একটি ডাটাবেস ফাইল নিয়ে গঠিত
ফর্ম প্রতীকের লাইন|লাইব্রেরি:মডিউল উদাহরণস্বরূপ:
shmat|/usr/lib/libc.a:shmsys.o
shmctl|/usr/lib/libc.a:shmsys.o
shmdt|/usr/lib/libc.a:shmsys.o
shmget|/usr/lib/libc.a:shmsys.o
...
যখন একটি module.o-এর সমস্ত প্রতীক অ্যাপ্লিকেশনে সংজ্ঞায়িত করা হয়, তখন স্ট্যাটিক লিঙ্কিং
সেই মডিউলটি (এবং সংশ্লিষ্ট লাইব্রেরি সংরক্ষণাগার) ধরে নেওয়া হয়। ব্যবহার করুন -S নির্দেশ করতে
যে শুধুমাত্র স্ট্যাটিক লিঙ্ক পরীক্ষা সঞ্চালিত করা উচিত.
ব্যবহার -S কোন int শুধুমাত্র স্ট্যাটিক লিঙ্ক চেক করতে এবং অভ্যন্তরীণ ডাটাবেস ব্যবহার করে।
ব্যবহার -s না or -S না স্ট্যাটিক লিঙ্কিং চেক সম্পূর্ণভাবে এড়িয়ে যেতে।
-j চাকরি
চালান চাকরি পৃথক প্রক্রিয়া হিসাবে সমান্তরালভাবে। বোঝায় -k. প্রাথমিকভাবে জন্য উদ্দেশ্যে
একাধিক CPU মেশিন যেখানে চাকরি প্রসেসরের সংখ্যার কাছাকাছি হওয়া উচিত।
আউটপুট টিএমপি ফাইলগুলিতে সংগ্রহ করা হয় এবং রানের শেষের কাছাকাছি একবারে মুদ্রিত হয়
প্রতিটি কাজ শেষ।
If চাকরি তাহলে "-", "ডিটেক্ট", অথবা "n" হয় চাকরি উপর নির্ভর করে একটি সংখ্যা সেট করা হবে
বর্তমান মেশিনে প্রসেসরের সংখ্যা (যদি তা নির্ধারণ করা যায়)।
অপারেন্ডস
নিম্নলিখিত অপারেন্ডগুলি সমর্থিত:
নথি পত্র পরীক্ষা করার জন্য অ্যাপ্লিকেশন বাইনারি বস্তুর একটি তালিকা।
আউটপুট
সমস্যা প্রতি একটি লাইন আছে (বাইনারী চেক প্রতি একাধিক সমস্যা হতে পারে) যা
নিম্নলিখিত মত চেহারা:
যদি কোন সমস্যা না পাওয়া যায়:
ফাইলের নাম: ঠিক আছে
যদি ব্যক্তিগত প্রতীক ব্যবহার করা হয়:
ফাইলের নাম: ব্যক্তিগত (লাইব্রেরি:ব্যক্তিগত_সংস্করণ) ব্যক্তিগত_সিম
যদি বিকশিত প্রতীক ব্যবহার:
ফাইলের নাম: বিকশিত (লাইব্রেরি:বিবর্তিত_ভার্স) evolving_sym
যদি ফাইলটি একটি সিস্টেম আর্কাইভ লাইব্রেরিতে স্ট্যাটিকভাবে লিঙ্ক করা থাকে:
ফাইলের নাম: STATIC_LINK (সংরক্ষণাগার)
যদি ফাইলের চেকিং এড়িয়ে যাওয়া হয়:
ফাইলের নাম: এড়িয়ে যান (কারণ)
মুছে ফেলা শ্রেণী ব্যবহারের অধীনে -O ওভাররাইড ফাইল অপশন, এই সমস্যা হতে পারে
পাওয়া গেছে:
যদি কিছু প্রকাশে লাইব্রেরি থেকে একটি প্রতীক মুছে ফেলা হয়:
ফাইলের নাম: DELETED_SYM: প্রতীক/লাইব্রেরি
(লাইব্রেরি প্রতীকটি আনবাউন্ড হলে "আনবাউন্ড" হবে)
যদি একটি সম্পূর্ণ লাইব্রেরি কিছু প্রকাশে মুছে ফেলা হয় বা অন্যথায় অস্থির হয়
ব্যবহার করুন:
ফাইলের নাম: UNSTABLE_LIB: লাইব্রেরি-সোনাম = লাইব্রেরি-পাথ
(লাইব্রেরি-পাথ লাইব্রেরি পাওয়া না গেলে "ফাইল পাওয়া যায়নি" হতে পারে)
নিম্নলিখিত সমস্যাগুলি একটি মারাত্মক ত্রুটি সৃষ্টি করবে যদি না -k বিকল্প ব্যবহার করা হয়:
যদি ডায়নামিক লিঙ্কার সমাধান করতে না পারে N প্রতীক যখন এলডিডি -r চালানো হয়েছিল:
ফাইলের নাম: UNBOUND_SYMBOLS: N
যদি ডায়নামিক লিঙ্কার কোন ডায়নামিক বাইন্ডিং না পায়:
ফাইলের নাম: NO_BINDINGS
If এলডিডি -r সঙ্গে LD_DEBUG=ফাইল, বাইন্ডিং ব্যর্থ হয়েছে:
ফাইলের নাম: LDD_ERROR
এই তিনটি ক্ষেত্রে পরবর্তীতে চালানো হয় এলডিডি -r কি সম্পর্কে আরো তথ্যের জন্য বাইনারি ফাইলে
ভুল হয়েছে (মনে রাখবেন যে abicheck রান এলডিডি -r সঙ্গে LD_DEBUG=ফাইল, বাইন্ডিং সেট)। কিছু
ডায়নামিক লিঙ্কার যে সিস্টেমগুলির সাথে SUID প্রোগ্রামগুলি প্রক্রিয়া করবে না LD_DEBUG সেট (এটি সাধারণত
ফলাফল স্বরূপ NO_BINDINGS মধ্যে abicheck আউটপুট)।
মনে রাখবেন যে আপনি যদি একটি ভাগ করা লাইব্রেরিতে অ্যাবিচেক চালাচ্ছেন (উদাহরণস্বরূপ, libfoo.so)
হয়েছে না দিয়ে নির্মিত হয়েছে -l liberal এর সংক্ষিপ্ত রূপ এর লাইব্রেরি নির্ভরতা রেকর্ড করতে পতাকা, তারপর "আনবাউন্ড
প্রতীক" সমস্যা খুব সম্ভবত। পুনঃনির্মাণ ছাড়া আর বেশি কিছু করা যায় না
লাইব্রেরি বা একটি অ্যাপ্লিকেশন বাইনারি পরীক্ষা করা যা লাইব্রেরি ব্যবহার করে এবং ব্যবহার করে -l বিকল্প
abicheck
প্রস্থান করুন স্থিতি
নিম্নলিখিত প্রস্থান মান ফেরত দেওয়া হয়:
0 কোন ত্রুটি এবং কোন সমস্যা পাওয়া যায় নি.
1 একটি মারাত্মক ত্রুটি ঘটেছে৷
2 কোনো মারাত্মক ত্রুটি ঘটেনি, তবে কিছু বাইনারি সমস্যা শনাক্ত করেছে।
নোট
শুধুমাত্র ELF বস্তু চেক করা হয়.
মধ্যে -s -S -d এবং -O dbfiles '#' অক্ষরটি স্বাভাবিক উপায়ে একটি মন্তব্য লাইন শুরু করে।
যদি কেউ এর মাধ্যমে সরবরাহ করা "::" কাস্টম মিলগুলি ব্যবহার না করে৷ -p or -e পতাকা, abicheck পারেন
শুধুমাত্র সিস্টেম লাইব্রেরিগুলির বিরুদ্ধে চেক করুন যেগুলিতে প্রতীক সংস্করণ প্রয়োগ করা হয়েছে (যেমন
লাইব্রেরিতে প্রতিটি প্রতীকের জন্য ব্যক্তিগত এবং/অথবা বিবর্তিত তথ্য রেকর্ড করা হয়েছে)।
প্রতীক সংস্করণ সম্পর্কে আরও তথ্যের জন্য, "সোলারিস লিঙ্কার এবং লাইব্রেরি গাইড" দেখুন
URL-এ উত্তরপুস্তক http://docs.sun.com/ab2/coll.45.13 এবং কমান্ড/সংস্করণ-স্ক্রিপ্ট
GNU লিঙ্কার "ld" তথ্য পৃষ্ঠার বিভাগ।
ডিফল্ট প্রতীক সংস্করণ নামের মিলের নিদর্শনগুলি কেস-এর সাথে অসংবেদনশীল মিল
স্ট্রিংগুলি যথাক্রমে প্রাইভেট এবং ইভলভিং কেসগুলির জন্য "ব্যক্তিগত" এবং "বিকশিত"।
একক-উদ্ধৃতি অক্ষর বা নতুন লাইন ধারণকারী বিজোড় ফাইলের নামগুলি এড়িয়ে যাবে; যেমন
অক্ষর শেলের মাধ্যমে কলিং কমান্ডে হস্তক্ষেপ করে।
ডিরেক্টরি ব্যবহার পুনরাবৃত্তি করতে আবিষ্কার(1) এবং হয় ব্যবহার করার জন্য একটি ফাইলে আউটপুট সংগ্রহ করুন
দ্য -f বিকল্প, অথবা একটি পাইপের মাধ্যমে:
খুঁজুন ... | abicheck -f - ...
onworks.net পরিষেবা ব্যবহার করে অনলাইনে অ্যাবিচেক ব্যবহার করুন