Diferență între revizuiri ale paginii „Legarea bibliotecii math in cmake”
De la WikiLabs
Jump to navigationJump to searchCbira (discuție | contribuții) |
Cbira (discuție | contribuții) |
||
| Linia 1: | Linia 1: | ||
Dupa compilarea fiecarui modul c, urmeaza etapa de link-editare. Daca in timpul acelei etape linkerul nu gaseste o functie pe care o chemati, va afisa la consola o eroare de acest tip: | Dupa compilarea fiecarui modul c, urmeaza etapa de link-editare. Daca in timpul acelei etape linkerul nu gaseste o functie pe care o chemati, va afisa la consola o eroare de acest tip: | ||
| + | <pre> | ||
Scanning dependencies of target untitled2 | Scanning dependencies of target untitled2 | ||
| − | |||
[ 50%] Building C object CMakeFiles/untitled2.dir/main.c.o | [ 50%] Building C object CMakeFiles/untitled2.dir/main.c.o | ||
| − | |||
[100%] Linking C executable untitled2 | [100%] Linking C executable untitled2 | ||
| − | |||
CMakeFiles/untitled2.dir/main.c.o: In function `main': | CMakeFiles/untitled2.dir/main.c.o: In function `main': | ||
| − | |||
/home/student/CLionProjects/untitled2/main.c:10: undefined reference to `sqrt' | /home/student/CLionProjects/untitled2/main.c:10: undefined reference to `sqrt' | ||
| + | </pre> | ||
Acesta eroare se intampla asa cum se observa, nu la compilare (la consola se afiseaza Linking C executable ... si apoi eroarea "undefined referece to" respectiva functie => la linkeditare da eroare. Eroarea de mai sus este datorata faptului ca nu s-a inclus biblioteca math in procesul de linkeditare a executabilului. Pentru a o rezolva, trebuie indicat in reteta de build (fisierul CMakeLists.txt) sa adauge si biblioteca math prin adaugarea "target_link_library(EXECUTABILUL_MEU m)". | Acesta eroare se intampla asa cum se observa, nu la compilare (la consola se afiseaza Linking C executable ... si apoi eroarea "undefined referece to" respectiva functie => la linkeditare da eroare. Eroarea de mai sus este datorata faptului ca nu s-a inclus biblioteca math in procesul de linkeditare a executabilului. Pentru a o rezolva, trebuie indicat in reteta de build (fisierul CMakeLists.txt) sa adauge si biblioteca math prin adaugarea "target_link_library(EXECUTABILUL_MEU m)". | ||
Versiunea de la data 1 februarie 2026 09:45
Dupa compilarea fiecarui modul c, urmeaza etapa de link-editare. Daca in timpul acelei etape linkerul nu gaseste o functie pe care o chemati, va afisa la consola o eroare de acest tip:
Scanning dependencies of target untitled2 [ 50%] Building C object CMakeFiles/untitled2.dir/main.c.o [100%] Linking C executable untitled2 CMakeFiles/untitled2.dir/main.c.o: In function `main': /home/student/CLionProjects/untitled2/main.c:10: undefined reference to `sqrt'
Acesta eroare se intampla asa cum se observa, nu la compilare (la consola se afiseaza Linking C executable ... si apoi eroarea "undefined referece to" respectiva functie => la linkeditare da eroare. Eroarea de mai sus este datorata faptului ca nu s-a inclus biblioteca math in procesul de linkeditare a executabilului. Pentru a o rezolva, trebuie indicat in reteta de build (fisierul CMakeLists.txt) sa adauge si biblioteca math prin adaugarea "target_link_library(EXECUTABILUL_MEU m)".
Un exemplu de fisier CMakeLists.txt modificat se poate vedea mai jos: