2009-10-03 8 views
10

Ich habe den UVa Online Judge benutzt, um einige Programmierprobleme zu lösen, und wenn ich meine Lösungen einreiche, wird mir gesagt, dass der Richter meinen Code mit den folgenden Parametern nach GCC/G ++ kompilieren wird, die ich nicht kenne: -lm -lcrypt -pipe -DONLINE_JUDGE .Was sind diese GCC/G ++ Parameter?

Was machen sie? Vielen Dank im Voraus!

+4

gcc --help Kumpel! – Ashwin

+2

Ashwin, es ist nicht sofort offensichtlich, dass der 'lm' Parameter eine andere Art von' pipe' ist. Letzteres ist ein einzelnes Wort, während das erstere tatsächlich "l" ist, gefolgt vom abgekürzten Namen einer Bibliothek. Von diesen vier ist 'pipe' die einzige, die tatsächlich in der Ausgabe von' gcc --help' erscheint. Der Rest erfordert '-v', und selbst nachdem Sie die vielen Ausgabeseiten gesiebt haben, finden Sie immer noch nichts, was' lm' oder 'lcrypt' erwähnt. –

+0

@Rob: Aber du findest etwas wie -l <...> (kenne die genaue Dokumentation nicht). So konnte man sehen, dass es von etwas gefolgt ist. (Gleiches für -D <...>). – mmmmmmmm

Antwort

23

"-lm -lcrypt" gibt an, mit den mathematischen und kryptographischen Bibliotheken verbunden zu werden - nützlich, wenn Sie die in math.h und crypt.h definierten Funktionen verwenden möchten. "-pipe" bedeutet nur, dass es keine Zwischendateien erstellt, sondern stattdessen rohre verwendet. "-DONLINE_JUDGE" definiert ein Makro namens "ONLINE_JUDGE", als ob Sie in Ihrem Code eine "#define" einfügen würden. Ich schätze, das ist so, dass Sie in Ihrem Code in einem "#ifdef"/"# endif" -Block etwas Bestimmtes zum Beurteilen setzen können.

+4

"die mathematischen und kryptographischen Bibliotheken" sollte "Link zu den mathematischen und kryptographischen Bibliotheken" sein. –

+0

Kein schlechter Vorschlag, @gf. –

+4

Nur der Vollständigkeit halber: -l <...> verbindet die Bibliotheken "lib <...> .so *". So -lm verbindet "libm.so *" und -lcrypt mit "libcrypt.so *". – mmmmmmmm

Verwandte Themen