ねむみ高まる

文章力がないので、文章を書く練習をしています。

ld: library not found for -lhogeと出て静的ライブラリがリンクできない

静的ライブラリについて勉強するぞ!となり、グーグル先生で調べて出てきた以下のページを見ながらMacで静的ライブラリを作ってリンクして実行ファイルを作るまでを試してみました。

qiita.com

しかし、ライブラリをリンクする段階で詰まりました。

出たエラー文は下記です。

[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.

カレントディレクトのライブラリを自動的に検索してくれる設定とかがあるんですかね?