Amazon Best VPN GoSearch

OnWorks favicon

abicompat - ອອນລາຍໃນຄລາວ

ແລ່ນ abicompat ໃນ OnWorks ຜູ້ໃຫ້ບໍລິການໂຮດຕິ້ງຟຣີຜ່ານ Ubuntu Online, Fedora Online, Windows online emulator ຫຼື MAC OS online emulator

ນີ້ແມ່ນຄໍາສັ່ງ abicompat ທີ່ສາມາດດໍາເນີນການໄດ້ໃນ OnWorks ຜູ້ໃຫ້ບໍລິການໂຮດຕິ້ງຟຣີໂດຍໃຊ້ຫນຶ່ງໃນສະຖານີເຮັດວຽກອອນໄລນ໌ຟຣີຫຼາຍອັນຂອງພວກເຮົາເຊັ່ນ Ubuntu Online, Fedora Online, Windows online emulator ຫຼື MAC OS online emulator

ໂຄງການ:

NAME


abicompat - ກວດເບິ່ງຄວາມເຂົ້າກັນໄດ້ ABI

abicompat ກວດເບິ່ງວ່າແອັບພລິເຄຊັນທີ່ເຊື່ອມຕໍ່ກັບຫ້ອງສະຫມຸດທີ່ແບ່ງປັນໃຫ້ແມ່ນຍັງຢູ່
ABI ເຂົ້າກັນໄດ້ກັບສະບັບຕໍ່ມາຂອງຫ້ອງສະຫມຸດນັ້ນ. ຖ້າຫາກວ່າສະບັບໃຫມ່ຂອງ
ຫ້ອງສະຫມຸດແນະນໍາຄວາມບໍ່ເຂົ້າກັນຂອງ ABI, ຫຼັງຈາກນັ້ນ abicompat ຊີ້ບອກຜູ້ໃຊ້ໃນສິ່ງທີ່ແນ່ນອນ
ຄວາມບໍ່ເຂົ້າກັນນັ້ນແມ່ນ.

ການຮຽກຮ້ອງ


abicompat [ທາງ​ເລືອກ​] [ ]

OPTIONS


· - ຊ່ວຍ

ສະແດງການຊ່ວຍເຫຼືອສັ້ນໆກ່ຽວກັບຄໍາສັ່ງແລະອອກ.

· - ການປ່ຽນແປງ | -v

ສະແດງສະບັບຂອງໂຄງການແລະອອກ.

· --list-undefined-ສັນຍາລັກ | -u

ສະແດງລາຍຊື່ຂອງສັນຍາລັກທີ່ບໍ່ໄດ້ກໍານົດຂອງແອັບພລິເຄຊັນແລະອອກ.

· --show-base-names | -b

ໃນບົດລາຍງານຜົນໄດ້ຮັບທີ່ປ່ອຍອອກມາໂດຍເຄື່ອງມື, ທາງເລືອກນີ້ເຮັດໃຫ້ຄໍາຮ້ອງສະຫມັກແລະ
ຫໍສະຫມຸດຖືກກ່າວເຖິງໂດຍຊື່ພື້ນຖານຂອງພວກເຂົາເທົ່ານັ້ນ; ບໍ່ແມ່ນຊື່ເຕັມ. ນີ້
ສາມາດເປັນປະໂຫຍດສໍາລັບການນໍາໃຊ້ໃນສະຄິບທີ່ຕ້ອງການປຽບທຽບຊື່ຂອງຄໍາຮ້ອງສະຫມັກແລະ
ຫ້ອງສະຫມຸດເປັນເອກະລາດຂອງສິ່ງທີ່ຊື່ໄດເລກະທໍລີຂອງເຂົາເຈົ້າ.

· --app-debug-info-dir

ກໍານົດເສັ້ນທາງໄປຫາໄດເລກະທໍລີທີ່ຂໍ້ມູນດີບັກຂອງແອັບພລິເຄຊັນແມ່ນ
ຄວນ​ຈະ​ໄດ້​ວາງ​ອອກ​. ນີ້ແມ່ນເປັນປະໂຫຍດສໍາລັບ binaries ຄໍາຮ້ອງສະຫມັກສໍາລັບການ debug ໄດ້
ຂໍ້ມູນແມ່ນຢູ່ໃນຊຸດໄຟລ໌ແຍກຕ່າງຫາກ.

· --lib-debug-info-dir1

ກໍານົດເສັ້ນທາງໄປຫາໄດເລກະທໍລີພາຍໃຕ້ຂໍ້ມູນ debug ຂອງສະບັບທໍາອິດ
ຂອງຫໍສະຫມຸດທີ່ໃຊ້ຮ່ວມກັນແມ່ນຄວນຈະຖືກວາງໄວ້. ນີ້ແມ່ນເປັນປະໂຫຍດສໍາລັບຫ້ອງສະຫມຸດທີ່ໃຊ້ຮ່ວມກັນ
ໄບນາຣີທີ່ຂໍ້ມູນດີບັກຢູ່ໃນຊຸດໄຟລ໌ແຍກຕ່າງຫາກ.

· --lib-debug-info-dir2

ກໍານົດເສັ້ນທາງໄປຫາໄດເລກະທໍລີພາຍໃຕ້ຂໍ້ມູນ debug ຂອງສະບັບທີສອງ
ຂອງຫໍສະຫມຸດທີ່ໃຊ້ຮ່ວມກັນແມ່ນຄວນຈະຖືກວາງໄວ້. ນີ້ແມ່ນເປັນປະໂຫຍດສໍາລັບຫ້ອງສະຫມຸດທີ່ໃຊ້ຮ່ວມກັນ
ໄບນາຣີທີ່ຂໍ້ມູນດີບັກຢູ່ໃນຊຸດໄຟລ໌ແຍກຕ່າງຫາກ.

· --no-show-locs
ຢ່າສະແດງຂໍ້ມູນກ່ຽວກັບບ່ອນທີ່ຢູ່ໃນ ຄັ້ງທີສອງ ແບ່ງປັນ ຫ້ອງສະຫມຸດ ທີ່ກ່ຽວຂ້ອງ
ປະເພດຖືກປ່ຽນແປງ.

· -- ໂຫມດອ່ອນ

ນີ້ກະຕຸ້ນຮູບແບບທີ່ອ່ອນແອຂອງ abicompat. ໃນ​ຮູບ​ແບບ​ນີ້​, ມີ​ພຽງ​ແຕ່​ຫນຶ່ງ​ສະ​ບັບ​ຂອງ​
ຫ້ອງສະຫມຸດແມ່ນຕ້ອງການ. ນັ້ນແມ່ນ, abicompat ຖືກເອີ້ນແບບນີ້:

abicompat --weak-mode

ຫມາຍເຫດວ່າ -- ໂຫມດອ່ອນ ທາງ​ເລືອກ​ແມ່ນ​ແຕ່​ສາ​ມາດ​ຖືກ​ຍົກ​ເວັ້ນ​ຖ້າ​ຫາກ​ວ່າ​ພຽງ​ແຕ່​ຫນຶ່ງ​ສະ​ບັບ​ຂອງ​
ຫ້ອງສະຫມຸດໄດ້ຖືກມອບ, ພ້ອມກັບຄໍາຮ້ອງສະຫມັກ; ໃນ​ກໍ​ລະ​ນີ​ນັ້ນ, abicompat ອັດຕະໂນມັດ
ສະຫຼັບເພື່ອເຮັດວຽກຢູ່ໃນໂໝດອ່ອນ:

abicompat

ໃນຮູບແບບທີ່ອ່ອນແອນີ້, ປະເພດຂອງຫນ້າທີ່ແລະຕົວແປທີ່ສົ່ງອອກໂດຍຫ້ອງສະຫມຸດແລະ
ບໍລິໂພກໂດຍຄໍາຮ້ອງສະຫມັກ (ໃນ, ສັນຍາລັກຂອງຫນ້າທີ່ແລະຕົວແປເຫຼົ່ານີ້
ແມ່ນ undefined ໃນຄໍາຮ້ອງສະຫມັກແລະຖືກກໍານົດແລະສົ່ງອອກໂດຍຫ້ອງສະຫມຸດ) ແມ່ນ
ເມື່ອປຽບທຽບກັບລຸ້ນຂອງປະເພດເຫຼົ່ານີ້ຕາມທີ່ຄາດໄວ້ໂດຍແອັບພລິເຄຊັນ. ແລະຖ້າຫາກວ່າເຫຼົ່ານີ້
ສອງ​ສະ​ບັບ​ຂອງ​ປະ​ເພດ​ແມ່ນ​ແຕກ​ຕ່າງ​ກັນ​, abicompat ບອກຜູ້ໃຊ້ວ່າມີຄວາມແຕກຕ່າງແນວໃດ
ແມ່ນ.

ໃນຄໍາສັບຕ່າງໆອື່ນໆ, ໃນຮູບແບບນີ້, abicompat ກວດເບິ່ງວ່າປະເພດຂອງຫນ້າທີ່ແລະ
ຕົວແປທີ່ສົ່ງອອກໂດຍຫ້ອງສະຫມຸດຫມາຍເຖິງສິ່ງດຽວກັນກັບສິ່ງທີ່ຄໍາຮ້ອງສະຫມັກ
ຄາດວ່າ, ເທົ່າທີ່ ABI ກ່ຽວຂ້ອງ.

ໃຫ້​ສັງ​ເກດ​ວ່າ​ໃນ​ຮູບ​ແບບ​ນີ້​, abicompat ບໍ່ກວດພົບຟັງຊັນ ຫຼືຕົວແປທີ່ສົ່ງອອກ
(ສັນ​ຍາ​ລັກ​) ທີ່​ຄາດ​ວ່າ​ຈະ​ໂດຍ​ຄໍາ​ຮ້ອງ​ສະ​ຫມັກ​ແຕ່​ວ່າ​ໄດ້​ຖືກ​ໂຍກ​ຍ້າຍ​ອອກ​ຈາກ​ຫ້ອງ​ສະ​ຫມຸດ​.
ນັ້ນແມ່ນເຫດຜົນທີ່ວ່າມັນຖືກເອີ້ນວ່າ ອ່ອນແອ mode

ກັບຄືນ VALUES


ລະຫັດທາງອອກຂອງ abicompat ຄໍາສັ່ງແມ່ນ 0 ຖ້າ ABI ຂອງ binaries ເປັນ
ປຽບທຽບແມ່ນເທົ່າທຽມກັນ, ຫຼືບໍ່ແມ່ນສູນຖ້າພວກມັນແຕກຕ່າງກັນຫຼືຖ້າເຄື່ອງມືພົບຂໍ້ຜິດພາດ.

ໃນກໍລະນີຕໍ່ມາ, ລະຫັດອອກແມ່ນ 8-bits-wide bit field ທີ່ແຕ່ລະ bit ມີ a
ຄວາມຫມາຍສະເພາະ.

ບິດທຳອິດຂອງຄ່າ 1, ຊື່ ABIDIFF_ERROR ຫມາຍ​ຄວາມ​ວ່າ​ມີ​ຄວາມ​ຜິດ​ພາດ​.

ບິດທີສອງ, ຂອງມູນຄ່າ 2, ຊື່ ABIDIFF_USAGE_ERROR ຫມາຍຄວາມວ່າມີຄວາມຜິດພາດໃນວິທີການ
ຜູ້ໃຊ້ໄດ້ຮຽກຮ້ອງເຄື່ອງມື. ມັນອາດຈະຖືກກໍານົດ, ຕົວຢ່າງ, ຖ້າຜູ້ໃຊ້ຮຽກຮ້ອງເຄື່ອງມື
ດ້ວຍການປ່ຽນເສັ້ນຄໍາສັ່ງທີ່ບໍ່ຮູ້ຈັກ, ມີຕົວເລກຜິດ ຫຼື argument, ແລະອື່ນໆ ຖ້າບິດນີ້ແມ່ນ
ຕັ້ງ, ຈາກນັ້ນ ABIDIFF_ERROR bit ຕ້ອງໄດ້ຮັບການຕັ້ງຄ່າເຊັ່ນດຽວກັນ.

ບິດທີສາມ, ຂອງມູນຄ່າ 4, ຊື່ ABIDIFF_ABI_CHANGE ຫມາຍຄວາມວ່າ ABI ຂອງ binaries ເປັນ
ປຽບທຽບແມ່ນແຕກຕ່າງກັນ.

ບິດທີສີ່, ຂອງມູນຄ່າ 8, ຊື່ ABIDIFF_ABI_INCOMPATIBLE_CHANGE ຫມາຍຄວາມວ່າ ABI ຂອງ
binaries ປຽບທຽບແມ່ນແຕກຕ່າງກັນໃນທາງທີ່ບໍ່ເຂົ້າກັນໄດ້. ຖ້າບິດນີ້ຖືກຕັ້ງ, ຫຼັງຈາກນັ້ນ
ABIDIFF_ABI_CHANGE bit ຕ້ອງໄດ້ຮັບການຕັ້ງຄ່າເຊັ່ນດຽວກັນ. ຖ້າ ABIDIFF_ABI_CHANGE ຖືກກໍານົດແລະ
ABIDIFF_INCOMPATIBLE_CHANGE is ບໍ່ ກໍານົດ, ຫຼັງຈາກນັ້ນມັນຫມາຍຄວາມວ່າ ABIs ທີ່ຖືກປຽບທຽບອາດຈະ
ຫຼືອາດຈະບໍ່ເຂົ້າກັນໄດ້. ໃນກໍລະນີດັ່ງກ່າວ, ມະນຸດຕ້ອງທົບທວນຄືນການປ່ຽນແປງ ABI
ເພື່ອຕັດສິນໃຈວ່າພວກມັນເຂົ້າກັນໄດ້ຫຼືບໍ່.

ບິດທີ່ຍັງເຫຼືອບໍ່ໄດ້ຖືກນໍາໃຊ້ສໍາລັບປັດຈຸບັນ.

ການນໍາໃຊ້ ຕົວຢ່າງ


· ການ​ກວດ​ສອບ​ຄວາມ​ບໍ່​ເຂົ້າ​ກັນ ABI ທີ່​ເປັນ​ໄປ​ໄດ້​ໃນ​ສະ​ບັບ​ຫ້ອງ​ສະ​ຫມຸດ​ທີ່​ແບ່ງ​ປັນ​ໃຫມ່​:

$ cat -n test0.h
ໂຄງສ້າງ 1 fo
2 {
3 int m0;
4
5 foo()
6 : m0()
7 {}
8 };
9
10 ຟຸດ*
11 first_func();
12
13 ຫວ່າງເປົ່າ
14 second_func(foo&);
15
16 ຫວ່າງເປົ່າ
17 third_func();
$

$ cat -n test-app.cc
1 // ລວບລວມກັບ:
2 // g++ -g -Wall -o test-app -L. -ltest-0 test-app.cc
3
4 #include "test0.h"
5
6 int
7 ຫຼັກ()
8 {
9 foo* f = first_func();
10 second_func(*f);
11 ກັບຄືນ 0;
12 }
$

$ cat -n test0.cc
1 // ລວບລວມຂໍ້ມູນນີ້ດ້ວຍ:
2 // g++ -g -Wall -shared -o libtest-0.so test0.cc
3
4 #include "test0.h"
5
6 ຟຸດ*
7 first_func()
8 {
9 foo* f = new foo();
10 ກັບຄືນ f;
11 }
12
13 ຫວ່າງເປົ່າ
14 second_func(foo&)
15 {
16 }
17
18 ຫວ່າງເປົ່າ
19 third_func()
20 {
21 }
$

$ cat -n test1.h
ໂຄງສ້າງ 1 fo
2 {
3 int m0;
4 char m1; /* <-- ໄດ້ເພີ່ມສະມາຊິກໃໝ່ຢູ່ທີ່ນີ້! */
5
6 foo()
7 : m0( ),
8 m1()
9 {}
10 };
11
12 ຟຸດ*
13 first_func();
14
15 ຫວ່າງເປົ່າ
16 second_func(foo&);
17
18 ຫວ່າງເປົ່າ
19 third_func();
$

$ cat -n test1.cc
1 // ລວບລວມຂໍ້ມູນນີ້ດ້ວຍ:
2 // g++ -g -Wall -shared -o libtest-1.so test1.cc
3
4 #include "test1.h"
5
6 ຟຸດ*
7 first_func()
8 {
9 foo* f = new foo();
10 ກັບຄືນ f;
11 }
12
13 ຫວ່າງເປົ່າ
14 second_func(foo&)
15 {
16 }
17
18 /* ໃຫ້ຄໍາຄິດຄໍາເຫັນອອກຄໍານິຍາມຂອງ third_func()
19 ຫວ່າງເປົ່າ
20 third_func()
21 {
22 }
23 */
$

·ລວບລວມສະບັບທໍາອິດແລະທີສອງຂອງຫ້ອງສະຫມຸດ: 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

·ລວບລວມຄໍາຮ້ອງສະຫມັກແລະເຊື່ອມຕໍ່ມັນກັບສະບັບທໍາອິດຂອງຫ້ອງສະຫມຸດ,
ການ​ສ້າງ ແອັບທົດສອບ ຄູ່:

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

· ດຽວນີ້, ໃຊ້ abicompat ເພື່ອເບິ່ງວ່າ libtest-1.so ແມ່ນ ABI ເຂົ້າກັນໄດ້ກັບ app, ດ້ວຍຄວາມນັບຖື
ກັບ ABI ຂອງ libtest-0.so:

$ abicompat test-app libtest-0.so libtest-1.so
ໄຟລ໌ ELF 'test-app' ອາດຈະບໍ່ເປັນ ABI ທີ່ເຂົ້າກັນໄດ້ກັບ 'libtest-1.so' ເນື່ອງຈາກຄວາມແຕກຕ່າງກັບ 'libtest-0.so' ຂ້າງລຸ່ມນີ້:
ສັງລວມການປ່ຽນແປງຟັງຊັນ: 0 ຖອດອອກ, 2 ປ່ຽນແປງ, 0 ຟັງຊັນເພີ່ມ
ສະຫຼຸບການປ່ຽນແປງຕົວແປ: 0 ລົບອອກ, 0 ປ່ຽນແປງ, 0 ເພີ່ມຕົວແປ

2 ຫນ້າທີ່ມີການປ່ຽນແປງບາງປະເພດຍ່ອຍທາງອ້ອມ:

[C]'function foo* first_func()' ມີການປ່ຽນແປງບາງປະເພດຍ່ອຍທາງອ້ອມ:
ປ່ຽນ​ປະ​ເພດ​ກັບ​ຄືນ​ໄປ​ບ່ອນ​:
ຊີ້ໄປພິມ 'struct foo':
ຂະຫນາດປ່ຽນຈາກ 32 ຫາ 64 bits
1 ການແຊກສະມາຊິກຂໍ້ມູນ:
'char foo::m1', ທີ່ offset 32 ​​(in bits)
[C] 'function void second_func(foo&)' ມີການປ່ຽນແປງບາງປະເພດຍ່ອຍທາງອ້ອມ:
ພາລາມິເຕີ 0 ຂອງປະເພດ 'foo&' ມີການປ່ຽນແປງປະເພດຍ່ອຍ:
ປະເພດອ້າງອີງ 'struct foo' ມີການປ່ຽນແປງ, ດັ່ງທີ່ໄດ້ລາຍງານກ່ອນຫນ້ານີ້

$

·ໃນປັດຈຸບັນນໍາໃຊ້ຮູບແບບທີ່ອ່ອນແອຂອງ abicompat, ນັ້ນແມ່ນ, ສະຫນອງພຽງແຕ່ຄໍາຮ້ອງສະຫມັກແລະ
ສະ​ບັບ​ໃຫມ່​ຂອງ​ຫໍ​ສະ​ຫມຸດ​:

$ abicompat --weak-mode test-app libtest-1.so
ຫນ້າທີ່ກໍານົດໄວ້ໃນຫ້ອງສະຫມຸດ
'libtest-1.so'
ມີປະເພດຍ່ອຍທີ່ແຕກຕ່າງຈາກຄໍາຮ້ອງສະຫມັກໃດ
'ແອັບທົດສອບ'
ຄາດຫວັງວ່າ:

function foo* first_func():
ປ່ຽນ​ປະ​ເພດ​ກັບ​ຄືນ​ໄປ​ບ່ອນ​:
ຊີ້ໄປພິມ 'struct foo':
ຂະຫນາດປ່ຽນຈາກ 32 ຫາ 64 bits
1 ການແຊກສະມາຊິກຂໍ້ມູນ:
'char foo::m1', ທີ່ offset 32 ​​(in bits)

$

ໃຊ້ abicompat ອອນໄລນ໌ໂດຍໃຊ້ບໍລິການ onworks.net


ເຊີບເວີ ແລະສະຖານີເຮັດວຽກຟຣີ

ດາວໂຫຼດແອັບ Windows ແລະ Linux

Linux ຄຳ ສັ່ງ

Ad




×
ການ​ໂຄ​ສະ​ນາ
?ຊື້ເຄື່ອງ, ຈອງ, ຫຼືຊື້ທີ່ນີ້ — ບໍ່ມີຄ່າໃຊ້ຈ່າຍ, ຊ່ວຍໃຫ້ການບໍລິການຟຣີ.