Avatar ·

خطأ في الربط: /usr/bin/ld: cannot find -l<اسم_المكتبة> في C++ على Linux

مرحبًا! أنا مبتدئ في C++ وLinux، وأواجه هذا الخطأ منذ عدة ساعات. أكتب برنامجًا بسيطًا يستخدم مكتبة للتعامل مع الصور (libpng). قمت بتثبيتها عبر apt: `sudo apt install libpng-dev`. هذا هو الكود الخاص بي (ملف main.cpp): ```cpp #include #include int main() { std::cout << "Hello, PNG!" << std::endl; return 0; } ``` أقوم بالتجميع هكذا: `g++ main.cpp -o test -lpng`. والرد الذي أحصل عليه هو: ``` /usr/bin/ld: cannot find -lpng collect2: error: ld returned 1 exit status ``` لقد تحققت من وجود ملفات المكتبة: `ls /usr/lib/x86_64-linux-gnu/libpng*` يُظهر `libpng16.a` و `libpng16.so` و `libpng.a` و `libpng.so`. لماذا لا يرى الرابط (linker) المكتبة؟ جربت علامات مختلفة: `-L/usr/lib/x86_64-linux-gnu` و `-static`، لكن لا شيء يساعد. المكتبة مثبتة بالتأكيد، لكن البرنامج لا يُترجم. ما الخطأ الذي أفعله؟ اشرح لي، من فضلك، كمبتدئ. <<>>

سبب الخطأ وحله

الخطأ /us