Можно ли связать с математической библиотекой изнутри исходного кода C в gcc?

когда я попытался включить <math.h> Я обнаружил, что мне нужно связать математическую библиотеку с помощью команды gcc -lm

но я ищу другой способ связать математическую библиотеку "в коде", что не требует от пользователя компиляции с использованием каких-либо параметров..

можете gcc -lm быть сделано в коде C помощью #pragma или что-то?

EDIT: я изменил -ml до -lm

6 ответов


обычный способ упростить усложнение для пользователя (или даже для разработчика) - написать makefile.


во-первых, это gcc -lm и нет #pragma означало дать директивы связывания


нет, вам нужно сказать компоновщику связать библиотеку, чтобы связать библиотеку.

компоновщик не знает о коде, только скомпилированные объектные файлы. Он не будет видеть конкретную прагму языка.


вы не говорите, какую оболочку UNIX вы используете, но если это просто для удобства, просто напишите функцию оболочки:

gcm() {
  gcc -lm $*
}

поместите это в файл запуска вашей оболочки, и вы можете скомпилировать и связать с библиотекой математики с:

gcm mycode.c

используя -lm является единственным вариантом. Кроме того, используя #pragma для этого является специфичным для microsoft и довольно грязным. Представьте, что есть новая суперэффективная математическая библиотека, которая требует -lsupermath вместо-lm-тогда вам придется изменить свой код вместо изменения файла makefile или файла конфигурации make.


нет, у gcc нет прагм для ссылки на библиотеки. Вы должны связаться с математической библиотекой с параметрами командной строки (это -lm не -ml )