2010-05-17 22 views
9

Cuando traté de incluir <math.h> encontré que necesito para enlazar biblioteca matemática mediante el uso de comandos gcc -lm¿Es posible vincular a la biblioteca matemática desde el código fuente C en gcc?

Pero Estoy buscando otra manera de enlazar la biblioteca matemática 'en código', que no requiere el usuario para compilar usando cualquier opción ..

¿Puede gcc -lm hacerse en código C usando #pragma o algo?

EDIT: He cambiado -ml a -lm

Respuesta

11

la forma habitual para simplificar complicación para el usuario (o de hecho para el desarrollador) es escribir un makefile.

+6

, pero no veo cómo responde a la pregunta sobre pragmas;) –

5

En primer lugar, es gcc -lm y no hay ninguna #pragma la intención de dar directivas que unen

4

No, es necesario decirle al enlazador para enlazar la biblioteca con el fin de vincular la biblioteca.

El vinculador no conoce el código, solo los archivos del objeto compilado. No verá un pragma específico de idioma.

2

No, gcc no tiene pragmas para vincular a las bibliotecas. Tiene que vincular a la biblioteca matemática con las opciones de línea de comando (es -lm no -ml)

3

El uso de -lm es la única opción. Además, usar #pragma para eso es específico de Microsoft y bastante sucio. Imagina que hay una nueva biblioteca de matemática supereficiente que requiere -supermath en lugar de -lm-, entonces tendrías que modificar tu código en lugar de modificar un makefile o un archivo make config.

4

Usted no dice qué shell UNIX que está utilizando, pero si esto es sólo para conveniance, sólo tiene que escribir una función de shell:

gcm() { 
    gcc -lm $* 
} 

Pon eso en el archivo de inicio de su concha y se puede compilar y enlazar con la biblioteca de matemáticas con:

gcm mycode.c 
+3

dudo que sea útil en el caso general –

Cuestiones relacionadas