2009-10-03 6 views
10

私はUVaオンラインジャッジを使っていくつかのプログラミング上の課題を解決しました。私の解決策を提出する際には、私が知らないGCC/G ++に次のパラメータを使用して裁判官が私のコードをコンパイルします:-lm -lcrypt -pipe -DONLINE_JUDGEこれらのGCC/G ++パラメータは何ですか?

彼らは何をしていますか?事前にどうもありがとうございました!

+4

gcc --help dude! – Ashwin

+2

Ashwin、 'lm'パラメータは' pipe'とは異なる種類です。後者は単一の単語ですが、前者は実際には 'l'の後にライブラリの略称が続きます。また、これらの4つのうち、 'gcc --help'の出力に実際に表示されるのは' pipe'だけです。残りの部分は '-v'を必要とします。あなたに与える出力の多くのページを篩い分けしても、' lm'や 'lcrypt'という言葉は何も見つかりません。 –

+0

@Rob:しかし、-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

関連する問題