ක්‍රියාත්මක කළ හැකි සහ සම්බන්ධ කළ හැකි ආකෘතිය (ELF)

පරිගණකයේදී, ධාවනය කළ හැකි ලිපිගොනු, වස්තු කේත, හවුල් පුස්තකාල සහ හරය බැහැරකිරීම් සඳහා ක්‍රියාත්මක කළ හැකි සහ සම්බන්ධ කළ හැකි ආකෘතිය (ELF, කලින් හැඳින්වූයේ දිගු කළ හැකි සම්බන්ධක ආකෘතිය) පොදු ලෙස භාවිතා කරන ගොනු ආකෘතියකි. යුනික්ස් මෙහෙයුම් පද්ධති අනුවාදයේ System V Release 4 (SVR4) නම් වූ පද්ධතියේ යෙදුම් ද්වීමය අතුරුමුහුණත (ABI, Application Binary Interface) සඳහා වූ පිරිවිතරයන් තුළ මෙය මුලින්ම ප්‍රකාශයට පත් කළේය. පසුව මෙවලම් අතුරුමුහුණත් සම්මතයේදී විවිධ යුනික්ස් පද්ධති අලෙවිකරුවන් අතර ඉක්මනින් පිළිගන්නා ලදී. 1999 දී, 86open ව්‍යාපෘතිය මඟින් x86 ප්‍රොසෙසර වල  යුනික්ස් සහ යුනික්ස්-වැනි පද්ධති සඳහා වූ සම්මත ද්විමය ගොනු ආකෘතිය ලෙස එය තෝරා ගන්නා ලදී.

සැලසුම අනුව, ELF ආකෘතිය නම්‍යශීලී, දිගු කළ හැකි සහ හරස් වේදිකාවේ. නිදසුනක් වශයෙන්, එය විවිධ අන්තයන් සහ ලිපිනයන් ප්‍රමාණවලට සහය දක්වන බැවින් එය කිසිදු විශේෂිත මධ්‍ය සැකසුම් ඒකකයක් (CPU) හෝ උපදෙස් මාලා නිර්මාණ ශිල්පයක් බැහැර නොකරයි. මේ නිසාම, විවිධ දෘඩාංග වේදිකා මත පවතින විවිධ මෙහෙයුම් පද්ධති මඟින් එය සම්මත කර ඇත.

ගොනු සැකැස්ම 
සෑම ELF ගොනුවක්ම එක් ELF ශීර්ෂකයකින් සෑදී ඇති අතර පසුව ගොනු දත්ත වලින් සමන්විත වේ. දත්ත ඇතුළත් විය හැකි ආකාරය:

 වැඩසටහන් ශීර්ෂ වගුව, ශුන්‍ය හෝ වැඩි මතක අංශ විස්තර කරයි
 වගන්ති ශීර්ෂ වගුව, ශුන්‍ය හෝ වැඩි වගන්ති කොටස් විස්තර කරයි
 වැඩසටහන් ශීර්ෂ වගුව හෝ වගන්ති ශීර්ෂ වගුව මඟින් සඳහන් දත්ත

ගොනුවේ ධාවන කාල ක්‍රියාත්මක කිරීම සඳහා අවශ්‍ය තොරතුරු අංශ (segments) වල අඩංගු වන අතර, සම්බන්ධ කිරීම හා නැවත ස්ථානගත කිරීම සඳහා වැදගත් තොරතුරු වගන්ති වල අඩංගු වේ. ගොනුවේ ඇති එක් බයිටයක්, උපරිම ලෙස වගන්ති එකකට හිමිවිය හැකි අතර, අනාත බයිට කිසිදු වගන්තියකටවත් හිමි නොවී භාවිත කළ හැක.

ගොනු ශීර්ෂකය 
ELF ශීර්ෂකය මඟින් බිට් 32 හෝ 64 ලිපිනයන් භාවිතා කළ යුතුද යන්න ප්‍රකාශ කරයි. ශීර්ෂකයෙහි මෙම සැකැස්ම මඟින් බලපාන ක්ෂේත්‍ර තුනක් අඩංගු වන අතර ඒවා අනුගමනය කරන අනෙකුත් ක්ෂේත්‍රයන්හි ආරම්භය තීරනය කරයි. ELF ශීර්ෂකය 32-බිට් සඳහා බයිට් 52 සහ 64-බිට් සඳහා බයිට් 64 ක් දිගයි.

වැඩසටහන් ශීර්ෂකය 
ක්‍රමලේඛ රූප සටහනක් සාදා ගන්නා ආකාරය, ශීර්ෂ වගුව මඟින් පද්ධතියට පවසයි. එය ගොනුවේ  හි දක්නට ලැබේ, සහ  ප්‍රමාණයෙන් යුත්  පිවිසුම් වලින් සමන්විත වේ. 32-bit ELF එදිරිව 64-bit ELF වල පිරිසැලසුම තරමක් වෙනස් ය, මන්ද පෙළගැස්වීමේ හේතු මත  වෙනස් ව්‍යුහාත්මක ස්ථානයක ඇත. සෑම ඇතුළත් පිවිසුමක්ම ව්‍යුහගත කර ඇත්තේ:

අංශ ශීර්ෂකය

මෙවලම් 

 readelf යනු Unix ද්විමය මෙවලම්ක් වන අතර එය ELF ගොනු එකක් හෝ කිහිපයක් පිළිබඳ තොරතුරු පෙන්වයි. GNU Binutils විසින් සපයන  තවත් නොමිලේ මෘදුකාංගයක් වේ.
 elfutils පිවිතුරුව ලිනක්ස් සඳහා GNU Binutils විකල්ප මෙවලමක් වේ.
 elfdump යනු Solaris සහ FreeBSD යටතේ ලබා ගත හැක සඳහා ELF ගොනුවේ ELF තොරතුරු නිරික්සීම සඳහා විධානයකි.
 objdump මඟින් ELF ලිපි ගොනු සහ අනෙකුත් වස්තු ආකෘති පිළිබඳව පුළුල් පරාසයක තොරතුරු සපයයි. objdump සඳහා පසුබිම් ලෙස ද්විමය ගොනු විස්තර කිරීමේ පුස්තකාලය භාවිතා කරයි.
 යුනික්ස් file උපයෝගීතාවයට ELF ලිපිගොනු පිළිබඳ යම් තොරතුරු ප්‍රදර්ශනය කළ හැකිය, උපදෙස් මාලාව ඇතුළුව, ක්‍රියාත්මක කළ හැකි ද හෝ හවුල් වස්තු ගොනුවක කේතයක් භාවිතා කිරීමට ද හෝ කුමන ELF හරය බැහැරකිරීමක් සිදුවූවාද යන්න.

වැඩසටහන්

යුනික්ස්-වැනි පද්ධති 
විවිධ පරිසරයන්හි තිබූ පැරණි ආකෘති වෙනුවට ELF ආකෘතිය ප්‍රතිස්ථාපනය කර ඇත. එය යුනික්ස්-වැනි මෙහෙයුම් පද්ධති වල a.out සහ COFF ආකෘතීන් ප්‍රතිස්ථාපනය කර ඇත:

 ලිනක්ස්
 සොලාරිස් / ඉලුමෝස්
 IRIX
 FreeBSD 
 NetBSD
 OpenBSD
 රෙඩොක්ස්
 ඩ්‍රැගන්ෆ්ලයි BSD
 සිලබල්
 HP-UX (SOM අඛණ්ඩව භාවිතා කරන 32-bit PA-RISC වැඩසටහන් හැර)
 QNX නියුට්‍රිනෝ
 Minix

යුනික්ස් නොවූ ඇතුලත් කරගැනීම් 
යුනික්ස් නොවන මෙහෙයුම් පද්ධති තුල ද ELF ඇතුලත් කරගැනීම් දක්නට ඇත, ඒවා නම්:

 OpenVMS, එහි ඉටානියම් සහ amd64 අනුවාද වල 
 බීඕඑස් සංශෝධනය 4 සහ පසුව, x86 මත පදනම් වූ පරිගණක සඳහා (එය ජංගම ක්‍රියාත්මක ආකෘතිය වෙනුවට භාවිත වේ; පවර්පීසී අනුවාදය කැමති ක්‍රියාත්මක ආකෘතිය සමඟ පැවතුනි)
 හයිකු, බීඕඑස් හි විවෘත මූලාශ්‍ර නැවත භාවිත කිරීමකි
 RISC මෙහෙයුම් පද්ධතිය
 ස්ට්රැටස් VOS, PA-RISC සහ x86 අනුවාද වලින්
 ලිනක්ස් සඳහා වින්ඩෝස් උප පද්ධතිය භාවිතා කරමින් වින්ඩෝස් 10 සංවත්සර යාවත්කාලීන කිරීම.
 වින්ඩෝස් 11
 SkyOS
 ෆුචියා මෙහෙයුම් පද්ධතිය
 ඉසෙඩ්/ටීපීඑෆ්
 HPE නන්ස්ටොප් මෙහෙයුම් පද්ධතිය 
 ඩියෝස්

ක්‍රීඩා කොන්සෝල 
සමහර ක්‍රීඩා කොන්සෝල වල ELF ද භාවිතා කරයි:

 ජංගම ප්ලේස්ටේෂන්,  ප්ලේස්ටේෂන් වීටා, ප්ලේස්ටේෂන් (කොන්සෝලය), ප්ලේස්ටේෂන් 2, ප්ලේස්ටේෂන් 3, ප්ලේස්ටේෂන් 4, ප්ලේස්ටේෂන් 5
 GP2X
 ඩ්‍රීම් කාස්ට්
 ගේම් කියුබ්
 නින්ටෙන්ඩෝ 64
 වී
 වී යූ

පවර්පීසී 
ELF භාවිතා කරන, පවර්පීසී හි ක්‍රියාත්මක වන අනෙකුත් (මෙහෙයුම්) පද්ධති:

 ඇමීගාඕස් 4, ELF විසින් ඇමීගා තුල පැවතුන පීපීසී සකසනය පුළුල් කිරීමේ කාඩ්පත් භාවිතා කළ දිගුකළ හන්ක් ආකෘතිය (EHF, Extended Hunk Format) වෙනුවට ප්‍රතිස්ථාපනය කරන ලදි
 මො(ර්)ෆ ඕස්
 ඒඅර්ඕස්

ජංගම දුරකථන 
ජංගම දුරකථන සහ ජංගම උපාංග සඳහා වූ සමහර මෙහෙයුම් පද්ධති ELF භාවිතා කරයි:

 Symbian OS v9 විසින් ELF ගොනු ආකෘතිය මත පදනම් වූ E32Image ආකෘතිය භාවිතා කරයි
 සෝනි එරික්සන්; උදාහරණයක් ලෙස W800i, W610, W300, ආදිය).
 Siemens, SGOLD සහ SGOLD2 වේදිකා: Siemens C65 සිට S75 දක්වා සහ BenQ-Siemens E71/EL71;
 මෝටරෝලා; උදාහරණයක් ලෙස, E398, SLVR L7, V360, v3i (සහ පැච් කළ සියලු දුරකථන LTE2).
 බඩා; උදාහරණයක් ලෙස සැම්සුන් වේව් S8500 .
 මා(ඒ)මෝ හෝ මීගෝ මෙහෙයුම් පද්ධතිය ක්‍රියාත්මක කරන නොකියා දුරකථන හෝ ටැබ්ලට් පරිගණක; උදාහරණයක් ලෙස නොකියා N900.
 ඇන්ඩ්‍රොයිඩ්, ELF .so (හවුල් වස්තුව) පුස්තකාල ජාවා අතුරු මුහුණත සඳහා භාවිතා කරයි. ඇන්ඩ්‍රොයිඩ් 5.0 "ලොලිපොප්" වලින් පසු පැමිණුන ඇන්ඩ්‍රොයිඩ් ධාවනකාල (ART, Android RunTime) සමඟ, සියලුම යෙදුම් ස්ථාපනය කිරීමේදී ස්වදේශීය ELF ලෙස සම්පාදනය කෙරේ.

සමහර දුරකතන සඳහා ස්ථිරාංගයට ඇසෙම්බලි කේතයක් දමා පැච් කළ පසු ELF ගොනු භාවිත කල හැක. මෙම ක්‍රමය ELFPack ලෙස හදුන්වන අතර මෙය භූගත වෙනස් කිරීමේ සංස්කෘතියට අයත්වේ. ඇට්මෙල් AVR (8-bit), AVR32 සහ ටෙක්සාස් උපකරණ MSP430 වැනි ක්‍ෂුද්‍ර පාලක තුලද ELF ආකෘතිය භාවිත කර ඇත. සමහර විවෘත ස්ථිරාංග සඳහා වු බද්ධ කිරීම් මගින් ද ELF ගොනු භාවිත කළ හැක, විශේෂයෙන් කැපී පෙනෙන ලෙස ඇපල් සමාගම විසින් නිෂ්පාදනය කරන ලද පවර්පීසී යන්ත්‍ර සියල්ලම පාහේ භාවිතා කරන ලදී..

පිරිවිතර 
 පොදු:
 System V ABI සංස්කරණය 4.1 (1997-03-18)
 System V ABI යාවත්කාලීන කිරීම (2009 ඔක්තෝම්බර්)
 AMD64:
 System V ABI, AMD64 අතිරේකය
 ARM:
 ELF for the ARM නිර්මාණ ශිල්පය
 IA-32:
 System V ABI, Intel386 නිර්මාණ ශිල්ප සකසන අතිරේකය
 IA-64:
 Itanium මෘදුකාංග සම්මුතීන් සහ ධාවන කාල මාර්ගෝපදේශය (2000 සැප්තැම්බර්)
 M32R:
 M32R ELF ABI අතිරේකය අනුවාදය 1.2 (2004-08-26)
 MIPS:
 System V ABI, MIPS RISC සකසන අතිරේකය
 MIPS EABI ලියකියවිලි ගත කිරීම (2003-06-11)
 Motorola 6800:
 Motorola 8- සහ 16- bit කාවැද්දූ ABI
 PA-RISC:
 PA-RISC අනුවාදය 1.43 සඳහා ELF අතිරේකය 1.43 (1997 ඔක්තෝම්බර් 6)
 PowerPC:
 System V ABI, PPC අතිරේකය
 PowerPC කාවැද්දූ ABI 32-Bit ඇතුලත් කරවීම (1995-10-01)
 64-bit PowerPC ELF ABI අතිරේකයේ අනුවාදය 1.9 (2004)
 SPARC:
 System V ABI, SPARC අතිරේකය
 S/390:
 S/390 32bit ELF ABI අතිරේකය
 zSeries:
 zSeries 64bit ELF ABI අතිරේකය
 සිම්බියන් මෙහෙයුම් පද්ධති 9:
 සිම්බියන් මෙහෙයුම් පද්ධති 9 තුල E32Image ගොනු වර්ගය

ලිනක්ස් සම්මත පදනම (LSB) එය නිශ්චිතව දක්වා ඇති නිර්මාණ ශිල්ප සමහරක් සඳහා ඉහත සඳහන් පිරිවිතරයන් පරිපූරණය කරයි. උදාහරණයක් ලෙස, System V ABI, AMD64 අතිරේකය සඳහා ද එය සිදු වේ.

86open 
86open යනු මෘදුකාංග සංවර්ධකයින් x86 නිර්මාණ ශිල්පයට දිරිමත් කරවීම සඳහා එම නිර්මාණ ශිල්පය සහිත පොදු පරිගණක තුල යුනික්ස් සහ යුනික්ස්-වැනි මෙහෙයුම් පද්ධති සඳහා පොදු ද්විමය ගොනු වර්ගයක් ඇති කිරීමේ ව්‍යාපෘතියකි. මූලික අදහස වූයේ, තනි යුනික්ස් පිරිවිතරයට පූර්වගාමියා වූ කුඩා උප කුලක ස්පෙක් 1170 මත ප්‍රමිතිකරණය කිරීම සහ GNU C පුස්තකාලය (glibc) මඟින් x86 යුනික්ස්-වැනි මෙහෙයුම් පද්ධති මත නවීකරණය නොකළ ද්විමය ගොනු ක්‍රියාත්මක කිරීම ය. මෙම ව්‍යාපෘතිය මුලින් නම් කරන ලද්දේ "ස්පෙක් 150" යනුවෙනි.

තෝරාගත් ගොනු ආකෘතිය වූයේ ELF, විශේෂයෙන් ලිනක්ස් හි භාවිත ELF. පසුව සියළුම අලෙවිකරුවන්ගේ සහ සියළුම මෙහෙයුම් පද්ධති වල සහය දක්වන ද ෆැක්ටො ප්‍රමිතියක් බවට පත්වින.

මෙම කණ්ඩායම 1997 දී විද්‍යුත් තැපැල් සාකච්ඡා ආරම්භ කළ අතර ප්‍රථම වරට 1997 අගෝස්තු 22 දින සැන්ටා කෲස් මෙහෙයුම් කාර්යාලයේදී හමු විය.

මෙහෙයුම් කමිටුව වූයේ මාර්ක් එවිං, ඩියොන් ජොන්සන්, ඉවාන් ලෙයිබොවිච්, බෘස් පෙරන්ස්, ඇන්ඩෘ රෝච්, බ්‍රයන් වේන් ස්පාර්ක්ස් සහ ලිනස් ටොවල්ඩ් ය. ව්‍යාපෘතියේ අනෙකුත් පුද්ගලයින් වූයේ කීත් බොස්ටික්, චක් ක්‍රැනෝර්, මයිකල් ඩේවිඩ්සන්, ක්‍රිස් ජී. ඩිමෙට්‍රියෝ, උල්රිච් ඩ්‍රෙපර්, ඩොන් ඩගර්, ස්ටීව් ජින්ස්බර්ග්, ජොන් "මැඩෝග්" හෝල්, රොන් හෝල්ට්, ජෝර්දාන් හබර්ඩ්, ඩේව් ජෙන්සන්, කීන් ජොන්ස්ටන්, ඇන්ඩෘ ජෝසි, රොබර්ට් ලිප්, බෙලා ලුබ්කින්, ටිම් මාර්ස්ලන්ඩ්, ග්‍රෙග් පේජ්, රොනල්ඩ් ජෝ රෙකෝඩ්, ටිම් රකල්, ජොයෙල් සිල්වර්ස්ටයින්, චියා-පි ටියන් සහ එරික් ට්‍රෝන්. මෙහෙයුම් පද්ධති හා නිෂ්පාදන සමාගම් නියෝජනය වූයේ BeOS, BSDI, FreeBSD, ඉන්ටෙල්, ලිනක්ස්, NetBSD, SCO සහ SunSoft ලෙසය.

ව්‍යාපෘතිය ප්‍රගතියක් ලබා දුන්නේ 1998 මැද භාගයේදී SCO විසින් OpenServer, UnixWare සහ Solaris මත ලිනක්ස් ද්විමය ධාවනය කළ හැකි විවෘත මූලාශ්‍ර අනුකූලතා ස්ථරයක් වන lxrun සංවර්ධනය කිරීම මගිනි. SCO විසින් 1999 මාර්තු මාසයේදී ලිනක්ස් වර්ල්ඩ් හි lxrun සහාය නිල වශයෙන් නිවේදනය කළේය. සන් මයික්‍රොසිස්ටම් විසින් 1999 මුල් භාගයේදී සොලාරිස් සඳහා නිල වශයෙන් lxrun සඳහා සහය වීම ආරම්භ කළ අතර, පසුව ලිනක්ස් යෙදුම් සඳහා සොලාරිස් බහාලුම් හරහා ලිනක්ස් ද්විමය ආකෘතියේ ඒකාබද්ධ සහය වෙත මාරු විය.

BSD දිගුකාලීනව ලිනක්ස් ද්විමය සහය (අනුකූලතා තට්ටුවක් හරහා) සහ ප්‍රධාන x86 යුනික්ස් වෙළෙන්දන් ආකෘතියට සහය දැක්වීමත් සමඟම, ව්‍යාපෘතිය මඟින් ලිනක්ස් lxrun යනු කර්මාන්තය විසින් තෝරාගත් ආකෘතිය බව තීරණය කළේය. විසුරුවා හැරීම 1999 ජූලි 25 ප්‍රකාශ කළේය.

FatELF: ලිනක්ස් සඳහා විශ්වීය ද්විමය 
FatELF යනු ELF ද්විමය ආකෘති දිගුවක් වන අතර එමඟින් fat ද්විමය හැකියාවන් එකතු වේ. එය ලිනක්ස් සහ යුනික්ස්-වැනි අනෙකුත් මෙහෙයුම් පද්ධති සඳහා ඉලක්ක කර ඇත. CPU නිර්මාණ ශිල්පය වියුක්තකරණයට (බයිට් අනුපිළිවෙල, වචන ප්‍රමාණය, සීපීයූ උපදෙස් මාලාව යනාදිය) අතිරේකව, මෘදුකාංග-වේදිකා වියුක්ත කිරීමේ වාසියක් ඇත. උදා, බහු ABI කර්නල් අනුවාදයන්ට සහය වන ද්විමය.  FatELF ප්‍රධාන ලිනක්ස් කර්නලය සමඟ ඒකාබද්ධ කර නොමැත.

මේවා ද බලන්න 

 යෙදුම් ද්විමය අතුරුමුහුණත (ABI)
 ක්‍රියාත්මක කළ හැකි ගොනු ආකෘති සංසන්දනය
 DWARFදත්ත නිදොස් කිරීම සඳහා වූ ආකෘතියක්
 ඉන්ටෙල් ද්විමය අනුකූලතා ප්‍රමිතිය
 ජංගම ක්‍රියා ගොනුවින්ඩෝස් භාවිතා කරන ආකෘතිය
 vDSOකෘතිම DSO
 ස්ථාන-ස්වාධීන කේතය

මූලාශ්‍ර 

Webarchive template wayback links
CS1 errors: missing periodical