Tiếng AnhTiếng PhápTiếng Tây Ban Nha

Ad


Biểu tượng yêu thích OnWorks

abicompat - Trực tuyến trên đám mây

Chạy abicompat trong nhà cung cấp dịch vụ lưu trữ miễn phí OnWorks trên 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

Đây là lệnh abicompat có thể được 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


abicompat - kiểm tra khả năng tương thích ABI

abicompat kiểm tra xem một ứng dụng liên kết với một thư viện được chia sẻ nhất định vẫn còn
ABI tương thích với phiên bản tiếp theo của thư viện đó. Nếu phiên bản mới của
thư viện giới thiệu sự không tương thích ABI, sau đó abicompat gợi ý cho người dùng về những gì chính xác
đó là sự không tương thích.

MỜI


abicompat [tùy chọn] [ ]

LỰA CHỌN


· --Cứu giúp

Hiển thị một trợ giúp ngắn về lệnh và thoát.

· --phiên bản | -v

Hiển thị phiên bản của chương trình và thoát.

· - danh sách-không xác định-ký hiệu | -u

Hiển thị danh sách các ký hiệu không xác định của ứng dụng và thoát.

· --show-tên cơ sở | -b

Trong báo cáo kết quả do công cụ phát ra, tùy chọn này làm cho ứng dụng và
thư viện chỉ được gọi bằng tên cơ sở của chúng; không phải bằng một cái tên tuyệt đối đầy đủ. Cái này
có thể hữu ích để sử dụng trong các tập lệnh muốn so sánh tên của ứng dụng và
thư viện độc lập với tên thư mục của chúng.

· --app-debug-thông tin-dir

Đặt đường dẫn đến thư mục chứa thông tin gỡ lỗi của ứng dụng
phải được đặt ra. Điều này rất hữu ích cho các tệp nhị phân ứng dụng để gỡ lỗi
thông tin nằm trong một bộ tệp riêng biệt.

· --lib-debug-thông tin-dir1

Đặt đường dẫn đến thư mục chứa thông tin gỡ lỗi của phiên bản đầu tiên
của thư viện chia sẻ được cho là sẽ được bố trí. Điều này rất hữu ích cho thư viện được chia sẻ
nhị phân mà thông tin gỡ lỗi nằm trong một tập hợp tệp riêng biệt.

· --lib-debug-thông tin-dir2

Đặt đường dẫn đến thư mục chứa thông tin gỡ lỗi của phiên bản thứ hai
của thư viện chia sẻ được cho là sẽ được bố trí. Điều này rất hữu ích cho thư viện được chia sẻ
nhị phân mà thông tin gỡ lỗi nằm trong một tập hợp tệp riêng biệt.

· --no-show-locs
Không hiển thị thông tin về nơi trong 2 chia sẻ thư viện tương ứng
loại đã được thay đổi.

· - chế độ yếu

Điều này kích hoạt chế độ yếu của máy tính. Trong chế độ này, chỉ một phiên bản của
thư viện là bắt buộc. Đó là, abicompat được gọi như thế này:

abicompat - chế độ yếu

Lưu ý rằng - chế độ yếu thậm chí có thể bỏ qua tùy chọn nếu chỉ có một phiên bản của
thư viện được đưa ra, cùng với ứng dụng; trong trường hợp đó, máy tính tự động
chuyển sang hoạt động ở chế độ yếu:

abicompat

Trong chế độ yếu này, các loại hàm và biến được xuất bởi thư viện và
được ứng dụng sử dụng (như trong, các ký hiệu của các hàm và biến này
không được xác định trong ứng dụng và được xác định và xuất bởi thư viện) là
so với phiên bản của các loại này như mong đợi của ứng dụng. Và nếu những
hai phiên bản của các loại khác nhau, máy tính cho người dùng biết sự khác biệt
là.

Nói cách khác, trong chế độ này, máy tính kiểm tra xem các loại chức năng và
các biến do thư viện xuất ra có nghĩa giống như những gì ứng dụng
mong đợi, theo như ABI có liên quan.

Lưu ý rằng trong chế độ này, máy tính không phát hiện các hàm hoặc biến đã xuất
(biểu tượng) mà ứng dụng mong đợi nhưng bị xóa khỏi thư viện.
Đó là lý do tại sao nó được gọi là yếu chế độ.

TRỞ VỀ GIÁ TRỊ


Mã thoát của máy tính lệnh là 0 nếu ABI của các mã nhị phân là
được so sánh bằng hoặc khác không nếu chúng khác nhau hoặc nếu công cụ gặp lỗi.

Trong trường hợp sau, mã lối ra là một trường bit rộng 8 bit, trong đó mỗi bit có một
ý nghĩa cụ thể.

Bit đầu tiên, có giá trị 1, được đặt tên là ABIDIFF_ERROR có nghĩa là có một lỗi.

Bit thứ hai, có giá trị 2, được đặt tên là ABIDIFF_USAGE_ERROR có nghĩa là có một lỗi trong cách
người dùng đã gọi công cụ. Chẳng hạn, nó có thể được đặt nếu người dùng gọi công cụ
với một chuyển đổi dòng lệnh không xác định, với một số hoặc đối số sai, v.v. Nếu bit này là
thiết lập, sau đó ABIDIFF_ERROR bit cũng phải được thiết lập.

Bit thứ ba, có giá trị 4, được đặt tên là ABIDIFF_ABI_CHANGE nghĩa là ABI của các mã nhị phân
so sánh là khác nhau.

Bit thứ tư, có giá trị 8, được đặt tên là ABIDIFF_ABI_INCOMPATIBLE_CHANGE nghĩa là ABI của
nhị phân được so sánh là khác nhau theo cách không tương thích. Nếu bit này được đặt, thì
ABIDIFF_ABI_CHANGE bit cũng phải được thiết lập. Nếu ABIDIFF_ABI_CHANGE được thiết lập và
ABIDIFF_INCOMPATIBLE_CHANGE is KHÔNG đặt, thì điều đó có nghĩa là ABI được so sánh có thể
hoặc có thể không tương thích. Trong trường hợp đó, một con người cần phải xem xét các thay đổi ABI
để quyết định xem chúng có tương thích hay không.

Các bit còn lại không được sử dụng trong thời điểm này.

SỬ DỤNG VÍ DỤ


· Phát hiện khả năng không tương thích ABI trong phiên bản thư viện chia sẻ mới:

$ con mèo -n test0.h
1 cấu trúc foo
2 {
3 intm0;
4
5 foo ()
6: m0 ()
7 {}
8};
9
10 foo *
11 first_func ();
12
13 khoảng trống
14 second_func (foo &);
15
16 khoảng trống
17 third_func ();
$

$ cat -n test-app.cc
1 // Biên dịch với:
2 // g ++ -g -Wall -o test-app -L. -ltest-0 test-app.cc
3
4 #include "test0.h"
5
6 tấn
7 chính ()
8 {
9 foo * f = first_func ();
10 giây_func (* f);
11 trả về 0;
12}
$

$ con mèo -n test0.cc
1 // Biên dịch cái này với:
2 // g ++ -g -Wall -shared -o libtest-0.so test0.cc
3
4 #include "test0.h"
5
6 foo *
7 first_func ()
8 {
9 foo * f = new foo ();
10 trở lại f;
11}
12
13 khoảng trống
14 second_func (foo &)
15 {
16}
17
18 khoảng trống
19 third_func ()
20 {
21}
$

$ con mèo -n test1.h
1 cấu trúc foo
2 {
3 intm0;
4 ký tự m1; / * <- một thành viên mới đã được thêm vào đây! * /
5
6 foo ()
7: m0 (),
8 m1 ()
9 {}
10};
11
12 foo *
13 first_func ();
14
15 khoảng trống
16 second_func (foo &);
17
18 khoảng trống
19 third_func ();
$

$ con mèo -n test1.cc
1 // Biên dịch cái này với:
2 // g ++ -g -Wall -shared -o libtest-1.so test1.cc
3
4 #include "test1.h"
5
6 foo *
7 first_func ()
8 {
9 foo * f = new foo ();
10 trở lại f;
11}
12
13 khoảng trống
14 second_func (foo &)
15 {
16}
17
18 / * Hãy bình luận về định nghĩa của third_func ()
19 khoảng trống
20 third_func ()
21 {
22}
23 * /
$

· Biên dịch phiên bản đầu tiên và thứ hai của thư viện: libtest-0.so
libtest-1.so:

$ g ++ -g -Wall -shared -o libtest-0.so test0.cc
$ g ++ -g -Wall -shared -o libtest-1.so test1.cc

· Biên dịch ứng dụng và liên kết nó với phiên bản đầu tiên của thư viện,
tạo ra ứng dụng thử nghiệm nhị phân:

$ g ++ -g -Mall -o test-app -L. -ltest-0.so test-app.cc

· Bây giờ, sử dụng máy tính để xem liệu libtest-1.so có tương thích với ABI với ứng dụng hay không, liên quan đến
đối với ABI của libtest-0.so:

$ ứng dụng thử nghiệm abicompat libtest-0.so libtest-1.so
Tệp ELF 'test-app' có thể không tương thích ABI với 'libtest-1.so' do sự khác biệt với 'libtest-0.so' bên dưới:
Tóm tắt các thay đổi về chức năng: 0 Đã loại bỏ, 2 Đã thay đổi, 0 Chức năng được thêm vào
Tóm tắt thay đổi biến: 0 Đã xóa, 0 Đã thay đổi, 0 Đã thêm biến

2 chức năng với một số thay đổi kiểu con gián tiếp:

[C] 'function foo * first_func ()' có một số thay đổi kiểu con gián tiếp:
loại trả lại đã thay đổi:
được trỏ tới loại 'struct foo':
kích thước thay đổi từ 32 thành 64 bit
Chèn 1 thành viên dữ liệu:
'char foo :: m1', ở độ lệch 32 (tính bằng bit)
[C] 'function void second_func (foo &)' có một số thay đổi kiểu con gián tiếp:
tham số 0 của kiểu 'foo &' có các thay đổi kiểu phụ:
loại tham chiếu 'struct foo' đã thay đổi, như đã báo cáo trước đó

$

· Bây giờ sử dụng chế độ yếu của abicompat, tức là, chỉ cung cấp ứng dụng và
phiên bản mới của thư viện:

$ abicompat - kiểm tra chế độ yếu-ứng dụng libtest-1.so
các chức năng được xác định trong thư viện
'libtest-1.so'
có các loại phụ khác với ứng dụng nào
'ứng dụng thử nghiệm'
mong đợi:

function foo * first_func ():
loại trả lại đã thay đổi:
được trỏ tới loại 'struct foo':
kích thước thay đổi từ 32 thành 64 bit
Chèn 1 thành viên dữ liệu:
'char foo :: m1', ở độ lệch 32 (tính bằng bit)

$

Sử dụng abicompat trực tuyến bằng các dịch vụ onworks.net


Máy chủ & Máy trạm miễn phí

Tải xuống ứng dụng Windows & Linux

Lệnh Linux

Ad