没有规则可以制作目标`modexp512-x86_64.o'启用ASM

时间:2016-09-28 15:41:15

标签: build configuration openssl

我正在尝试在启用了ASM的Linux 64位上构建openssl-1.0.2j。 Openssl-1.0.1u是最新的,但对我们来说不是一个好选择。如果没有no-asm选项,我会收到以下错误(no-asm正常):

No rule to make target `modexp512-x86_64.o', needed by `lib'

我在不同的CentOS VM上尝试了不同的编译器(带有gcc-4.1.2的CentOS 5.11,带有gcc-4.4.4的CentOS 6.0和带有gcc-4.8.3的CentOS 7.1)并得到了相同的结果。

我们正在使用openssl-1.0.1l,它没有" no-asm"选项。 由于最新的安全漏洞,我们需要迁移到更新版本的openssl。

我还发现,当我通过" no-asm"选项我传递了上面的错误,但是我收到了关于" ENGINE_load_rsax"的错误。未定义。

启用ASM时,为什么会收到与modexp512-x86_64.o'相关的错误?我该如何解决?

以下是我运行配置以隔离问题和输出的第一部分的方法:

    ./config shared
    Operating system: x86_64-whatever-linux2
    Configuring for linux-x86_64
    Configuring for linux-x86_64
    no-ec_nistp_64_gcc_128 [default]  OPENSSL_NO_EC_NISTP_64_GCC_128 (skip dir)
    no-gmp          [default]  OPENSSL_NO_GMP (skip dir)
    no-jpake        [experimental] OPENSSL_NO_JPAKE (skip dir)
    no-krb5         [krb5-flavor not specified] OPENSSL_NO_KRB5
    no-libunbound   [experimental] OPENSSL_NO_LIBUNBOUND (skip dir)
    no-md2          [default]  OPENSSL_NO_MD2 (skip dir)
    no-rc5          [default]  OPENSSL_NO_RC5 (skip dir)
    no-rfc3779      [default]  OPENSSL_NO_RFC3779 (skip dir)
    no-sctp         [default]  OPENSSL_NO_SCTP (skip dir)
    no-ssl-trace    [default]  OPENSSL_NO_SSL_TRACE (skip dir)
    no-ssl2         [default]  OPENSSL_NO_SSL2 (skip dir)
    no-store        [experimental] OPENSSL_NO_STORE (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]
    IsMK1MF=0
    CC            =gcc
    CFLAG         =-fPIC -DOPENSSL_PIC -DOPENSSL_THREADS -D_REENTRANT -DDSO_DLFCN -DHAVE_DLFCN_H -Wa,--noexecstack -m64 -DL_ENDIAN -O3 -Wall -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_MONT5 -DOPENSSL_BN_ASM_GF2m -DRC4_ASM -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DMD5_ASM -DAES_ASM -DVPAES_ASM -DBSAES_ASM -DWHIRLPOOL_ASM -DGHASH_ASM -DECP_NISTZ256_ASM
    EX_LIBS       =-ldl
    CPUID_OBJ     =x86_64cpuid.o
    BN_ASM        =x86_64-gcc.o x86_64-mont.o x86_64-mont5.o x86_64-gf2m.o rsaz_exp.o rsaz-x86_64.o rsaz-avx2.o
    EC_ASM        =ecp_nistz256.o ecp_nistz256-x86_64.o
    DES_ENC       =des_enc.o fcrypt_b.o
    AES_ENC       =aes-x86_64.o vpaes-x86_64.o bsaes-x86_64.o aesni-x86_64.o aesni-sha1-x86_64.o aesni-sha256-x86_64.o aesni-mb-x86_64.o
    BF_ENC        =bf_enc.o
    CAST_ENC      =c_enc.o
    RC4_ENC       =rc4-x86_64.o rc4-md5-x86_64.o
    RC5_ENC       =rc5_enc.o
    MD5_OBJ_ASM   =md5-x86_64.o
    SHA1_OBJ_ASM  =sha1-x86_64.o sha256-x86_64.o sha512-x86_64.o sha1-mb-x86_64.o sha256-mb-x86_64.o
    RMD160_OBJ_ASM=
    CMLL_ENC      =cmll-x86_64.o cmll_misc.o
    MODES_OBJ     =ghash-x86_64.o aesni-gcm-x86_64.o
    ENGINES_OBJ   =
    PROCESSOR     =
    RANLIB        =/usr/bin/ranlib
    ARFLAGS       =
    PERL          =/usr/bin/perl
    SIXTY_FOUR_BIT_LONG mode
    DES_UNROLL used
    DES_INT used
    RC4_CHUNK is unsigned long

1 个答案:

答案 0 :(得分:0)

我不需要在我的某个版本中使用引擎,所以我按照以下方式运行配置,并且构建工作正常: ./config no-engines共享

我必须在./config输出请求的./config之后运行make depend。

至少我不再阻止其中一个版本。 我仍然需要能够在没有"无引擎的情况下进行构建。其他构建的选项。 在更糟糕的情况下,我将被迫在运行./config然后构建之后从Makefile中删除modexp512-x86_64.o。