این فرمان abi-compliance-checker است که می تواند در ارائه دهنده هاست رایگان OnWorks با استفاده از یکی از چندین ایستگاه کاری آنلاین رایگان ما مانند Ubuntu Online، Fedora Online، شبیه ساز آنلاین ویندوز یا شبیه ساز آنلاین MAC OS اجرا شود.
برنامه:
نام
abi-compliance-checker - ابزاری برای مقایسه سازگاری ABI کتابخانه مشترک C/C++
نسخه
شرح
نام:
ABI Compliance Checker (abi-compliance-checker) بررسی سازگاری به عقب از a
C/C++ کتابخانه API
DESCRIPTION:
ABI Compliance Checker (ABICC) ابزاری برای بررسی باینری های عقب افتاده و
سازگاری سطح منبع یک کتابخانه مشترک C/C++. این ابزار فایل های هدر را بررسی می کند
و کتابخانه های مشترک (*.so) نسخه های قدیمی و جدید و تجزیه و تحلیل تغییرات در API و
ABI (ABI=API+کامپایلر ABI) که ممکن است سازگاری باینری و/یا سطح منبع را از بین ببرد:
تغییرات در پشته فراخوانی، تغییرات v-table، حذف نمادها، تغییر نام فیلدها و غیره.
ناسازگاری باینری ممکن است منجر به خرابی یا رفتار نادرست برنامه ها شود
اگر کتابخانه جدید اجرا شود، با نسخه قدیمی کتابخانه ساخته شده است. منبع
ناسازگاری ممکن است منجر به خطاهای کامپایل مجدد با نسخه جدید کتابخانه شود.
این ابزار برای توسعهدهندگان کتابخانههای نرمافزاری و نگهداریکنندگان در نظر گرفته شده است
سیستم عامل هایی که علاقه مند به اطمینان از سازگاری با عقب هستند، یعنی اجازه می دهند
برنامه های قدیمی برای اجرا یا کامپایل مجدد با نسخه های جدیدتر کتابخانه.
همچنین این ابزار می تواند توسط ISV ها برای بررسی قابلیت حمل برنامه ها به جدید استفاده شود
نسخه های کتابخانه مسائل پیدا شده را می توان در هنگام تطبیق در نظر گرفت
برنامه به نسخه کتابخانه جدید.
این ابزار یک نرمافزار رایگان است: میتوانید آن را دوباره توزیع کنید و/یا آن را در زیر تغییر دهید
شرایط GNU LGPL یا GNU GPL.
طریقه استفاده:
abi-compliance-checker [گزینه ها]
مثال:
abi-compliance-checker -لیب نام -خب OLD.xml -جدید NEW.xml
OLD.xml و NEW.xml توصیفگرهای XML هستند:
1.0
/path1/to/header(s)/ /path2/to/header(s)/
...
/path1/to/library(ies)/ /path2/to/library(ies)/
...
اطلاعات گزینه ها:
-h|-کمک
این راهنما را چاپ کنید.
-i|-اطلاعات
چاپ اطلاعات کامل
-v|-نسخه
اطلاعات نسخه چاپی
- تخلیه
نسخه ابزار (1.99.14) را چاپ کنید و کار دیگری انجام ندهید.
عمومی گزینه ها:
-l|-lib|-کتابخانه NAME
نام کتابخانه (بدون نسخه).
-d1|-قدیمی|-o PATH
توصیف کننده نسخه اول (قدیمی) کتابخانه. ممکن است یکی از موارد زیر باشد:
1. XML-descriptor (فایل VERSION.xml):
1.0
/path1/to/header(s)/ /path2/to/header(s)/
...
/path1/to/library(ies)/ /path2/to/library(ies)/
...
...
2. تخلیه ABI تولید شده توسط -زباله گزینه 3. دایرکتوری با هدر و/یا اشتراک گذاری شده
کتابخانه ها 4. فایل هدر منفرد
اگر از 2-4 نوع توصیفگر استفاده می کنید، باید شماره نسخه را مشخص کنید
با -v1 و -v2 گزینه ها نیز
برای اطلاعات بیشتر، لطفا مراجعه کنید:
http://ispras.linuxbase.org/index.php/Library_Descriptor
-d2|-جدید|-n PATH
توصیف کننده نسخه دوم کتابخانه (جدید).
-زباله|-dump-abi PATH
کتابخانه ABI dump را برای توصیفگر ورودی XML ایجاد کنید. می توانید آن را به هر جایی انتقال دهید
و به جای توصیف کننده عبور کنید. همچنین می توان از آن برای رفع اشکال ابزار استفاده کرد.
نسخه های پشتیبانی شده ABI dump: 2.0<=V<=3.2
EXTRA گزینه ها:
-برنامه|-application PATH
این گزینه به شخص اجازه می دهد تا برنامه ای را که باید بررسی شود را مشخص کند
قابلیت حمل به نسخه جدید کتابخانه
static-libs
به جای کتابخانه های مشترک، کتابخانه های ثابت را بررسی کنید. در بخش از
توصیفگر XML باید به محل کتابخانه های ایستا اشاره کند.
-gcc-path PATH
مسیری به کامپایلر متقابل GCC برای استفاده به جای معمول (میزبان) GCC.
-gcc-پیشوند پیشوند
پیشوند زنجیره ابزار GCC.
-گزینههای gcc OPTS
گزینه های کامپایلر اضافی
-sysroot DIR
دایرکتوری ریشه جایگزین را مشخص کنید. ابزار شامل مسیرهای موجود در آن جستجو می کند
دایرکتوری های DIR/usr/include و DIR/usr/lib.
-v1|-نسخه 1 NUM
نسخه اول کتابخانه را خارج از توصیفگر مشخص کنید. اگر شما به این گزینه نیاز دارید
یک نوع توصیفگر جایگزین را ترجیح داده اند (نگاه کنید به -d1 گزینه).
در حالت کلی باید آن را در XML-descriptor مشخص کنید:
نسخه
-v2|-نسخه 2 NUM
نسخه دوم کتابخانه را خارج از توصیفگر مشخص کنید.
-vnum NUM
نسخه کتابخانه را در تخلیه ABI ایجاد شده مشخص کنید. در بخش از
توصیفگر XML ورودی در این مورد بازنویسی خواهد شد.
-s|-سخت
همه هشدارهای سازگاری را به عنوان مشکل در نظر بگیرید. تعدادی از شدت "کم" را اضافه کنید
مشکلات مربوط به مقدار بازگشتی ابزار
فقط سرصفحه
فایل های هدر را بدون کتابخانه های مشترک بررسی کنید. اجرای آن آسان است، اما ممکن است یک
گزارش سازگاری با کیفیت پایین با مثبت کاذب و بدون شناسایی
نمادهای اضافه/حذف شده
یا میتوانید کلمه «هیچ» را در آن بنویسید بخش در
توصیفگر XML:
هیچ
-نمایش مجدد
نوع بازگشت نماد را در گزارش نشان دهید.
-symbols-list PATH
این گزینه به شخص اجازه می دهد تا فایلی را با لیستی از نمادها (نام های مخدوش شده در
C++) که باید بررسی شود. سایر نمادها بررسی نمی شوند.
-types-list PATH
این گزینه به شخص اجازه می دهد تا فایلی را با لیستی از انواعی که باید باشد مشخص کند
بررسی شد. انواع دیگر بررسی نمی شود.
نمادهای پرش PATH
لیست نمادهایی که نباید بررسی شوند.
-پرش-انواع PATH
لیست انواعی که نباید بررسی شوند.
سرصفحه-لیست PATH
فایل با لیستی از هدرها، که باید بررسی یا ریخته شود.
هدرهای پرش PATH
فایل با لیست فایل های هدر، که نباید بررسی شود.
-سرتیتر نام
فقط ABI این هدر را بررسی کنید/دور بزنید.
-استفاده از زباله
برای دو نسخه از یک کتابخانه dump ایجاد کنید و dumps را مقایسه کنید. این باید افزایش یابد
عملکرد ابزار و کاهش استفاده از حافظه سیستم.
-nostdinc
در فهرست های سیستم استاندارد GCC برای فایل های هدر جستجو نکنید.
-سیستم تخلیه نام -sysroot DIR
تمام کتابخانه های به اشتراک گذاشته شده و فایل های هدر را در دایرکتوری DIR پیدا کنید، XML ایجاد کنید
توصیفگرها و برای هر کتابخانه، روگرفت ABI ایجاد کنید. مجموعه نتیجه تخلیه ABI می تواند باشد
مقایسه (--cmp-systems) با دیگری ایجاد شده برای نسخه دیگر عملیات
سیستم به منظور بررسی سازگاری آنها. فراموش نکنید که مشخص کنید
-cross-gcc اگر سیستم هدف شما به نسخه خاصی از GCC نیاز دارد، گزینه ای است
کامپایلر (متفاوت از GCC میزبان). سیستم ABI dump برای موارد زیر ایجاد می شود:
sys_dumps/NAME/ARCH
-سیستم تخلیه DESCRIPTOR.xml
مانند گزینه قبلی است اما یک توصیفگر XML از سیستم هدف را به عنوان
ورودی، جایی که باید آن را توضیح دهید:
/* بخش های اولیه */
/* نام سیستم */
/* لیست مسیرهای فایل های هدر و/یا
دایرکتوری ها با فایل های هدر، یکی در هر خط */
/* لیست مسیرهای کتابخانه های مشترک و/یا
دایرکتوری ها با کتابخانه های مشترک، یکی در هر خط */
/* بخش های اختیاری */
/* فهرست دایرکتوری هایی که باید جستجو شوند
برای ایجاد خودکار فایلهای هدر شامل مسیرهایی، یکی در هر خط */
/* فهرست دایرکتوری هایی که باید جستجو شوند
برای کتابخانه های مشترک برای حل وابستگی ها، یکی در هر خط */
/* فهرست دایرکتوری ها با ابزارهای مورد استفاده
برای تجزیه و تحلیل (GCC toolchain)، یک در هر خط */
/* پیشوند زنجیره ابزار GCC.
مثال:
arm-linux-gnueabi arm-none-symbianelf */
/* گزینه های اضافی GCC، یکی در هر خط */
-sysinfo DIR
این گزینه باید با استفاده شود -سیستم تخلیه گزینه ای برای تخلیه ABI از عملیات
سیستم ها و پیکربندی فرآیند دامپینگ. شما می توانید یک نمونه را در بسته پیدا کنید:
modules/Targets/{یونیکس، سیمبین، ویندوز}
-سیستم های cmp -d1 sys_dumps/NAME1/ARCH -d2 sys_dumps/NAME2/ARCH
دو سیستم ABI dump را مقایسه کنید. ایجاد گزارش سازگاری برای هر کتابخانه و
گزارش رایج HTML شامل خلاصه نتایج آزمایش برای همه کتابخانه های بررسی شده.
گزارش ایجاد خواهد شد:
sys_compat_reports/NAME1_to_NAME2/ARCH
-libs-list PATH
فایل با لیستی از کتابخانه ها، که باید توسط -سیستم تخلیه انتخاب
یا باید توسط -سیستم های cmp گزینه.
- داخلی|-تمدید شد
اگر قرار است کتابخانه A شما توسط کتابخانه B دیگری استفاده شود و شما می خواهید آن را کنترل کنید
ABI از B، سپس شما باید این گزینه را فعال کنید. این ابزار تغییرات را بررسی می کند
در تمام انواع داده ها، حتی اگر توسط هیچ تابعی در کتابخانه A استفاده نشده باشند
انواع داده ها بخشی از ABI کتابخانه A نیستند، اما ممکن است بخشی از ABI از B باشند
کتابخانه
طرح کوتاه این است:
برنامه C (شکسته) -> lib B (ABI شکسته) -> lib A (ABI پایدار)
-q|-آرام
همه پیام ها را به جای stdout و stderr در فایل چاپ کنید. مسیر پیش فرض (می تواند باشد
تغییر کرده توسط - مسیر ورود گزینه):
logs/run.log
-stdout
نتایج تجزیه و تحلیل (گزارشهای سازگاری و تخلیههای ABI) را در stdout چاپ کنید
ایجاد یک فایل این اجازه می دهد تا داده ها را به سایر برنامه ها انتقال دهند.
-قالب گزارش FMT
تغییر فرمت گزارش سازگاری فرمت ها:
htm - فرمت HTML (پیشفرض) xml - فرمت XML
فرمت dump FMT
تغییر قالب ABI dump. فرمت ها:
perl - فرمت Data::Dumper (پیشفرض) xml - فرمت XML
-xml
نام مستعار برای: -قالب گزارش=XML or - قالب dump=XML
-زمانی زبان
تنظیم زبان کتابخانه (C یا C++). اگر ابزار نمی تواند از این گزینه استفاده کنید
تشخیص خودکار یک زبان این گزینه ممکن است برای بررسی هدرهای C-library مفید باشد
(-- زبان=C) که در ---فقط سرصفحه or --تمدید شده حالت ها.
-ارشی آرچ
مجموعه معماری کتابخانه (x86، x86_64، ia64، بازو، ppc32، ppc64، s390، و غیره). در
اگر ابزار نتواند معماری صحیح ورودی را تشخیص دهد، گزینه مفید است
اشیاء.
-دودویی|-bin|-abi
فقط مشکلات سازگاری "باینری" را نشان دهید. ایجاد گزارش به:
compat_reports/LIB_NAME/V1_to_V2/abi_compat_report.html
منبع|-src|-api
فقط مشکلات سازگاری "منبع" را نشان دهید. ایجاد گزارش به:
compat_reports/LIB_NAME/V1_to_V2/src_compat_report.html
محدود تحت تأثیر محدود
حداکثر تعداد نمادهای تحت تأثیر فهرست شده در زیر توضیحات تغییر یافته است
گزارش را تایپ کنید
OTHER گزینه ها:
-تست
تست های داخلی را اجرا کنید. ایجاد دو نسخه باینری ناسازگار از یک کتابخانه نمونه و
ابزار را اجرا کنید تا سازگاری آنها را بررسی کنید. این گزینه به شخص اجازه می دهد تا بررسی کند که آیا
این ابزار در محیط فعلی به درستی کار می کند.
-test-dump
تست توانایی ایجاد، خواندن و مقایسه زباله های ABI.
اشکال زدایی
حالت اشکال زدایی. اطلاعات اشکال زدایی را روی صفحه چاپ کنید. مراحل تحلیل میانی را ذخیره کنید
در دایرکتوری اشکال زدایی:
اشکال زدایی/LIB_NAME/VERSION/
استفاده را نیز در نظر بگیرید --زباله گزینه ای برای اشکال زدایی ابزار
-cpp-compatible
اگر فایلهای هدر شما به زبان C نوشته شدهاند و میتوانند توسط G++ کامپایل شوند
کامپایلر (یعنی از کلمات کلیدی ++C استفاده نکنید)، سپس می توانید به ابزار در مورد این و
سرعت تجزیه و تحلیل
-cpp-ناسازگار
اگر فایل های هدر ورودی C از کلمات کلیدی C++ استفاده می کنند، این گزینه را تنظیم کنید.
-p|-params PATH
مسیر فایل با نام پارامترهای تابع. می توان از آن برای بهبود گزارش استفاده کرد
مشاهده کنید که آیا فایل های هدر کتابخانه فاقد نام پارامتر هستند. فرمت فایل:
func1;param1;param2;param3 ... func2;param1;param2;param3 ...
...
-رابطه PATH
ماکروهای {RELPATH} را به PATH در توصیفگر XML مورد استفاده برای تخلیه کتابخانه جایگزین کنید.
ABI (نگاه کنید به -زباله گزینه).
-relpath1 PATH
ماکروهای {RELPATH} را به PATH در اولین توصیفگر XML (-d1).
-relpath2 PATH
ماکروهای {RELPATH} را به PATH در دومین توصیفگر XML (-d2).
-مسیر تخلیه PATH
مسیر فایل *.abi.tar.gz یا *.abi را مشخص کنید که در آن یک Dump ABI ایجاد شود. پیش فرض:
abi_dumps/LIB_NAME/LIB_NAME_VERSION.abi.tar.gz
-مرتب سازی
مرتب سازی داده ها را در انبارهای ABI فعال کنید.
-گزارش مسیر PATH
گزارش مسیر به سازگاری پیش فرض:
compat_reports/LIB_NAME/V1_to_V2/compat_report.html
مسیر -bin-report PATH
مسیر به گزارش سازگاری "باینری". پیش فرض:
compat_reports/LIB_NAME/V1_to_V2/abi_compat_report.html
-src-report-path PATH
مسیر به گزارش سازگاری "منبع". پیش فرض:
compat_reports/LIB_NAME/V1_to_V2/src_compat_report.html
- مسیر ورود PATH
مسیر ورود برای همه پیام ها پیش فرض:
logs/LIB_NAME/VERSION/log.txt
-log1-path PATH
مسیر گزارش برای نسخه اول یک کتابخانه. پیش فرض:
logs/LIB_NAME/V1/log.txt
-log2-path PATH
مسیر ثبت برای نسخه دوم یک کتابخانه. پیش فرض:
logs/LIB_NAME/V2/log.txt
-حالت ورود به سیستم MODE
تغییر حالت ورود به سیستم حالت ها:
w - بازنویسی گزارشهای قدیمی (پیشفرض) a - اضافه کردن گزارشهای قدیمی n - هیچ گزارشی ننویسید
-فهرست تحت تأثیر
فایلی با لیستی از نمادهای ناسازگار در کنار سازگاری HTML ایجاد کنید
گزارش. از دستور «c++filt @file» از GNU binutils برای باز کردن نمادهای C++ در
فایل تولید شده نام های پیش فرض:
abi_affected.txt src_affected.txt
-جزء نام
نام مؤلفه در عنوان و خلاصه گزارش HTML. پیش فرض:
کتابخانه
-عنوان نام
نام کتابخانه را در عنوان گزارش به NAME تغییر دهید. به طور پیش فرض a نمایش داده می شود
نام مشخص شده توسط -l گزینه.
-اطلاعات اضافی DIR
اطلاعات اضافی را به DIR بریزید.
تخلیه اضافی
یک Dump گسترده ABI حاوی تمام نمادها از واحد ترجمه ایجاد کنید.
-زور
اگر ابزار کار نمی کند سعی کنید از این گزینه استفاده کنید.
- تحمل سطح
مجموعه ای از اکتشافی ها را برای کامپایل موفقیت آمیز فایل های هدر ورودی اعمال کنید. تو می توانی
چندین سطح تحمل را با پیوستن آنها به یک رشته فعال کنید (مثلاً 13، 124،
و غیره.). سطوح:
1 - رد شدن از هدرهای غیر لینوکس (مثلاً win32_*.h و غیره) 2 - رد شدن از هدرهای داخلی (مثلاً
*_p.h، impl/*.h، و غیره) 3 - رد شدن از هدرهایی که شامل سرصفحه های غیر لینوکس هستند 4 - پرش
سرصفحه هایی که توسط دیگران ارائه شده است
-شادباش
فعال کردن بالاترین سطح تحمل [1234].
-بررسی
کامل بودن تخلیه ABI را بررسی کنید.
-سریع
تحلیل سریع بررسی برخی از نمونههای الگو را غیرفعال کنید.
نمادهای داخلی را پرش کنید الگو
نمادهای مطابق با الگو را بررسی نکنید.
-پرش-انواع-داخلی الگو
انواع مطابق با الگو را بررسی نکنید.
گزارش:
گزارش سازگاری برای موارد زیر ایجاد می شود:
compat_reports/LIB_NAME/V1_to_V2/compat_report.html
گزارش برای:
logs/LIB_NAME/V1/log.txt logs/LIB_NAME/V2/log.txt
خروج کدها:
0 - سازگار ابزار بدون هیچ خطایی اجرا شده است. غیر صفر - ناسازگار یا
ابزار با خطا اجرا شده است.
MORE اطلاعات:
http://lvc.github.io/abi-compliance-checker/
با استفاده از خدمات onworks.net از abi-compliance-checker به صورت آنلاین استفاده کنید