При вводе gcc -lm main.c -o main
я все еще получаю ошибку компоновщика. Мне нужно написать gcc main.c -lm -o main
для правильной работы. Если это работает для вас по-другому, это немного странно. Я понимаю, что компоновщик найдет символ, объявленный в main.c (т.е. double fmod(double,double)
), но разрешит его, только если найдет свое определение позже (т.е. в libm.a
).
Короче говоря, библиотеки должны быть размещены (хотя бы один раз) "справа" от места, где они используются.