Не работает функция sqrt в языке С
Не могу понять почему функция sqrt не работает. Заголовок math.h подключён. Интересно то, что функция работает, если её аргумент не переменная, а просто число. Например:
Так не работает:
double question = 45.35;
double answer = sqrt( question);
Выдаёт ошибку:
main.c:(.text+0x567): неопределённая ссылка на «sqrt»
collect2: error: ld returned 1 exit status
А так работает:
double answer = sqrt(45.35);
Кто-нибудь знает в чём дело?
Ответы (1 шт):
Спасибо тем, кто прокомментировал мой вопрос. Из комментариев я узнал, что нужно добавить опцию -lm в линковщике. В Code Blocks это можно сделать так:
Settings -> Compiler -> Linker Settings -> Other linker options: в этом поле написать -lm и нажать OK.

На форуме JetBrains нашёл как включить опцию -lm для Clion, делюсь ссылкой https://intellij-support.jetbrains.com/hc/en-us/community/posts/206607085-CLion-Enabling-math-h-for-C-projects
Так выглядел мой файл CmakeList до добавления опции:
cmake_minimum_required(VERSION 3.24)
project(untitled1 C)
set(CMAKE_C_STANDARD 17)
add_executable(untitled1 main.c)
И после:
cmake_minimum_required(VERSION 3.24)
project(untitled1 C)
set(CMAKE_C_STANDARD 17)
add_executable(untitled1 main.c)
target_link_libraries(untitled1 m)
Извиняюсь за возможную избыточность, но я сам долго не понимал, куда эту опцию нужно было написать, если использовать IDE с встроенным сборщиком.