Đây là trình kiểm tra tuân thủ lệnh abi có thể chạy trong nhà cung cấp dịch vụ lưu trữ miễn phí OnWorks bằng cách sử dụng một trong nhiều máy trạm trực tuyến miễn phí của chúng tôi như Ubuntu Online, Fedora Online, trình giả lập trực tuyến Windows hoặc trình mô phỏng trực tuyến MAC OS
CHƯƠNG TRÌNH:
TÊN
abi-tuân thủ-kiểm tra - công cụ để so sánh khả năng tương thích ABI của thư viện C / C ++ được chia sẻ
phiên bản
MÔ TẢ
TÊN:
Bộ kiểm tra tuân thủ ABI (abi-tuân thủ-kiểm tra) Kiểm tra khả năng tương thích ngược của một
API thư viện C / C ++
SỰ MIÊU TẢ:
Bộ kiểm tra Tuân thủ ABI (ABICC) là một công cụ để kiểm tra nhị phân ngược và
khả năng tương thích cấp nguồn của thư viện C / C ++ được chia sẻ. Công cụ kiểm tra các tệp tiêu đề
và các thư viện được chia sẻ (* .so) của các phiên bản cũ và mới, đồng thời phân tích các thay đổi trong API và
ABI (ABI = API + trình biên dịch ABI) có thể phá vỡ khả năng tương thích cấp nguồn và / hoặc nhị phân:
các thay đổi trong cách gọi ngăn xếp, thay đổi v-table, các ký hiệu bị loại bỏ, các trường được đổi tên, v.v.
Tính không tương thích nhị phân có thể dẫn đến sự cố hoặc hoạt động không chính xác của các ứng dụng
được xây dựng bằng phiên bản cũ của thư viện nếu chúng chạy trên phiên bản mới. Nguồn
không tương thích có thể dẫn đến lỗi biên dịch lại với phiên bản thư viện mới.
Công cụ này dành cho các nhà phát triển thư viện phần mềm và những người bảo trì
hệ điều hành quan tâm đến việc đảm bảo khả năng tương thích ngược, tức là cho phép
các ứng dụng cũ để chạy hoặc được biên dịch lại với các phiên bản thư viện mới hơn.
Ngoài ra, công cụ này có thể được ISV sử dụng để kiểm tra tính khả chuyển của ứng dụng sang mới
các phiên bản thư viện. Các vấn đề đã tìm thấy có thể được tính đến khi điều chỉnh
ứng dụng cho một phiên bản thư viện mới.
Công cụ này là phần mềm miễn phí: bạn có thể phân phối lại nó và / hoặc sửa đổi nó trong
các điều khoản của GNU LGPL hoặc GNU GPL.
SỬ DỤNG:
abi-tuân thủ-kiểm tra [tùy chọn]
THÍ DỤ:
người kiểm tra tuân thủ abi -lib TÊN -cũ CŨ.xml -Mới MỚI.xml
OLD.xml và NEW.xml là các bộ mô tả XML:
1.0
/ path1 / to / header (s) / / path2 / to / header (s) /
...
/ path1 / to / library (ies) / / path2 / to / library (ies) /
...
THÔNG TIN TÙY CHỌN:
-h| -giúp đỡ
In phần trợ giúp này.
-i| -info
In thông tin đầy đủ.
-v| -mục tiêu
Thông tin phiên bản in.
-dumpversion
In phiên bản công cụ (1.99.14) và không làm bất cứ điều gì khác.
CÁC VẤN ĐỀ CHUNG TÙY CHỌN:
-l| -lib | -library TÊN
Tên thư viện (không có phiên bản).
-d1| -old | -o PATH
Bộ mô tả của phiên bản thư viện thứ nhất (cũ). Nó có thể là một trong những điều sau:
1. Bộ mô tả XML (tệp VERSION.xml):
1.0
/ path1 / to / header (s) / / path2 / to / header (s) /
...
/ path1 / to / library (ies) / / path2 / to / library (ies) /
...
...
2. Kết xuất ABI được tạo bởi -bãi rác tùy chọn 3. Thư mục có tiêu đề và / hoặc được chia sẻ
thư viện 4. Tệp tiêu đề đơn
Nếu bạn đang sử dụng 2-4 loại bộ mô tả thì bạn nên chỉ định số phiên bản
với -V1 và -V2 tùy chọn quá.
Để biết thêm thông tin, xin vui lòng xem:
http://ispras.linuxbase.org/index.php/Library_Descriptor
-d2| -new | -n PATH
Bộ mô tả của phiên bản thư viện thứ 2 (mới).
-bãi rác| -dump-abi PATH
Tạo kết xuất ABI thư viện cho bộ mô tả XML đầu vào. Bạn có thể chuyển nó ở bất cứ đâu
và vượt qua thay vì bộ mô tả. Ngoài ra, nó có thể được sử dụng để gỡ lỗi công cụ.
Các phiên bản ABI dump được hỗ trợ: 2.0 <= V <= 3.2
EXTRA TÙY CHỌN:
Ứng dụng|-ứng dụng PATH
Tùy chọn này cho phép người ta chỉ định ứng dụng cần được kiểm tra
khả năng chuyển sang phiên bản thư viện mới.
-static-libs
Kiểm tra các thư viện tĩnh thay vì các thư viện được chia sẻ. Các phần của
XML-descriptor phải trỏ đến vị trí thư viện tĩnh.
-gcc-đường dẫn PATH
Đường dẫn đến trình biên dịch GCC chéo để sử dụng thay vì GCC (máy chủ) thông thường.
tiền tố -gcc TIẾP ĐẦU NGỮ
Tiền tố chuỗi công cụ GCC.
-gcc-tùy chọn TÙY CHỌN
Các tùy chọn trình biên dịch bổ sung.
-sysroot DIR
Chỉ định thư mục gốc thay thế. Công cụ sẽ tìm kiếm các đường dẫn bao gồm trong
các thư mục DIR / usr / include và DIR / usr / lib.
-V1| -version1 NUM
Chỉ định phiên bản thư viện đầu tiên bên ngoài bộ mô tả. Tùy chọn này là cần thiết nếu bạn
đã ưu tiên một loại mô tả thay thế (xem -d1 Tùy chọn).
Trong trường hợp chung, bạn nên chỉ định nó trong XML-descriptor:
PHIÊN BẢN
-V2| -version2 NUM
Chỉ định phiên bản thư viện thứ 2 bên ngoài bộ mô tả.
-vnum NUM
Chỉ định phiên bản thư viện trong kết xuất ABI đã tạo. Các phần của
bộ mô tả XML đầu vào sẽ bị ghi đè trong trường hợp này.
-s| -strict
Coi tất cả các cảnh báo về khả năng tương thích là sự cố. Thêm một số mức độ nghiêm trọng "Thấp"
vấn đề đối với giá trị trả về của công cụ.
-chỉ tiêu đề
Kiểm tra các tệp tiêu đề không có thư viện được chia sẻ. Nó dễ chạy, nhưng có thể cung cấp
báo cáo khả năng tương thích chất lượng thấp với kết quả dương tính giả và không phát hiện
thêm / bớt ký hiệu.
Ngoài ra, bạn có thể viết từ "không" vào phần trong
Bộ mô tả XML:
không ai
-hiển thị lại
Hiển thị kiểu trả về của biểu tượng trong báo cáo.
-biểu tượng-danh sách PATH
Tùy chọn này cho phép người ta chỉ định một tệp với danh sách các ký hiệu (tên bị xáo trộn trong
C ++) cần được kiểm tra. Các ký hiệu khác sẽ không được kiểm tra.
-types-danh sách PATH
Tùy chọn này cho phép người ta chỉ định một tệp với danh sách các loại phải
đã kiểm tra. Các loại khác sẽ không được kiểm tra.
-skip-biểu tượng PATH
Danh sách các ký hiệu không nên kiểm tra.
-skip-các loại PATH
Danh sách các loại không nên kiểm tra.
-danh sách tiêu đề PATH
Tệp có danh sách các tiêu đề, cần được kiểm tra / kết xuất.
-bỏ qua tiêu đề PATH
Không nên chọn tệp có danh sách tệp tiêu đề.
-cái đầu TÊN
Chỉ kiểm tra / kết xuất ABI của tiêu đề này.
-sử dụng-đổ
Tạo kết xuất cho hai phiên bản của thư viện và so sánh kết xuất. Điều này sẽ tăng lên
hiệu suất của công cụ và giảm mức sử dụng bộ nhớ hệ thống.
-nostdinc
Không tìm kiếm tệp tiêu đề trong thư mục hệ thống tiêu chuẩn GCC.
-dump-hệ thống TÊN -sysroot DIR
Tìm tất cả các thư viện được chia sẻ và tệp tiêu đề trong thư mục DIR, tạo XML
bộ mô tả và tạo kết xuất ABI cho mỗi thư viện. Tập kết quả của ABI kết xuất có thể là
so (--cmp-hệ thống) với cái còn lại được tạo cho phiên bản điều hành khác
hệ thống để kiểm tra tính tương thích của chúng. Đừng quên chỉ định
-cross-gcc tùy chọn nếu hệ thống mục tiêu của bạn yêu cầu một số phiên bản GCC cụ thể
trình biên dịch (khác với GCC của máy chủ). Kết xuất ABI của hệ thống sẽ được tạo để:
sys_dumps / NAME / ARCH
-dump-hệ thống MÔ TẢ.xml
Tương tự như tùy chọn trước đó nhưng sử dụng bộ mô tả XML của hệ thống đích như
đầu vào, nơi bạn nên mô tả nó:
/ * Phần chính * /
/ * Tên của hệ thống * /
/ * Danh sách các đường dẫn đến tệp tiêu đề và / hoặc
thư mục có tệp tiêu đề, mỗi tệp một dòng * /
/ * Danh sách các đường dẫn đến các thư viện được chia sẻ và / hoặc
thư mục với các thư viện được chia sẻ, một thư viện trên mỗi dòng * /
/ * Các phần tùy chọn * /
/ * Danh sách các thư mục được tìm kiếm
để các tệp tiêu đề tự động tạo bao gồm các đường dẫn, một đường dẫn trên mỗi dòng * /
/ * Danh sách các thư mục được tìm kiếm
cho các thư viện được chia sẻ để giải quyết các phần phụ thuộc, một phần trên mỗi dòng * /
/ * Danh sách các thư mục với các công cụ được sử dụng
để phân tích (chuỗi công cụ GCC), một trên mỗi dòng * /
/ * Tiền tố chuỗi công cụ GCC.
Ví dụ:
arm-linux-gnueabi arm-none-symbianelf * /
/ * Các tùy chọn GCC bổ sung, một tùy chọn trên mỗi dòng * /
-sysinfo DIR
Tùy chọn này nên được sử dụng với -dump-hệ thống tùy chọn để kết xuất ABI của hoạt động
hệ thống và cấu hình quá trình bán phá giá. Bạn có thể tìm thấy một mẫu trong gói:
module / Targets / {unix, symbian, windows}
-cmp-hệ thống -d1 sys_dumps / NAME1 / ARCH -d2 sys_dumps / NAME2 / ARCH
So sánh hai bãi ABI của hệ thống. Tạo báo cáo khả năng tương thích cho từng thư viện và
báo cáo HTML chung bao gồm bản tóm tắt kết quả kiểm tra cho tất cả các thư viện đã kiểm tra.
Báo cáo sẽ được tạo để:
sys_compat_reports / NAME1_to_NAME2 / ARCH
-libs-danh sách PATH
Tệp có danh sách các thư viện, sẽ được kết xuất bởi -dump-hệ thống tùy chọn
hoặc nên được kiểm tra bởi -cmp-hệ thống tùy chọn.
-ext| -extended
Nếu thư viện A của bạn được cho là được sử dụng bởi thư viện B khác và bạn muốn kiểm soát
ABI của B, thì bạn nên bật tùy chọn này. Công cụ sẽ kiểm tra các thay đổi
trong tất cả các kiểu dữ liệu, ngay cả khi chúng không được sử dụng bởi bất kỳ hàm nào trong thư viện A. Chẳng hạn
kiểu dữ liệu không phải là một phần của ABI thư viện A, nhưng có thể là một phần của ABI của B
thư viện.
Đề án ngắn gọn là:
ứng dụng C (bị hỏng) -> lib B (ABI bị hỏng) -> lib A (ABI ổn định)
-q| -quiet
In tất cả thư vào tệp thay vì stdout và stderr. Đường dẫn mặc định (có thể là
Thay đổi bởi -log-đường dẫn Lựa chọn):
logs / run.log
-thiết bị xuất chuẩn
In kết quả phân tích (báo cáo khả năng tương thích và kết xuất ABI) sang stdout thay vì
tạo một tệp. Điều này sẽ cho phép đường ống dữ liệu đến các chương trình khác.
-định dạng báo cáo FMT
Thay đổi định dạng của báo cáo khả năng tương thích. Định dạng:
htm - định dạng HTML (mặc định) xml - định dạng XML
-dump-định dạng FMT
Thay đổi định dạng của kết xuất ABI. Định dạng:
perl - Dữ liệu :: Định dạng Dumper (mặc định) xml - Định dạng XML
-xml
Bí danh cho: --định dạng báo cáo=xml or --dump-định dạng=xml
-lang NGÔN NGỮ
Đặt ngôn ngữ thư viện (C hoặc C ++). Bạn có thể sử dụng tùy chọn này nếu công cụ không thể
tự động phát hiện một ngôn ngữ. Tùy chọn này có thể hữu ích để kiểm tra các tiêu đề thư viện C
(--lang=C) trong --headers-chỉ or --mở rộng chế độ.
-sao Vòm
Đặt kiến trúc thư viện (x86, x86_64, ia64, arm, ppc32, ppc64, s390, v.v.). Các
tùy chọn này hữu ích nếu công cụ không thể phát hiện kiến trúc chính xác của đầu vào
các đối tượng.
-nhị phân| -bin | -abi
Chỉ hiển thị sự cố tương thích "Nhị phân". Tạo báo cáo cho:
compat_reports / LIB_NAME / V1_to_V2 / abi_compat_report.html
-Source| -src | -api
Chỉ hiển thị sự cố tương thích "Nguồn". Tạo báo cáo cho:
compat_reports / LIB_NAME / V1_to_V2 / src_compat_report.html
-limit-bị ảnh hưởng LIMIT
Số lượng tối đa các biểu tượng bị ảnh hưởng được liệt kê trong phần mô tả về sự thay đổi
gõ vào báo cáo.
KHÁC TÙY CHỌN:
-kiểm tra
Chạy thử nghiệm nội bộ. Tạo hai phiên bản không tương thích nhị phân của thư viện mẫu và
chạy công cụ để kiểm tra tính tương thích của chúng. Tùy chọn này cho phép một người kiểm tra xem
công cụ hoạt động chính xác trong môi trường hiện tại.
-test-dump
Kiểm tra khả năng tạo, đọc và so sánh kết xuất ABI.
-gỡ lỗi
Chế độ kiểm lỗi. In thông tin gỡ lỗi trên màn hình. Lưu các giai đoạn phân tích trung gian
trong thư mục gỡ lỗi:
gỡ lỗi / LIB_NAME / VERSION /
Cũng xem xét sử dụng --bãi rác tùy chọn để gỡ lỗi công cụ.
-cpp tương thích
Nếu tệp tiêu đề của bạn được viết bằng ngôn ngữ C và có thể được biên dịch bởi G ++
trình biên dịch (tức là không sử dụng từ khóa C ++), sau đó bạn có thể cho công cụ biết về điều này và
tăng tốc độ phân tích.
-cpp-không tương thích
Đặt tùy chọn này nếu các tệp tiêu đề C đầu vào sử dụng từ khóa C ++.
-p| -params PATH
Đường dẫn đến tệp với các tên tham số hàm. Nó có thể được sử dụng để cải thiện báo cáo
xem nếu các tệp tiêu đề thư viện không có tên tham số. Định dạng tệp:
func1;param1;param2;param3 ... func2;param1;param2;param3 ...
...
-đường dẫn PATH
Thay thế macro {RELPATH} thành PATH trong bộ mô tả XML được sử dụng để kết xuất thư viện
ABI (xem -bãi rác Tùy chọn).
-relpath1 PATH
Thay thế macro {RELPATH} thành PATH trong bộ mô tả XML thứ nhất (-d1).
-relpath2 PATH
Thay thế macro {RELPATH} thành PATH trong bộ mô tả XML thứ 2 (-d2).
-dump-path PATH
Chỉ định đường dẫn tệp * .abi.tar.gz hoặc * .abi để tạo kết xuất ABI. Vỡ nợ:
abi_dumps / LIB_NAME / LIB_NAME_VERSION.abi.tar.gz
-loại
Cho phép sắp xếp dữ liệu trong ABI kết xuất.
-báo cáo-đường dẫn PATH
Đường dẫn đến báo cáo khả năng tương thích. Vỡ nợ:
compat_reports / LIB_NAME / V1_to_V2 / compat_report.html
-bin-báo cáo-đường dẫn PATH
Đường dẫn đến báo cáo khả năng tương thích "Nhị phân". Vỡ nợ:
compat_reports / LIB_NAME / V1_to_V2 / abi_compat_report.html
-src-báo cáo-đường dẫn PATH
Đường dẫn đến báo cáo khả năng tương thích "Nguồn". Vỡ nợ:
compat_reports / LIB_NAME / V1_to_V2 / src_compat_report.html
-log-đường dẫn PATH
Đường dẫn nhật ký cho tất cả các tin nhắn. Vỡ nợ:
log / LIB_NAME / VERSION / log.txt
-log1-đường dẫn PATH
Đường dẫn nhật ký cho phiên bản đầu tiên của thư viện. Vỡ nợ:
log / LIB_NAME / V1 / log.txt
-log2-đường dẫn PATH
Đường dẫn nhật ký cho phiên bản thứ 2 của thư viện. Vỡ nợ:
log / LIB_NAME / V2 / log.txt
-log-chế độ PHƯƠNG THỨC
Thay đổi chế độ ghi nhật ký. Các chế độ:
w - ghi đè nhật ký cũ (mặc định) a - nối nhật ký cũ n - không ghi bất kỳ nhật ký nào
-danh sách bị ảnh hưởng
Tạo tệp với danh sách các ký hiệu không tương thích bên cạnh khả năng tương thích HTML
bản báo cáo. Sử dụng lệnh 'c ++ filt @file' từ GNU binutils để gỡ bỏ các ký hiệu C ++ trong
tệp được tạo. Tên mặc định:
abi_affected.txt src_affected.txt
thành phần TÊN
Tên thành phần trong tiêu đề và tóm tắt của báo cáo HTML. Vỡ nợ:
thư viện
-chức vụ TÊN
Thay đổi tên thư viện trong tiêu đề báo cáo thành NAME. Theo mặc định sẽ được hiển thị
tên được chỉ định bởi -l tùy chọn.
-thông tin thêm DIR
Đưa thông tin bổ sung vào DIR.
-thêm-đổ
Tạo kết xuất ABI mở rộng chứa tất cả các ký hiệu từ đơn vị dịch.
-lực lượng
Cố gắng sử dụng tùy chọn này nếu công cụ không hoạt động.
-lòng khoan dung LEVEL
Áp dụng một tập hợp các phép thử để biên dịch thành công các tệp tiêu đề đầu vào. Bạn có thể
cho phép một số mức dung sai bằng cách nối chúng thành một chuỗi (ví dụ: 13, 124,
Vân vân.). Các cấp độ:
1 - bỏ qua tiêu đề không phải Linux (ví dụ: win32 _ *. H, v.v.) 2 - bỏ qua tiêu đề nội bộ (ví dụ:
* _p.h, impl / *. h, v.v.) 3 - bỏ qua các tiêu đề bao gồm các tiêu đề không phải Linux 4 - bỏ qua
tiêu đề được bao gồm bởi những người khác
-chấp thuận
Bật mức dung sai cao nhất [1234].
-kiểm tra
Kiểm tra tính đầy đủ của kết xuất ABI.
-nhanh chóng
Phân tích nhanh. Tắt kiểm tra một số trường hợp mẫu.
-skip-nội-ký-hiệu MẪU
Không kiểm tra các ký hiệu khớp với mẫu.
-skip-nội-loại MẪU
Không kiểm tra các loại phù hợp với mẫu.
BÁO CÁO:
Báo cáo khả năng tương thích sẽ được tạo để:
compat_reports / LIB_NAME / V1_to_V2 / compat_report.html
Nhật ký sẽ được tạo để:
nhật ký / LIB_NAME / V1 / log.txt nhật ký / LIB_NAME / V2 / log.txt
EXIT MÃ:
0 - Tương thích. Công cụ đã chạy mà không có bất kỳ lỗi nào. khác XNUMX - Không tương thích hoặc
công cụ đã chạy với lỗi.
MORE THÔNG TIN:
http://lvc.github.io/abi-compliance-checker/
Sử dụng công cụ kiểm tra tuân thủ abi trực tuyến bằng các dịch vụ onworks.net