2013年6月25日火曜日

gccでライブラリをリンク

Ubuntu 12.04でOpenSSLのライブラリを呼び出すプログラムをビルドしようとしたときの話です。
# apt-get install libssl-dev
を実行してビルド用のヘッダやライブラリを用意した後、
$ gcc -lcrypto -lssl test.c
を実行しても
undefined reference to `<OpenSSL内の関数名>'
なエラーが出てリンクに失敗します。
散々悩んだ挙句
$ gcc test.c -lcrypto -lssl
でビルドできるというところまでたどり着きました。
つまり順番が重要ということのようです。
このあたり今まで意識したことがなかったため、
かなり古めの環境で試したところ、前後どちらにつけてもビルドできることが確認できました。
いったいいつから順番が重要になったの?

0 件のコメント:

コメントを投稿