両方とも動作しているようですが、違いはありますか?"gcc -lname"と "gcc libname.so ..."の違いは何ですか?
gcc libname.so ...
は、libname.so
に静的にリンクしていますか?
両方とも動作しているようですが、違いはありますか?"gcc -lname"と "gcc libname.so ..."の違いは何ですか?
gcc libname.so ...
は、libname.so
に静的にリンクしていますか?
gcc -l
は、ライブラリ検索パスに静的ライブラリと動的ライブラリの両方を検索します(-static
が指定されている場合を除く)。 gcc ... libname.so
は現在のディレクトリのlibname.so
と動的にリンクします。
gcc ... libname.so
はあなたが静的にダイナミックライブラリをリンクしないできgcc -shared -L. -lname
と同じです。コンパイラドライバプログラム(gcc)にライブラリの名前を付ける2つの異なる方法で遊んでいるだけです。 larsmansが正しいのは、-lオプションが共有ライブラリと静的ライブラリの両方を探すことです(gcc呼び出しで-staticを指定しない限り)。