2016-04-01 9 views
1

openssl 1.0.2gでnginx 1.9.12をビルドしようとしています。ubuntuでx86用opensslを使ってnginxをビルドする方法15 x86_64 by gradleスクリプト

nginxは./config(opensslパッケージのスクリプト)を使用してopensslをビルドします。 残念なことに./configスクリプトがOSアーキテクチャ:[ "$MACHINE" ] || MACHINE=``(uname -m) 2>/dev/null`` || MACHINE="unknown"を検出し、これに基づいてMakefile(この場合はx86_64用)を作成します。

私は-m32引数をnginxからopensslに提供しますが、それだけでは不十分です。 私は\ envを変更する必要があります。変数MACHINEはx86に等しくなります。

「環境」(実行タスク内)は動作しません。 nginxではうまく動作しますが、引数はサブプロセス(./config)に渡されません。

したがって、x86オブジェクトをx86_64にリンクすることができないため、リンカーが失敗した場合があります。

envを設定する方法はありますか?変数MACHINEをgradleスクリプトに入れますか?

+0

http://superuser.com? – user3159253

+0

@ user3159253 - 私はここで制御要因はMichalが構成を構築しようとしていると思います、と私はそれが正当にスタックオーバーフローに置くと思う。ランタイムNginxの設定のような他の質問は、別のサイトの質問になります。 – jww

答えて

0

私はopensslにnginxを通して "-m32"引数を提供しますが、それだけでは不十分です。私は\ envを変更する必要があります。変数MACHINEはx86に等しくなります。

-m32を追加してOpenSSLソースを構築することはできません。 OpenSSLがそれ自身を構成し、<openssl/opensslconf.h>ファイルを書き出すことを許可する必要があります。

この

[ "$MACHINE" ] || MACHINE=(uname -m) 2>/dev/null 

あなたがMACHINEをエクスポートすることができますし、OpenSSLはその行でそれを尊重するべきであることを意味します。おそらくi686:$ MACHINE=i686 ./config -m32に設定してください。しかし、それは後で何がうまくいくのですか:)

クロスコンパイルのために通常MACHINEが設定されているので、クラップシュートが来ます。また、CROSS_COMPILEと呼ばれる変数があります。 OpenSSLのConfigureスクリプトも参照してください。

は、ここでのテストのカップルです:

# On i686 machine 
$ MACHINE=i686 ./config 
Operating system: i686-whatever-linux2 

# On i686 machine 
$ MACHINE=x86_64 ./config 
Operating system: x86_64-whatever-linux2 

# On x86_64 machine 
$ MACHINE=i686 ./config 
Operating system: i686-whatever-linux2 

# On x86_64 machine 
$ MACHINE=x86_64 ./config 
Operating system: x86_64-whatever-linux2 

ENVを設定する方法はあります。変数MACHINEをグラデーションスクリプトに入れますか?

申し訳ございません。 Nginxは十分に悪化しています。私は問題をさらに難しくするために間接指示の別のレベルを追加するのかどうかはわかりません。

おそらく、これは役に立ちます:Setting environment variables from Gradle


OpenSSLはConfigureを持っており、それがLIST引数を取る:

$ ./Configure LIST | grep linux 
... 
linux-aarch64 
linux-alpha-gcc 
linux-aout 
... 
linux-generic32 
linux-generic64 
... 

私はあなたがlinux-generic32またはlinux-elfでOpenSSLを設定したいと考えています。しかし、私はあなたがlinux-elfを使うことができるとは思わない、それはホストのアーキテクチャをピックアップするからです。

OpenSSLが正しく設定されている点(特にFIPSの検証済みオブジェクトモジュールを使用している場合)に関して、Nginxのビルドシステムには過去に多くの問題がありました。私は必要なものを得るためにビルドスクリプトを修正する必要があることを思い出しているようです。同じことをする必要があるかもしれません。


ここでは、Fedora 23 i686マシンで見ていることがあります。それはi686-whatever-linux2トリプレットの結果がlinux-elfであることに注意してください。

$ cd openssl-master 
$ ./config 
Operating system: i686-whatever-linux2 
Configuring for linux-elf 
Configuring OpenSSL version 1.1.0-pre5-dev (0x0x10100005L) 
    no-crypto-mdebug [default] OPENSSL_NO_CRYPTO_MDEBUG (skip dir) 
    no-crypto-mdebug-backtrace [forced] OPENSSL_NO_CRYPTO_MDEBUG_BACKTRACE (skip dir) 
    no-dynamic-engine [forced] 
    no-ec_nistp_64_gcc_128 [default] OPENSSL_NO_EC_NISTP_64_GCC_128 (skip dir) 
    no-egd   [default] OPENSSL_NO_EGD (skip dir) 
    no-heartbeats [default] OPENSSL_NO_HEARTBEATS (skip dir) 
    no-md2   [default] OPENSSL_NO_MD2 (skip dir) 
    no-rc5   [default] OPENSSL_NO_RC5 (skip dir) 
    no-sctp   [default] OPENSSL_NO_SCTP (skip dir) 
    no-shared  [default] 
    no-ssl-trace [default] OPENSSL_NO_SSL_TRACE (skip dir) 
    no-ssl3   [default] OPENSSL_NO_SSL3 (skip dir) 
    no-ssl3-method [default] OPENSSL_NO_SSL3_METHOD (skip dir) 
    no-unit-test [default] OPENSSL_NO_UNIT_TEST (skip dir) 
    no-weak-ssl-ciphers [default] OPENSSL_NO_WEAK_SSL_CIPHERS (skip dir) 
    no-zlib   [default] 
    no-zlib-dynamic [default] 
Configuring for linux-elf 
CC   =gcc 
CFLAG   =-Wall -O3 -pthread -DL_ENDIAN -fomit-frame-pointer -Wa,--noexecstack 
SHARED_CFLAG =-fPIC 
DEFINES  =DSO_DLFCN HAVE_DLFCN_H NDEBUG OPENSSL_THREADS OPENSSL_NO_DYNAMIC_ENGINE OPENSSL_PIC OPENSSL_BN_ASM_PART_WORDS OPENSSL_IA32_SSE2 OPENSSL_BN_ASM_MONT OPENSSL_BN_ASM_GF2m SHA1_ASM SHA256_ASM SHA512_ASM MD5_ASM RMD160_ASM AES_ASM VPAES_ASM WHIRLPOOL_ASM GHASH_ASM ECP_NISTZ256_ASM POLY1305_ASM 
LFLAG   = 
PLIB_LFLAG = 
EX_LIBS  =-ldl 
APPS_OBJ  = 
CPUID_OBJ  =x86cpuid.o 
UPLINK_OBJ = 
BN_ASM  =bn-586.o co-586.o x86-mont.o x86-gf2m.o 
EC_ASM  =ecp_nistz256.o ecp_nistz256-x86.o 
DES_ENC  =des-586.o crypt586.o 
AES_ENC  =aes-586.o vpaes-x86.o aesni-x86.o 
BF_ENC  =bf-586.o 
CAST_ENC  =c_enc.o 
RC4_ENC  =rc4-586.o 
RC5_ENC  =rc5-586.o 
MD5_OBJ_ASM =md5-586.o 
SHA1_OBJ_ASM =sha1-586.o sha256-586.o sha512-586.o 
RMD160_OBJ_ASM=rmd-586.o 
CMLL_ENC  =cmll-x86.o 
MODES_OBJ  =ghash-x86.o 
PADLOCK_OBJ =e_padlock-x86.o 
CHACHA_ENC =chacha-x86.o 
POLY1305_OBJ =poly1305-x86.o 
BLAKE2_OBJ = 
PROCESSOR  = 
RANLIB  =/usr/bin/ranlib 
ARFLAGS  = 
PERL   =/usr/bin/perl 

THIRTY_TWO_BIT mode 
BN_LLONG mode 

Configured for linux-elf. 

linux-generic32i686-whatever-linux2linux-elfと非常によく似ています:

$ ./Configure linux-generic32 
Configuring OpenSSL version 1.1.0-pre5-dev (0x0x10100005L) 
    no-crypto-mdebug [default] OPENSSL_NO_CRYPTO_MDEBUG (skip dir) 
    no-crypto-mdebug-backtrace [forced] OPENSSL_NO_CRYPTO_MDEBUG_BACKTRACE (skip dir) 
    no-dynamic-engine [forced] 
    no-ec_nistp_64_gcc_128 [default] OPENSSL_NO_EC_NISTP_64_GCC_128 (skip dir) 
    no-egd   [default] OPENSSL_NO_EGD (skip dir) 
    no-heartbeats [default] OPENSSL_NO_HEARTBEATS (skip dir) 
    no-md2   [default] OPENSSL_NO_MD2 (skip dir) 
    no-rc5   [default] OPENSSL_NO_RC5 (skip dir) 
    no-sctp   [default] OPENSSL_NO_SCTP (skip dir) 
    no-shared  [default] 
    no-ssl-trace [default] OPENSSL_NO_SSL_TRACE (skip dir) 
    no-ssl3   [default] OPENSSL_NO_SSL3 (skip dir) 
    no-ssl3-method [default] OPENSSL_NO_SSL3_METHOD (skip dir) 
    no-unit-test [default] OPENSSL_NO_UNIT_TEST (skip dir) 
    no-weak-ssl-ciphers [default] OPENSSL_NO_WEAK_SSL_CIPHERS (skip dir) 
    no-zlib   [default] 
    no-zlib-dynamic [default] 
Configuring for linux-generic32 
CC   =gcc 
CFLAG   =-Wall -O3 -pthread 
SHARED_CFLAG =-fPIC 
DEFINES  =DSO_DLFCN HAVE_DLFCN_H NDEBUG OPENSSL_THREADS OPENSSL_NO_DYNAMIC_ENGINE OPENSSL_PIC 
LFLAG   = 
PLIB_LFLAG = 
EX_LIBS  =-ldl 
APPS_OBJ  = 
CPUID_OBJ  =mem_clr.o 
UPLINK_OBJ = 
BN_ASM  =bn_asm.o 
EC_ASM  = 
DES_ENC  =des_enc.o fcrypt_b.o 
AES_ENC  =aes_core.o aes_cbc.o 
BF_ENC  =bf_enc.o 
CAST_ENC  =c_enc.o 
RC4_ENC  =rc4_enc.o rc4_skey.o 
RC5_ENC  =rc5_enc.o 
MD5_OBJ_ASM = 
SHA1_OBJ_ASM = 
RMD160_OBJ_ASM= 
CMLL_ENC  =camellia.o cmll_misc.o cmll_cbc.o 
MODES_OBJ  = 
PADLOCK_OBJ = 
CHACHA_ENC =chacha_enc.o 
POLY1305_OBJ = 
BLAKE2_OBJ = 
PROCESSOR  = 
RANLIB  =/usr/bin/ranlib 
ARFLAGS  = 
PERL   =/usr/bin/perl 

THIRTY_TWO_BIT mode 
BN_LLONG mode 
RC4 uses unsigned char 

Configured for linux-generic32. 
関連する問題