انجمن‌های فارسی اوبونتو

کمک و پشتیبانی => برنامه‌سازی => نویسنده: kooroshrad در 23 بهمن 1397، 03:15 ب‌ظ

عنوان: QT error: cannot find -lGL (حل شد)
ارسال شده توسط: kooroshrad در 23 بهمن 1397، 03:15 ب‌ظ
با سلام به همه دوستان

توی ابونتو داشتم با QT5.12 کد میزدم که با یه خطای عجیب روبه رو شدم (گوگل کردم به جواب درستی نرسیدم)

توی بخش Issue همچین چیزی تحویلم میده==========>     :-1: error: cannot find -lGL


و توی بخش Compile Output همچین چیزی تحویل داده :


15:07:49: Running steps for project untitled4...
15:07:49: Configuration unchanged, skipping qmake step.
15:07:49: Starting: "/usr/bin/make" -j4
g++ -Wl,-rpath,/home/rad/Qt5.12.0/5.12.0/gcc_64/lib -o untitled4 main.o qrc_qml.o   -L/home/rad/Qt5.12.0/5.12.0/gcc_64/lib -lQt5Quick -lQt5Gui -lQt5Qml -lQt5Network -lQt5Core -lGL -lpthread   
/usr/bin/ld: cannot find -lGL
Makefile:257: recipe for target 'untitled4' failed
collect2: error: ld returned 1 exit status
make: *** [untitled4] Error 1
15:07:50: The process "/usr/bin/make" exited with code 2.
Error while building/deploying project untitled4 (kit: Desktop Qt 5.12.0 GCC 64bit)
When executing step "Make"
15:07:50: Elapsed time: ۰:۰۰:۰۱.
چطور برطرفش کنم ؟
عنوان: پاسخ : QT error: cannot find -lGL
ارسال شده توسط: علی رزم دیده در 23 بهمن 1397، 05:38 ب‌ظ
سلام
به نظرم مشکلتون با نصب پکیج libgl1-mesa-dev حل خواهد شد :
sudo apt install --reinstall libgl1-mesa-dev
عنوان: پاسخ : QT error: cannot find -lGL
ارسال شده توسط: kooroshrad در 24 بهمن 1397، 03:00 ب‌ظ
با سلام و تشکر از کمکتون

دستور بالا درست بود و مشکل برطرف شد.

اما در صورت امکان یه توضیح کوچیک بدین که چرا این مشکل بروز کرده بود و این نصب مجدد مربوط به چه چیزی بوده(آیا این کتابخانه که مجددا نصب کردیم مطلق به gcc بود ؟)
عنوان: پاسخ : QT error: cannot find -lGL (حل شد)
ارسال شده توسط: علی رزم دیده در 25 بهمن 1397، 02:17 ق‌ظ
با سلام و تشکر از کمکتون
خواهش می کنم دوست عزیز

اما در صورت امکان یه توضیح کوچیک بدین که چرا این مشکل بروز کرده بود و این نصب مجدد مربوط به چه چیزی بوده(آیا این کتابخانه که مجددا نصب کردیم مطلق به gcc بود ؟)
شما سورستون رو با -lGL کامپایل می کردین :
g++ ....... -lGL ........
آپشن -l برای لینک کردن استاتیک به کتابخونه های سیستم مورد استفاده قرار می گیره.
الان وقتی شما سورس رو همراه با -lGL کامپایل می کنین باید کتابخونه های مربوط به OpenGl روی سیستم شما نصب باشه تا ld بتونه لینک مربوط به اون کتابخونه ها رو پیدا کنه. که این کتابخونه ها توی پکیج libgl1-mesa-dev موجود هستن برای همین این پکیج روی سیستم شما باید نصب باشه.

حالا دلیل اینکه --reinstall استفاده کردیم این بود که دو حالت در کل وجود داره :
یا این پکیج روی سیستم شما نصب نیست که در این صورت خود apt از صفر دانلود و نصب رو انجام می ده (درست مثل حالتی که از --reinstall استفاده نشده باشه)
و یا این پکیج نصب هست ولی به درستی نصب نشده و یا بعضی از فایل های مربوط به این پکیج از سیستم شما حذف شدن در این صورت این آپشن میاد و فایل های حذف شده رو دوباره ایجاد می کنه.