आप उस glibc में सही हैं प्रतीक संस्करण का उपयोग करता है। यदि आप उत्सुक हैं, तो glibc 2.1 में प्रस्तुत प्रतीक संस्करण कार्यान्वयन को here वर्णित किया गया है और here वर्णित सूर्य की प्रतीक संस्करण योजना का विस्तार है।
एक विकल्प आपकी बाइनरी को स्थिर रूप से लिंक करना है। यह शायद सबसे आसान विकल्प है।
तुम भी एक chroot निर्माण वातावरण में अपने द्विआधारी निर्माण, या एक glibc- नई => glibc- वर्ष पार संकलक का उपयोग कर सकता है।
http://www.trevorpounds.com ब्लॉग पोस्ट Linking to Older Versioned Symbols (glibc) के अनुसार, यह किसी भी प्रतीक के लिए मजबूर करने के लिए संभव है जब तक कि यह एक ही .symver
छद्म सेशन कि संस्करणीकृत परिभाषित करने के लिए प्रयोग किया जाता है का उपयोग करके मान्य है एक पुराने एक के खिलाफ जुड़े होने की पहली जगह में प्रतीकों। निम्नलिखित उदाहरण blog post से उद्धृत किया गया है।
निम्नलिखित उदाहरण ग्लिब के रीयलपाथ का उपयोग करता है, लेकिन यह सुनिश्चित करता है कि यह पुराने 2.2.5 संस्करण के विरुद्ध जुड़ा हुआ है।
#include <limits.h>
#include <stdlib.h>
#include <stdio.h>
__asm__(".symver realpath,[email protected]_2.2.5");
int main()
{
char* unresolved = "/lib64";
char resolved[PATH_MAX+1];
if(!realpath(unresolved, resolved))
{ return 1; }
printf("%s\n", resolved);
return 0;
}
अरग यह वास्तव में उन परेशान लिनक्स समस्याओं में से एक है जहां समाधान हमेशा "आपको ऐसा नहीं करना चाहिए", जिसका अर्थ है "यह काम नहीं करता है और किसी ने इसे अभी तक ठीक नहीं किया है"। – Timmmm
लोगों ने विंडोज़ पर डीएलएल नरक के बारे में शिकायत की। मुझे लिनक्स * कुछ * aficionados याद है जो इसे विंडोज़ दुनिया से एक विशेष रूप से भयानक उदाहरण के रूप में लाने की कोशिश कर रहा है। जब मैं पहली बार * यह * एक दशक पहले लिनक्स विकास कर रहा था, तो मैंने अपने हाथों में अपना चेहरा दफन कर दिया था। – 0xC0000022L