ライブラリが見えずコンパイルできないエラー

ld: symbol(s) not found for architecture x86_64
collect2: error: ld returned 1 exit status

のエラーが出てコンパイルできない問題。ググってみると、ライブラリlibcfitsio.aのパスを-L/opt/local/lib/ などと指定してやれば解決するぜ、ってのばっかりなんだけど、これでは解決せず、途方に暮れていた。

解答はここにあった。

静的ライブラリ (.a) の作成と利用
http://www.yunabe.jp/docs/static_library.html

静的ライブラリをリンクする場合は、引数で与える静的ファイルやオブジェクトファイルの順序が重要になります。 基本的にはAがBに依存しているなら、AをBの前に引数で与えなくてはなりません。

知らんかった…まさか引数に順序があったなんて…orz

ということで、

$ gfortran-mp-6 -lm -L/opt/local/lib/ cookbook.f
とかやってたのを
$ gfortran-mp-6 -lm cookbook.f /usr/local/cfitsio/libcfitsio.a
とやったらスパッと通った!