-L /usr/local/ssl/lib/
を追加 -lcrypto
の前の GCC コマンドラインに . /usr/local/ssl
の下の OpenSSL ヘッダーに対してビルドしているため 、同じプレフィックスで実際のライブラリにリンクする必要もあります(静的なものしかインストールされていないように見えますが、意図している場合と意図していない場合があります。ソースからビルドされた OpenSSL を適切に再インストールする必要がある場合があります)。
(編集) dlopen()
を修正するには リンカによって友人が見つからない場合は、-ldl
を追加します。 GCCコマンドラインに。 -ldl
dlopen()
を含む共有ライブラリである libdl.so に対してもリンクするようにリンカーに指示します。 、 dlsym()
、 dlclose()
等。;これらの関数は OpenSSL によって内部的に使用されるため、-ldl
-lcrypto
を使用する場合の間接的な依存関係です (Linux の場合)。 libcrypto の静的バージョンにリンクしているため、すべての間接的な依存関係に対して明示的にリンクする必要があります。
適切なライブラリへのリンクに慣れていない場合は、オペレーティング システムのパッケージ マネージャーからインストールされた OpenSSL を使用することをお勧めします。面倒を省くかもしれません。
これは、ソースから独自の openssl を構築し、それを使用して他のプログラム (私の場合は Git) をコンパイルしようとした人々に関連する可能性があります。
openssl の構成中に、「共有」オプションを追加します:
./config shared
これにより、必要な共有ライブラリ libcrypto.so
が作成されます .詳細は INSTALL ファイルにあります。
また、「make」中にこのエラーが発生した場合
"....can not be used when making a shared object
-fPIC で再コンパイル
./config shared -fPIC