Diferență între revizuiri ale paginii „Legarea bibliotecii math in cmake”

De la WikiLabs
Jump to navigationJump to search
 
(Nu s-au afișat 9 versiuni intermediare efectuate de același utilizator)
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:
  
Scanning dependencies of target untitled2
+
<pre>
[ 50%] Building C object CMakeFiles/untitled2.dir/main.c.o
+
Scanning dependencies of target ClionExample
[100%] Linking C executable untitled2
+
[ 50%] Building C object CMakeFiles/ClionExample.dir/main.c.o
CMakeFiles/untitled2.dir/main.c.o: In function `main':
+
[100%] Linking C executable ClionExample
/home/student/CLionProjects/untitled2/main.c:10: undefined reference to `sqrt'
+
CMakeFiles/ClionExample.dir/main.c.o: In function `main':
 +
/home/student/CLionProjects/ClionExample/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 linleditare 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 apare eroarea. Motivul este: 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) adaugarea bibliotecii math.
 +
<pre>
 +
target_link_libraries(PROIECTUL_MEU m)
 +
</pre>
  
 
Un exemplu de fisier CMakeLists.txt modificat se poate vedea mai jos:
 
Un exemplu de fisier CMakeLists.txt modificat se poate vedea mai jos:
<<
 
  
project(untitled2 C)
+
[[Fișier:LinkMathLibCmake.png|faracadru|upright=2]]
 
 
set(CMAKE_C_STANDARD 17)
 
 
 
add_executable(untitled2 main.c)
 
 
 
target_link_libraries(untitled2 m)
 
 
 
>>
 

Versiunea curentă din 1 februarie 2026 09:58

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 ClionExample
[ 50%] Building C object CMakeFiles/ClionExample.dir/main.c.o
[100%] Linking C executable ClionExample
CMakeFiles/ClionExample.dir/main.c.o: In function `main':
/home/student/CLionProjects/ClionExample/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 apare eroarea. Motivul este: 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) adaugarea bibliotecii math.

target_link_libraries(PROIECTUL_MEU m)

Un exemplu de fisier CMakeLists.txt modificat se poate vedea mai jos:

LinkMathLibCmake.png