ພາສາອັງກິດພາສາຝຣັ່ງແອສປາໂຍນ

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

  • 1
    MantisBT
    MantisBT
    Mantis ເປັນເວັບທີ່ສາມາດນຳໃຊ້ໄດ້ງ່າຍ
    bugtracker ອີງໃສ່ການຊ່ວຍເຫຼືອ bug ຜະລິດຕະພັນ
    ການຕິດຕາມ. ມັນຮຽກຮ້ອງໃຫ້ມີ PHP, MySQL ແລະ a
    ເຊີບເວີເວັບ. ກວດເບິ່ງຕົວຢ່າງຂອງພວກເຮົາ ແລະເປັນເຈົ້າພາບ
    ຂໍ້ສະເໜີ...
    ດາວໂຫລດ MantisBT
  • 2
    LAN Messenger
    LAN Messenger
    LAN Messenger ເປັນແອັບພລິເຄຊັນສົນທະນາ p2p
    ສໍາລັບການສື່ສານ intranet ແລະບໍ່
    ຕ້ອງການເຄື່ອງແມ່ຂ່າຍ. ຫຼາກຫຼາຍຂອງ handy
    ຄຸນນະສົມບັດແມ່ນສະຫນັບສະຫນູນລວມທັງ
    ແຈ້ງ​ການ...
    ດາວໂຫລດ LAN Messenger
  • 3
    DrJava
    DrJava
    DrJava ແມ່ນໂຄງການທີ່ມີນ້ໍາຫນັກເບົາ
    ສະພາບແວດລ້ອມສໍາລັບ Java ທີ່ຖືກອອກແບບເພື່ອສົ່ງເສີມ
    ການພັດທະນາຊອບແວທີ່ຂັບເຄື່ອນດ້ວຍການທົດສອບ. ມັນ
    ປະກອບມີບັນນາທິການໂຄງການອັດສະລິຍະ,
    int...
    ດາວໂຫລດ DrJava
  • 4
    .Net Framework 3.5 ຕົວຕິດຕັ້ງອອຟໄລ
    .Net Framework 3.5 ຕົວຕິດຕັ້ງອອຟໄລ
    Windows 8, ແລະຮຸ່ນຂ້າງເທິງມາພ້ອມກັບ
    ເວີຊັ່ນ 4.xx ຂອງ NET Framework. ແຕ່ຖ້າ
    ຜູ້ໃຊ້ກໍາລັງຍົກລະດັບຈາກ Windows 7 ເປັນ
    Windows 8, NET Framework 3.5 ແມ່ນສົມບູນ
    ເປີດໃຊ້...
    ດາວໂຫລດ .Net Framework 3.5 ຕົວຕິດຕັ້ງອອຟໄລ
  • 5
    NSIS: Nullsoft Scriptable Install System
    NSIS: Nullsoft Scriptable Install System
    NSIS (Nullsoft Scriptable Install
    System) ເປັນແຫຼ່ງເປີດທີ່ເປັນມືອາຊີບ
    ລະບົບເພື່ອສ້າງຕົວຕິດຕັ້ງ Windows. ມັນ
    ໄດ້ຖືກອອກແບບໃຫ້ມີຂະຫນາດນ້ອຍແລະມີຄວາມຍືດຫຍຸ່ນ
    ເປັນໄປໄດ້...
    ດາວໂຫລດ NSIS: Nullsoft Scriptable Install System
  • 6
    ການກວດສອບຄວາມຖືກຕ້ອງ
    ການກວດສອບຄວາມຖືກຕ້ອງ
    AuthPass ເປັນລະຫັດຜ່ານແຫຼ່ງເປີດ
    ຜູ້​ຈັດ​ການ​ທີ່​ມີ​ສະ​ຫນັບ​ສະ​ຫນູນ​ສໍາ​ລັບ​ການ​ທີ່​ນິ​ຍົມ​ແລະ​
    ພິສູດແລ້ວ Keepass (kdbx 3.x ແລະ kdbx 4.x ...
    ດາວໂຫຼດ authpass
  • ເພີ່ມເຕີມ »

Linux ຄຳ ສັ່ງ

Ad