gccでライブラリをリンク

Ubuntu 12.04でOpenSSLのライブラリを呼び出すプログラムをビルドしようとしたときの話です。

# apt-get install libssl-dev

を実行してビルド用のヘッダやライブラリを用意した後、

$ gcc -lcrypto -lssl test.c

を実行しても

undefined reference to `<OpenSSL内の関数名>'

なエラーが出てリンクに失敗します。
散々悩んだ挙句

$ gcc test.c -lcrypto -lssl

でビルドできるというところまでたどり着きました。
つまり順番が重要ということのようです。
このあたり今まで意識したことがなかったため、
かなり古めの環境で試したところ、前後どちらにつけてもビルドできることが確認できました。
いったいいつから順番が重要になったの?

広告