swrastबात सॉफ्टवेयर रेंडरर है। इसका मतलब है कि यह आपके ग्राफिक्स कार्ड के लिए हार्डवेयर ड्राइवर नहीं ढूंढ रहा है। वहाँ स्थापित libGL पुस्तकालयों का एक गुच्छा और उन पुस्तकालयों के प्रतीकात्मक लिंक का एक गुच्छा है। इनको शेल से चलाने के लिए देखें:
find /usr -iname "*libGL.so*" -exec ls -l -- {} +
अब आपकी समस्या का संभावित कारण यह है कि ग्राफिक्स ड्राइवर स्थापित करने से कभी-कभी ये प्रतीकात्मक लिंक टूट जाते हैं। (विशेष रूप /usr/local/lib/libGL.so.1.2.0से गलत परिवाद या गलत लिंक की सहानुभूति होने की संभावना है)।
ओपनग्लॉग प्रोग्राम को चलाने के लिए आप किस लाइब्रेरी की कोशिश कर रहे हैं, यह जानने के लिए कि आप थोड़ी सी वर्बोसिटी को चालू कर सकते हैं और एक साधारण ओपनगेल प्रोग्राम चला सकते हैं। आप मानक OpenGL परीक्षण कार्यक्रम का उपयोग करके इसे सत्यापित कर सकते हैं:
LIBGL_DEBUG=verbose glxgears
उम्मीद है कि एसएफएमएल की तरह ही विफल हो जाएगी। इसके साथ आपको LIBGL_DEBUGयह बताना चाहिए कि OpenGL लाइब्रेरी क्या लोड करने की कोशिश कर रही है। इसके अलावा, यह लोड करने की कोशिश कर रहा काम लगभग निश्चित रूप से हो जाएगा /usr/local/lib/libGL.so.1.2.0(संपादित करें: जब मैंने यह उत्तर दिया था, तो यह मेरी मशीन पर मानक OpenGL पुस्तकालय था। यह आपकी मशीन पर अब कुछ अन्य संस्करण हो सकता है)।
तो समाधान (इस मामले में) यह सुनिश्चित करना है कि /usr/local/lib/libGL.so.1.2.0सही OpenGL लाइब्रेरी में इंगित एक प्रतीकात्मक लिंक है। मेरे मामले में मेरे पास Nvidia 3.40 ड्राइवर हैं इसलिए मैं भागा:
ln -s /usr/lib/nvidia-340/libGL.so.1 /usr/local/lib/libGL.so.1.2.0
लेकिन आप इसे OpenGL के लिब पर इंगित करना चाहेंगे जो आपके लिए उपयुक्त है (पहली खोज कमांड में सूचीबद्ध)।
सारांश में: ग्राफिक्स मालिक को स्थापित करने (मालिकाना) OpenGL के काम के लिए इस्तेमाल किए गए प्रतीकात्मक लिंक को तोड़ सकते हैं। इस समस्या को हल करने के लिए मैन्युअल रूप से प्रतीकात्मक लिंक को ठीक करें ( /usr/local/lib/libGL.so.1.2.0पहले ठीक करें )।
libGL.so:LD_LIBRARY_PATH=/usr/lib/x86_64-linux-gnu/mesa ./glprogram। डिफ़ॉल्ट रूप से, मेरे Ubuntu 16.04 का उपयोग करता/usr/lib/nvidia-361/libGL.soहै/etc/ld.so.conf.d/x86_64-linux-gnu_GL.confऔर यह सब ठीक काम करता है।