हैं 3 आम Abis यूएसए मानक इंटेल-संगत मशीनों पर खून (इटेनियम नहीं)।
- क्लासिक 32-बिट आर्किटेक्चर, जिसे अक्सर "x86" कहा जाता है, जिसमें
i[3-6]86-linux-gnu
जैसे ट्रिपल होते हैं। रजिस्टर्स और पॉइंटर्स 32 बिट्स दोनों हैं।
- मूल रूप से एएमडी से 64-बिट एक्सटेंशन, जिसे अक्सर "amd64" कहा जाता है, जिसमें
x86_64-linux-gnu
का जीएनयू ट्रिपल होता है। रजिस्टर्स और पॉइंटर्स 64 बिट्स दोनों हैं।
- नया "x32" एबीआई,
x86_64-linux-gnux32
के ट्रिपल के साथ। रजिस्टर्स 64 बिट्स हैं, लेकिन पॉइंटर्स केवल 32 बिट्स हैं, जो सूचक-भारी वर्कफ़्लोज़ में बहुत सारी मेमोरी बचाते हैं। यह भी सुनिश्चित करता है कि अन्य सभी 64-बिट केवल प्रोसेसर सुविधाएं उपलब्ध हैं।
ऊपर है अपने पर सिस्टम कॉल इंटरफ़ेस से प्रत्येक के मालिक हैं ld.so
, पुस्तकालयों, आदि का पूरा सेट के मालिक हैं लेकिन यह एक ही कर्नेल पर सभी 3 को चलाने के लिए संभव है।
लिनक्स पर, उनके लोडर हैं:
% objdump -f /lib/ld-linux.so.2 /lib64/ld-linux-x86-64.so.2 /libx32/ld-linux-x32.so.2
/lib/ld-linux.so.2: file format elf32-i386
architecture: i386, flags 0x00000150:
HAS_SYMS, DYNAMIC, D_PAGED
start address 0x00000a90
/lib64/ld-linux-x86-64.so.2: file format elf64-x86-64
architecture: i386:x86-64, flags 0x00000150:
HAS_SYMS, DYNAMIC, D_PAGED
start address 0x0000000000000c90
/libx32/ld-linux-x32.so.2: file format elf32-x86-64
architecture: i386:x64-32, flags 0x00000150:
HAS_SYMS, DYNAMIC, D_PAGED
start address 0x00000960
अब, अगर आप कुछ आपके विन्यास के साथ गड़बड़ कर रहा है इसका मतलब है कि "असंगत पुस्तकालय लंघन" के बारे में संदेश, हो रही है। सुनिश्चित करें कि आपके पास पर्यावरण में खराब चर नहीं है या कमांड लाइन पर या आपके पैकेज प्रबंधक के नियंत्रण के बाहर स्थापित फ़ाइलों को पास नहीं किया गया है।
ध्यान दें कि स्थैतिक पुस्तकालय आम तौर पर उनके लायक होने की तुलना में * अधिक * अधिक परेशानी हैं। यदि आप * वास्तव में * की जरूरत है और 'setuid' या किसी अन्य' क्षमताओं की आवश्यकता नहीं है, तो '$ {ORIGIN}' -संबंधित '-rpath' के साथ गतिशील पुस्तकालयों का उपयोग करें। – o11c