Необходимо использовать дополнительную опцию при компиляции кода c, который включает - PullRequest
0 голосов
/ 26 марта 2020

Всякий раз, когда я включаю math.h в свой код c, я не могу скомпилировать без опции -lm. Я получаю это сообщение об ошибке:

d.o: In function `refresh_position':
d.c:(.text+0x4df): undefined reference to `sqrt'
d.c:(.text+0x524): undefined reference to `sqrt'
collect2: error: ld returned 1 exit status

Я могу скомпилировать его, просто набрав -lm, но мой учитель говорит, что если код не работает, я получу 0 баллов за эту домашнюю работу. Я хочу знать, происходит ли эта ошибка из-за моего кода или из-за моего компьютера или библиотеки c. Я должен быть уверен, что на моем компьютере учителя все будет работать без ошибок.

1 Ответ

1 голос
/ 26 марта 2020

Некоторые реализации, такие как g cc, не связывают математическую библиотеку (называемую libm.a в большинстве * nix-реализаций) по умолчанию, поэтому вам нужно включить -lm при сборке кода.

Ваш учитель должен знать о подобных проблемах, и пока ваш код использует sqrt и другие математические процедуры правильно (используя правильный тип для входов и вывод), он или она должны быть в состоянии построить ваш код так, чтобы он работал.

...