Ubuntu Online, Fedora Online, Windows online emulator അല്ലെങ്കിൽ MAC OS ഓൺലൈൻ എമുലേറ്റർ എന്നിങ്ങനെയുള്ള ഞങ്ങളുടെ ഒന്നിലധികം സൗജന്യ ഓൺലൈൻ വർക്ക്സ്റ്റേഷനുകളിലൊന്ന് ഉപയോഗിച്ച് OnWorks സൗജന്യ ഹോസ്റ്റിംഗ് ദാതാവിൽ പ്രവർത്തിപ്പിക്കാൻ കഴിയുന്ന abicompat കമാൻഡ് ആണിത്.
പട്ടിക:
NAME
abicompat - ABI അനുയോജ്യത പരിശോധിക്കുക
നൽകിയ പങ്കിട്ട ലൈബ്രറിയുമായി ലിങ്ക് ചെയ്യുന്ന ഒരു ആപ്ലിക്കേഷൻ ഇപ്പോഴും ഉണ്ടോയെന്ന് abicompat പരിശോധിക്കുന്നു
ABI ആ ലൈബ്രറിയുടെ തുടർന്നുള്ള പതിപ്പുമായി പൊരുത്തപ്പെടുന്നു. യുടെ പുതിയ പതിപ്പാണെങ്കിൽ
ലൈബ്രറി ഒരു ABI പൊരുത്തക്കേട് അവതരിപ്പിക്കുന്നു, തുടർന്ന് abicompat ഉപയോക്താവിനെ കൃത്യമായി എന്താണ് സൂചിപ്പിക്കുന്നത്
പൊരുത്തക്കേടാണ്.
ഇൻവോക്കേഷൻ
abicompat [ഓപ്ഷനുകൾ] [ ]
ഓപ്ഷനുകൾ
· --സഹായിക്കൂ
കമാൻഡിനെയും എക്സിറ്റിനെയും കുറിച്ചുള്ള ഒരു ചെറിയ സഹായം പ്രദർശിപ്പിക്കുക.
· --പതിപ്പ് | -v
പ്രോഗ്രാമിന്റെ പതിപ്പ് പ്രദർശിപ്പിച്ച് പുറത്തുകടക്കുക.
· --ലിസ്റ്റ്-നിർവചിക്കാത്ത-ചിഹ്നങ്ങൾ | -u
ആപ്ലിക്കേഷന്റെ നിർവചിക്കാത്ത ചിഹ്നങ്ങളുടെ ലിസ്റ്റ് പ്രദർശിപ്പിക്കുകയും പുറത്തുകടക്കുകയും ചെയ്യുക.
· --ഷോ-ബേസ്-നെയിമുകൾ | -b
ടൂൾ പുറപ്പെടുവിച്ച ഫലമായ റിപ്പോർട്ടിൽ, ഈ ഓപ്ഷൻ ആപ്ലിക്കേഷൻ ഉണ്ടാക്കുന്നു
ഗ്രന്ഥശാലകളെ അവയുടെ അടിസ്ഥാന നാമത്തിൽ മാത്രമേ പരാമർശിക്കാവൂ; പൂർണ്ണമായ ഒരു പേരിൽ അല്ല. ഈ
ആപ്ലിക്കേഷന്റെ പേരുകൾ താരതമ്യം ചെയ്യാൻ ആഗ്രഹിക്കുന്ന സ്ക്രിപ്റ്റുകളിൽ ഉപയോഗിക്കാൻ ഇത് ഉപയോഗപ്രദമാകും
ലൈബ്രറികൾ അവയുടെ ഡയറക്ടറി നാമങ്ങളിൽ നിന്ന് സ്വതന്ത്രമായി.
· --app-debug-info-dir
ആപ്ലിക്കേഷന്റെ ഡീബഗ് വിവരങ്ങൾ ഉള്ള ഡയറക്ടറിയിലേക്ക് പാത്ത് സജ്ജമാക്കുക
വെച്ചു എന്നു കരുതപ്പെടുന്നു. ഡീബഗ് ചെയ്യുന്ന ആപ്ലിക്കേഷൻ ബൈനറികൾക്ക് ഇത് ഉപയോഗപ്രദമാണ്
വിവരങ്ങൾ ഒരു പ്രത്യേക ഫയലുകളിലാണ്.
· --lib-debug-info-dir1
ആദ്യ പതിപ്പിന്റെ ഡീബഗ് വിവരങ്ങൾ ഉള്ള ഡയറക്ടറിയിലേക്ക് പാത്ത് സജ്ജമാക്കുക
പങ്കിട്ട ലൈബ്രറിയുടെ നിരത്തണം. പങ്കിട്ട ലൈബ്രറിക്ക് ഇത് ഉപയോഗപ്രദമാണ്
ഡീബഗ് വിവരങ്ങൾ ഒരു പ്രത്യേക ഫയലുകളിലുള്ള ബൈനറികൾ.
· --lib-debug-info-dir2
രണ്ടാമത്തെ പതിപ്പിന്റെ ഡീബഗ് വിവരങ്ങൾ ഉള്ള ഡയറക്ടറിയിലേക്ക് പാത്ത് സജ്ജമാക്കുക
പങ്കിട്ട ലൈബ്രറിയുടെ നിരത്തണം. പങ്കിട്ട ലൈബ്രറിക്ക് ഇത് ഉപയോഗപ്രദമാണ്
ഡീബഗ് വിവരങ്ങൾ ഒരു പ്രത്യേക ഫയലുകളിലുള്ള ബൈനറികൾ.
· --നോ-ഷോ-ലോക്കുകൾ
എവിടെ എന്നതിനെക്കുറിച്ചുള്ള വിവരങ്ങൾ കാണിക്കരുത് സെക്കന്റ് പങ്കിട്ടു ലൈബ്രറി ബന്ധപ്പെട്ടവ
തരം മാറ്റി.
· --ദുർബലമായ മോഡ്
ഇത് ദുർബലമായ മോഡ് ട്രിഗർ ചെയ്യുന്നു abicompat. ഈ മോഡിൽ, ഒരു പതിപ്പ് മാത്രം
ലൈബ്രറി ആവശ്യമാണ്. അതായത്, abicompat ഇതുപോലെയാണ് വിളിക്കുന്നത്:
abicompat --വീക്ക്-മോഡ്
ശ്രദ്ധിക്കുക --ദുർബലമായ മോഡ് എന്നതിന്റെ ഒരു പതിപ്പ് മാത്രമാണെങ്കിൽ പോലും ഓപ്ഷൻ ഒഴിവാക്കാവുന്നതാണ്
അപേക്ഷയോടൊപ്പം ലൈബ്രറി നൽകിയിട്ടുണ്ട്; അങ്ങനെയെങ്കിൽ, abicompat ഓട്ടോമാറ്റിയ്ക്കായി
ദുർബലമായ മോഡിൽ പ്രവർത്തിക്കാനുള്ള സ്വിച്ചുകൾ:
abicompat
ഈ ദുർബലമായ മോഡിൽ, ലൈബ്രറി കയറ്റുമതി ചെയ്യുന്ന ഫംഗ്ഷനുകളുടെയും വേരിയബിളുകളുടെയും തരങ്ങളും
ആപ്ലിക്കേഷൻ ഉപയോഗിച്ചത് (ഈ ഫംഗ്ഷനുകളുടെയും വേരിയബിളുകളുടെയും ചിഹ്നങ്ങൾ പോലെ
ആപ്ലിക്കേഷനിൽ നിർവചിക്കപ്പെടാത്തവയും ലൈബ്രറി നിർവചിക്കുകയും കയറ്റുമതി ചെയ്യുകയും ചെയ്യുന്നു) ആകുന്നു
ആപ്ലിക്കേഷൻ പ്രതീക്ഷിക്കുന്നത് പോലെ ഈ തരങ്ങളുടെ പതിപ്പുമായി താരതമ്യം ചെയ്യുമ്പോൾ. ഇവയാണെങ്കിൽ
തരങ്ങളുടെ രണ്ട് പതിപ്പുകൾ വ്യത്യസ്തമാണ്, abicompat വ്യത്യാസങ്ങൾ എന്താണെന്ന് ഉപയോക്താവിനോട് പറയുന്നു
ആകുന്നു.
മറ്റൊരു വിധത്തിൽ പറഞ്ഞാൽ, ഈ മോഡിൽ, abicompat ഫംഗ്ഷനുകളുടെ തരങ്ങളും ഒപ്പം
ലൈബ്രറി കയറ്റുമതി ചെയ്യുന്ന വേരിയബിളുകൾ അർത്ഥമാക്കുന്നത് ആപ്ലിക്കേഷന്റെ അതേ കാര്യമാണ്
പ്രതീക്ഷിക്കുന്നു, എബിഐയെ സംബന്ധിച്ചിടത്തോളം.
ഈ മോഡിൽ ശ്രദ്ധിക്കുക, abicompat കയറ്റുമതി ചെയ്ത പ്രവർത്തനങ്ങളോ വേരിയബിളുകളോ കണ്ടെത്തുന്നില്ല
(ചിഹ്നങ്ങൾ) ആപ്ലിക്കേഷൻ പ്രതീക്ഷിക്കുന്നതും എന്നാൽ ലൈബ്രറിയിൽ നിന്ന് നീക്കം ചെയ്യുന്നതും.
അതുകൊണ്ടാണ് അങ്ങനെ വിളിക്കുന്നത് ദുർബലമായ മോഡ്.
തിരികെ മൂല്യങ്ങൾ
യുടെ എക്സിറ്റ് കോഡ് abicompat ബൈനറികളുടെ എബിഐ ആണെങ്കിൽ കമാൻഡ് ഒന്നുകിൽ 0 ആണ്
താരതമ്യപ്പെടുത്തുന്നത് തുല്യമാണ്, അല്ലെങ്കിൽ അവ വ്യത്യാസപ്പെട്ടാൽ അല്ലെങ്കിൽ ഉപകരണം ഒരു പിശക് നേരിട്ടാൽ പൂജ്യമല്ല.
പിന്നീടുള്ള സന്ദർഭത്തിൽ, എക്സിറ്റ് കോഡ് 8-ബിറ്റ് വൈഡ് ബിറ്റ് ഫീൽഡാണ്, അതിൽ ഓരോ ബിറ്റിനും a ഉണ്ട്
നിർദ്ദിഷ്ട അർത്ഥം.
ആദ്യത്തെ ബിറ്റ്, മൂല്യം 1-ന്റെ പേര് ABIDIFF_ERROR ഒരു പിശക് ഉണ്ടായിരുന്നു എന്നാണ് അർത്ഥമാക്കുന്നത്.
രണ്ടാമത്തെ ബിറ്റ്, മൂല്യം 2-ന്റെ പേര് ABIDIFF_USAGE_ERROR വഴിയിൽ ഒരു പിശക് ഉണ്ടായിരുന്നു എന്നാണ് അർത്ഥമാക്കുന്നത്
ഉപയോക്താവ് ഉപകരണം അഭ്യർത്ഥിച്ചു. ഉദാഹരണത്തിന്, ഉപയോക്താവ് ഉപകരണം അഭ്യർത്ഥിച്ചാൽ അത് സജ്ജമാക്കിയേക്കാം
ഒരു അജ്ഞാത കമാൻഡ് ലൈൻ സ്വിച്ച്, തെറ്റായ നമ്പർ അല്ലെങ്കിൽ ആർഗ്യുമെന്റ് മുതലായവ. ഈ ബിറ്റ് ആണെങ്കിൽ
സെറ്റ്, പിന്നെ ദി ABIDIFF_ERROR ബിറ്റും സെറ്റ് ചെയ്യണം.
മൂല്യം 4-ന്റെ മൂന്നാമത്തെ ബിറ്റ്, പേര് ABIDIFF_ABI_CHANGE ബൈനറികളുടെ എബിഐ എന്നാണ് അർത്ഥമാക്കുന്നത്
താരതമ്യം ചെയ്യുന്നത് വ്യത്യസ്തമാണ്.
നാലാമത്തെ ബിറ്റ്, മൂല്യം 8, പേര് ABIDIFF_ABI_INCOMPATIBLE_CHANGE എന്നതിന്റെ ABI എന്നാണ് അർത്ഥമാക്കുന്നത്
താരതമ്യം ചെയ്ത ബൈനറികൾ പൊരുത്തപ്പെടാത്ത രീതിയിൽ വ്യത്യസ്തമാണ്. ഈ ബിറ്റ് സജ്ജമാക്കിയാൽ, പിന്നെ
ABIDIFF_ABI_CHANGE ബിറ്റും സെറ്റ് ചെയ്യണം. എങ്കിൽ ABIDIFF_ABI_CHANGE സെറ്റ് ആണ്
ABIDIFF_INCOMPATIBLE_CHANGE is ചെയ്യില്ല സജ്ജീകരിച്ചു, അപ്പോൾ അതിനർത്ഥം താരതമ്യപ്പെടുത്തുന്ന എബിഐകൾ സാധ്യതയാണെന്നാണ്
അല്ലെങ്കിൽ അനുയോജ്യമല്ലായിരിക്കാം. അങ്ങനെയെങ്കിൽ, ഒരു മനുഷ്യൻ ABI മാറ്റങ്ങൾ അവലോകനം ചെയ്യേണ്ടതുണ്ട്
അവ അനുയോജ്യമാണോ അല്ലയോ എന്ന് തീരുമാനിക്കാൻ.
ശേഷിക്കുന്ന ബിറ്റുകൾ തൽക്കാലം ഉപയോഗിക്കുന്നില്ല.
USAGE ഉദാഹരണങ്ങൾ
ഒരു പുതിയ പങ്കിട്ട ലൈബ്രറി പതിപ്പിൽ സാധ്യമായ എബിഐ പൊരുത്തക്കേട് കണ്ടെത്തൽ:
$ cat -n test0.h
1 struct foo
2 {
3 int m0;
4
5 അടി()
6 : m0()
7 {}
8 };
9
10 അടി*
11 first_func();
12
13 അസാധുവാണ്
14 second_func(foo&);
15
16 അസാധുവാണ്
17 മൂന്നാം_ഫങ്ക്();
$
$ cat -n test-app.cc
1 // ഇതുപയോഗിച്ച് കംപൈൽ ചെയ്യുക:
2 // g++ -g -Wall -o test-app -L. -ltest-0 test-app.cc
3
4 #"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 #"test0.h" ഉൾപ്പെടുത്തുക
5
6 അടി*
7 ഫസ്റ്റ്_ഫങ്ക്()
8 {
9 foo* f = പുതിയ foo();
10 റിട്ടേൺ എഫ്;
11 }
12
13 അസാധുവാണ്
14 സെക്കൻഡ്_ഫങ്ക്(ഫൂ&)
15 {
16 }
17
18 അസാധുവാണ്
19 മൂന്നാം_ഫങ്ക്()
20 {
21 }
$
$ cat -n test1.h
1 struct foo
2 {
3 int m0;
4 ചാർ m1; /* <-- ഒരു പുതിയ അംഗം ഇവിടെ ചേർത്തു! */
5
6 അടി()
7 : m0(),
8 m1()
9 {}
10 };
11
12 അടി*
13 first_func();
14
15 അസാധുവാണ്
16 second_func(foo&);
17
18 അസാധുവാണ്
19 മൂന്നാം_ഫങ്ക്();
$
$ cat -n test1.cc
1 // ഇതുമായി സമാഹരിക്കുക:
2 // g++ -g -Wall -shared -o libtest-1.so test1.cc
3
4 #"test1.h" ഉൾപ്പെടുത്തുക
5
6 അടി*
7 ഫസ്റ്റ്_ഫങ്ക്()
8 {
9 foo* f = പുതിയ foo();
10 റിട്ടേൺ എഫ്;
11 }
12
13 അസാധുവാണ്
14 സെക്കൻഡ്_ഫങ്ക്(ഫൂ&)
15 {
16 }
17
18 /* മൂന്നാമത്തെ_func() ന്റെ നിർവചനം നമുക്ക് അഭിപ്രായപ്പെടാം
19 അസാധുവാണ്
20 മൂന്നാം_ഫങ്ക്()
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 ആപ്പുമായി എബിഐ അനുയോജ്യമാണോ എന്ന് നോക്കുക
libtest-0.so എന്ന എബിഐയിലേക്ക്:
$ abicompat test-app libtest-0.so libtest-1.so
ചുവടെയുള്ള 'libtest-1.so' യുമായുള്ള വ്യത്യാസങ്ങൾ കാരണം ELF ഫയൽ 'ടെസ്റ്റ്-ആപ്പ്' 'libtest-0.so' എന്നതിന് എബിഐ അനുയോജ്യമല്ലായിരിക്കാം:
ഫംഗ്ഷനുകളുടെ മാറ്റങ്ങളുടെ സംഗ്രഹം: 0 നീക്കം ചെയ്തു, 2 മാറ്റി, 0 പ്രവർത്തനങ്ങൾ ചേർത്തു
വേരിയബിളുകളുടെ മാറ്റങ്ങളുടെ സംഗ്രഹം: 0 നീക്കം ചെയ്തു, 0 മാറ്റി, 0 വേരിയബിൾ ചേർത്തു
ചില പരോക്ഷമായ ഉപ-തരം മാറ്റങ്ങളുള്ള 2 പ്രവർത്തനങ്ങൾ:
[C]'function foo* first_func()' ചില പരോക്ഷമായ ഉപ-തരം മാറ്റങ്ങളുണ്ട്:
റിട്ടേൺ തരം മാറ്റി:
'struct foo' എന്ന് ടൈപ്പ് ചെയ്യാൻ ചൂണ്ടിക്കാണിക്കുന്നു:
വലിപ്പം 32 ൽ നിന്ന് 64 ബിറ്റുകളായി മാറി
1 അംഗ ഡാറ്റ ഉൾപ്പെടുത്തൽ:
'char foo::m1', ഓഫ്സെറ്റ് 32-ൽ (ബിറ്റുകളിൽ)
[C]'function void second_func(foo&)' ചില പരോക്ഷമായ ഉപ-തരം മാറ്റങ്ങളുണ്ട്:
'foo&' തരത്തിന്റെ പാരാമീറ്റർ 0-ന് ഉപ-തരം മാറ്റങ്ങളുണ്ട്:
പരാമർശിച്ച തരം 'struct foo' മാറ്റി, നേരത്തെ റിപ്പോർട്ട് ചെയ്തതുപോലെ
$
· ഇപ്പോൾ abicompat-ന്റെ ദുർബലമായ മോഡ് ഉപയോഗിക്കുക, അതായത്, വെറും ആപ്ലിക്കേഷനും ഒപ്പം
ലൈബ്രറിയുടെ പുതിയ പതിപ്പ്:
$ abicompat --weak-mode test-app libtest-1.so
ലൈബ്രറിയിൽ നിർവചിച്ചിരിക്കുന്ന പ്രവർത്തനങ്ങൾ
'libtest-1.so'
ഏത് ആപ്ലിക്കേഷനിൽ നിന്നും വ്യത്യസ്തമായ ഉപ-തരം ഉണ്ട്
'ടെസ്റ്റ്-ആപ്പ്'
പ്രതീക്ഷിക്കുന്നു:
ഫംഗ്ഷൻ foo* first_func():
റിട്ടേൺ തരം മാറ്റി:
'struct foo' എന്ന് ടൈപ്പ് ചെയ്യാൻ ചൂണ്ടിക്കാണിക്കുന്നു:
വലിപ്പം 32 ൽ നിന്ന് 64 ബിറ്റുകളായി മാറി
1 അംഗ ഡാറ്റ ഉൾപ്പെടുത്തൽ:
'char foo::m1', ഓഫ്സെറ്റ് 32-ൽ (ബിറ്റുകളിൽ)
$
onworks.net സേവനങ്ങൾ ഉപയോഗിച്ച് abicompat ഓൺലൈനായി ഉപയോഗിക്കുക