Можно ли ссылаться на математическую библиотеку изнутри исходного кода C в gcc? - PullRequest
9 голосов
/ 17 мая 2010

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

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

Можно ли сделать gcc -lm в коде C, используя #pragma или что-то еще?

РЕДАКТИРОВАТЬ: я изменил -ml на -lm

Ответы [ 6 ]

11 голосов
/ 17 мая 2010

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

5 голосов
/ 17 мая 2010

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

4 голосов
/ 17 мая 2010

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

gcm() {
  gcc -lm $*
}

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

gcm mycode.c
4 голосов
/ 17 мая 2010

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

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

3 голосов
/ 17 мая 2010

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

2 голосов
/ 17 мая 2010

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

...