OpenSSL でコードに-lssl -lcrypto
リンクし、リンク ステップに追加すると、次のエラーが発生します。
/usr/lib/../lib64/libcrypto.a(fips.o): In function `FIPSCHECK_verify':
(.text+0x8da): undefined reference to `dlopen'
/usr/lib/../lib64/libcrypto.a(fips.o): In function `FIPSCHECK_verify':
(.text+0x8f1): undefined reference to `dlsym'
/usr/lib/../lib64/libcrypto.a(fips.o): In function `FIPSCHECK_verify':
(.text+0x903): undefined reference to `dladdr'
/usr/lib/../lib64/libcrypto.a(fips.o): In function `FIPSCHECK_verify':
(.text+0x90f): undefined reference to `dlclose'
/usr/lib/../lib64/libcrypto.a(fips.o): In function `FIPSCHECK_verify':
(.text+0x98a): undefined reference to `dlclose'
collect2: error: ld returned 1 exit status
make: *** [run] Error 1
このスタック オーバーフローの質問への回答から、 を追加-ldl
したところ、次の警告が表示されました。
/usr/lib/../lib64/libcrypto.a(fips.o): In function `FIPSCHECK_verify':
(.text+0x8da): warning: Using 'dlopen' in statically linked applications
requires at runtime the shared libraries from the glibc version used for linking
これは Linux ワークステーションであり、以下のライブラリをリンクする方法を理解する方法にあまり詳しくありません"the glibc version used for linking"
。
$ uname -a
Linux foo.example.com 2.6.18-274.el5 #1 SMP Fri Jul 8 17:36:59 EDT 2011 x86_64 GNU/Linux
この警告に対処するにはどうすればよいですか? 私の要件の 1 つは、静的バイナリをコンパイルする必要があるということです。この要件を緩和することはできないと思います。これがばかげた質問である場合はお詫び申し上げます。アドバイスをありがとうございます。