خطأ في الربط: /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