2009-10-03 18 views
10

He estado usando el juez en línea de UVa para resolver algunos desafíos de programación y, cuando presento mis soluciones, me dicen que el juez compilará mi código usando los siguientes parámetros para GCC/G ++ que no conozco: -lm -lcrypt -pipe -DONLINE_JUDGE .¿Qué son estos parámetros GCC/G ++?

¿Qué hacen? ¡Muchas gracias por adelantado!

+4

gcc --help dude! – Ashwin

+2

Ashwin, no es inmediatamente aparente que el parámetro 'lm' es un tipo diferente de' pipe'. Esta última es una sola palabra, mientras que la primera es en realidad 'l' seguida del nombre abreviado de una biblioteca. Además, de esos cuatro, 'pipe' es el único que aparece en la salida de' gcc --help'. El resto requiere '-v', e incluso después de revisar las muchas páginas de salida que le ofrece, no encontrará nada que mencione' lm' o 'lcrypt'. –

+0

@Rob: pero encuentra algo como -l <...> (No se la documentación exacta). Entonces puedes ver que es seguido por algo. (Lo mismo para -D <...>). – mmmmmmmm

Respuesta

23

"-lm -lcrypt" especifica para vincular con las bibliotecas de matemáticas y criptografía, es útil si va a utilizar las funciones definidas en math.h y crypt.h. "-pipe" solo significa que no creará archivos intermedios sino que usará pipes en su lugar. "-DONLINE_JUDGE" define una macro llamada "ONLINE_JUDGE", como si pusiera un "#define" en su código. Supongo que es así que puedes poner algo específico para juzgar en tu código en un bloque "#ifdef"/"# endif".

+4

"para incluir las bibliotecas de matemáticas y criptografía" debe ser "enlace a las bibliotecas de matemáticas y criptografía". –

+0

No es una mala sugerencia, @gf. –

+4

Para completar: -l <...> vincula las bibliotecas "lib <...> .so *". Entonces -lm vincula "libm.so *" y -lcrypt enlaces "libcrypt.so *". – mmmmmmmm

Cuestiones relacionadas