如果按标準的configure執行:
./configure --prefix=/data/users/mooon/third-party/libssh2 --with-openssl --with-libssl-prefix=/data/users/mooon/third-party/openssl --without-libgcrypt-prefix
得到如下錯誤時:
checking for shared library run path origin... done
checking for libssl... no
checking for libgcrypt... no
configure: error: cannot find OpenSSL or Libgcrypt,
try --with-libssl-prefix=PATH or --with-libgcrypt-prefix=PATH
請改成如下:
./configure --prefix=/data/users/mooon/third-party/libssh2 CPPFLAGS="-I/data/users/mooon/third-party/openssl/include" LDFLAGS="-L/data/users/mooon/third-party/openssl/lib"
上述方法為何可以解決問題:
道理非常簡單,就是滿足它的需求,報的是找不到OpenSSL,既然--with-libssl-prefix沒生效,那麼就直接通過CPPFLAGS和LDFLAGS來指定,當執行“./configure --help”可以看到這個支援的。甚至可以通過檢視config.log日志檔案來了解這方面的資訊,以後遇到類似的問題,都可以采取類似的辦法,軟的不行來硬的。
遇到這個錯誤的一個重要原因是:OpenSSL沒有安裝在标準的目錄下,如果以./configure不帶--prefix安裝OpenSSL,則可能不會出現這個問題。