2009-10-03 2 views
10

나는 프로그래밍 문제를 해결하기 위해 UVa 온라인 판사를 사용 해왔고 솔루션을 제출할 때 내가 알지 못하는 GCC/G ++에 다음 매개 변수를 사용하여 판사가 코드를 컴파일 할 것이라고 말했습니다. -lm -lcrypt -pipe -DONLINE_JUDGE .이 GCC/G ++ 매개 변수는 무엇입니까?

그들은 무엇을합니까? 대단히 감사드립니다!

+4

gcc --help dude! – Ashwin

+2

Ashwin,'lm' 매개 변수가'pipe'와는 다른 종류라는 것은 즉시 명백하지 않습니다. 후자는 하나의 단어이고, 전자는 실제로'l' 다음에 라이브러리의 축약 된 이름이옵니다. 또한 그 4 개 중'pipe '만이'gcc --help'의 출력에 실제로 나타납니다. 나머지는'-v'를 필요로하며, 출력물의 여러 페이지를 뒤적 으면서도'lm'이나'lcrypt'에 대해서는 언급하지 않습니다. –

+0

@Rob : 그러나 -l <...>과 같은 것을 찾을 수 있습니다 (정확한 문서를 모르는 경우). 그래서 여러분은 그것이 -l 다음에 무엇인가가 있음을 알 수있었습니다. (-D <...>과 동일). – mmmmmmmm

답변

23

"-lm -lcrypt"는 수학 및 암호화 라이브러리와 연결되도록 지정합니다. math.h 및 crypt.h에 정의 된 함수를 사용할 경우 유용합니다. "-pipe"는 중간 파일을 생성하지 않고 대신 파이프를 사용한다는 것을 의미합니다. "-DONLINE_JUDGE"은 코드에 "#define"을 넣은 것처럼 "ONLINE_JUDGE"매크로를 정의합니다. "#ifdef"/ "#endif"블록에서 코드의 특정 항목을 넣을 수 있습니다.

+4

"수학 및 암호화 라이브러리 포함"은 "수학 및 암호화 라이브러리 링크"여야합니다. –

+0

나쁘지 않은 제안, @gf. –

+4

완전성을 위해 -l <...>은 라이브러리 "lib <...> .so *"를 링크합니다. 따라서 -lm은 "libm.so *"를 링크하고 -lcrypt는 "libcrypt.so *"를 링크합니다. – mmmmmmmm

관련 문제