如果是如何動態包括OpenSSL的nginx的
您需要與指定的OpenSSL:
--with-http_ssl_module
上面的命令將針對如果有OpenSSL的共享對象的有效鏈接。
ngingx也可以建立OpenSSL,以便您:
--with-openssl
我似乎記得一些問題--with-openssl
(但我認爲他們有關FIPS有能力OpenSSL庫)。
要您對共享對象鏈接某些,您可以運行在Nginx的源下面的腳本:
OPENSSL_INSTALL_DIR=/usr/local/ssl
OPENSSL_LIB_DIR="$OPENSSL_INSTALL_DIR/lib"
...
for FILE in "auto/lib/sha1/conf" "auto/lib/md5/conf" "auto/lib/openssl/conf"
do
TFILE=`mktemp /tmp/fix.XXXXXXXXXX`
sed -e "s|-lssl|$OPENSSL_LIB_DIR/libssl.so|g" "$FILE" > "$TFILE"
mv "$TFILE" "$FILE"
TFILE=`mktemp /tmp/fix.XXXXXXXXXX`
sed -e "s|-lcrypto|$OPENSSL_LIB_DIR/libcrypto.so|g" "$FILE" > "$TFILE"
mv "$TFILE" "$FILE"
done
這將確保對一個特定的OpenSSL的連接環節,而不僅僅是一個它發現(在交叉編譯時,我在過去的-L
,-l
,-static
和-shared
有很多麻煩)。
nginx的二進制來幾乎6MB。 ... ,目標的規模將達到1.3MB。
我不確定OpenSSL出現的大小有多小。以下可能(或可能不)進一步降低。
如果您編譯並鏈接到靜態存檔,那麼您也可以使用一些編譯器和鏈接器選項。具體而言,您可以使用gc-sections
來丟棄未使用的功能:
--with-cc-opt="-ffunction-sections -fdata-sections"
--with-ld-opt="-Wl,--gc-sections"
您也有strip選項。您可以在最終的二進制運行strip -s
或將其傳遞給鏈接器,雖然選擇:
--with-ld-opt="-Wl,-s"
見ld(1)和--strip-debug
和--strip-all
選項。
-Bsymbolic
也可能有助於減少ELF節的大小(我認爲它可以是GOT
或PLT
,但我現在不記得)。
來源
2014-01-18 11:13:01
jww