2016-04-24 8 views
1

私は静的ライブラリlib.aと使用して、すべてのチュートリアルを持っている:gccを静的ライブラリでコンパイルするには?

gcc -o main main.o -L. -lib 

をしかし、私はカントは、私がエラーを持っている:

/usr/bin/ld: cannot find -lib 
collect2: error: ld returned 1 exit status 

私が使用する必要があります。

gcc -o main main.o -L. -lib.a 

なぜ?それを修復するために私は何をすべきですか?

答えて

1

-l ライブラリ

リンカは、実際に liblibrary.aという名前ファイルでライブラリのためのディレクトリの標準リストを検索します。リンカは、このファイルを名前で正確に指定したかのように使用します。

...

-lオプションを使用して、ファイル名を指定しての唯一の違いは、-lは、「LIB」と「.A」でライブラリを囲み、いくつかのディレクトリを検索することです。

-lには、ライブラリ「lib.a」を使用できません。それを含めるには、-lを付けずに 'lib.a'を使用してください。もちろん、-Lを使用して、この特定のライブラリを検索するディレクトリを設定することはできません。

+0

しかし、私は-L no -lを使用しています。 – Ice

+0

あなたは両方を使用しています: '-L'と '。' '-l'と' ib 'をつけた '-l'は' -L'となります。 -lib'。 – MicroVirus

+0

gcc -o main main.o -L -libaは動作しません。 – Ice

0

この行に誤りがありますか?

gcc -o main main.o -L. -llib 

MicroVirusがマニュアルに記載されていたよう、あなたは私の前の行を使用するようにliblib.aであなたのライブラリーの名前を変更するか、単純なファイルのようにGCCにあなたのライブラリーを渡す必要があります。 gcc -lのドキュメントから

+0

ライブラリの名前がllib.aの場合はyesです。 – Ice

+0

いいえ、ライブラリはあなたの例のようにlib.aという名前になっています。あなたのライブラリ名の後に-lパラメータをつけて、gccにあなたのライブラリの名前を教えてください。 –

+0

あなたのコマンドを実行するのに疲れましたが、同じエラーが発生しました。 – Ice

関連する問題