ld: library not found for -lhogeと出て静的ライブラリがリンクできない
静的ライブラリについて勉強するぞ!となり、グーグル先生で調べて出てきた以下のページを見ながらMacで静的ライブラリを作ってリンクして実行ファイルを作るまでを試してみました。
しかし、ライブラリをリンクする段階で詰まりました。
出たエラー文は下記です。
[nemumitakamaru libtest]$ clang main.c -lstatic ld: library not found for -lstatic clang: error: linker command failed with exit code 1 (use -v to see invocation)
libstatic.a
が見つからないらしいです。
ちなみにls
するとこんな感じです。
[nemumitakamaru libtest]$ ls libstatic.a main.c static_library.c static_library.o
ソースコードとlibstatic.a
が同じフォルダに存在するだけでは駄目ってことなんですかね。
再度グーグル先生で調べてみて、↓のサイトを読むと、ライブラリのパスを指定するには-L
を付ければ良いとわかりました。
qiita.com
というわけで、-L.
をつけて静的ライブラリが存在するパスをカレントディレクトに指定してみましたところ、ちゃんとリンクに成功しました。
[nemumitakamaru libtest]$ clang main.c -L. -lstatic [nemumitakamaru libtest]$ ./a.out This is a static library.
カレントディレクトのライブラリを自動的に検索してくれる設定とかがあるんですかね?