我正在尝试在Red Hat上安装Openssl 1.0.1k的单独版本。我首先尝试了Centos,没有任何实际问题。

在出现此错误之前,我执行了以下操作:

yum install -y libxml2 libxml2-devel libxslt libxslt-devel#不确定这是否确实有助于解决我的错误。
./config --prefix =/data/home/jboss/openssl_1.0.1/usr\
--openssldir =/data/home/jboss/openssl_1.0.1/etc/ssl
#缺少包含文件。
vi〜/.bash_profile
C_INCLUDE_PATH =/usr/lib/bcc/include/
CPLUS_INCLUDE_PATH =/usr/lib/bcc/include/
导出C_INCLUDE_PATH
汇出CPLUS_INCLUDE_PATH
LANG = zh_CN#make给带重音符号的特殊字符。这个固定的。固定到en_US.UTF-8后,我会重新设置它。
vi/usr/lib/bcc/include/asm/limits.h
定义INT_MAX 2147483647

毕竟,我得到以下信息:

....更多顶部
make [2]:进入目录`/data01/home/s617741/openssl-1.0.1k/crypto/bn'
make [2]:“all”不做任何事情。
make [2]:离开目录`/data01/home/s617741/openssl-1.0.1k/crypto/bn'
一切都在加密/电子...
make [2]:进入目录`/data01/home/s617741/openssl-1.0.1k/crypto/ec'
gcc -I .. -I ../.. -I ../modes -I ../asn1 -I ../evp -I ../../include -DOPENSSL_THREADS -D_REENTRANT -DDSO_DLFCN -DHAVE_DLFCN_H -Wa, --noexecstack -m64 -DL_ENDIAN -DTERMIO -O3 -Wall -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_MONT5 -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DMD5_ASM -DAES_ASM -DVPAES_ASM -DBSAES_ASM -DWHIRLPOOL_ASM -DGHASH_ASM -c -o ec_asn1.o ec_asn1.c
ec_asn1.c:201:警告:函数'offsetof'的隐式声明
ec_asn1.c:201:错误:“X9_62_PENTANOMIAL”之前的预期表达式
ec_asn1.c:201:错误:初始化元素不恒定
ec_asn1.c:201:错误:(“X9_62_PENTANOMIAL_seq_tt [0] .offset”附近初始化)
ec_asn1.c:202:错误:“X9_62_PENTANOMIAL”之前的预期表达式
ec_asn1.c:202:错误:初始化元素不是恒定的
ec_asn1.c:202:错误:(“X9_62_PENTANOMIAL_seq_tt [1] .offset”附近初始化)
ec_asn1.c:203:错误:“X9_62_PENTANOMIAL”之前的预期表达式
ec_asn1.c:203:错误:初始化元素不是恒定的
ec_asn1.c:203:错误:(“X9_62_PENTANOMIAL_seq_tt [2] .offset”附近初始化)
...继续出现类似错误。

任何见识都会有所帮助。

最佳答案

offsetof定义在<stddef.h>中定义,并由ec_asn1.crand_egd.c使用。

但是,ec_asn1.crand_egd.c不包括<stddef.h>:

$ cd openssl-1.0.1
$ find . -iname ec_asn1.c
./crypto/ec/ec_asn1.c
$ cat crypto/ec/ec_asn1.c | grep stddef

您应该打开ec_asn1.crand_egd.c,并添加#include <stddef.h>

-----

针对此问题针对OpenSSL提交了一个错误:Bug 3684: Missing <stddef.h> for source files using offsetof。您可以在其RT Tracker中检查状态。使用用户名=访客,密码=访客登录。

-----

这是我正在使用的机器的定义,以备您需要时使用:
#if defined(__GNUC__) && (__GNUC__ == 3 && __GNUC_MINOR__ >= 5 || __GNUC__ > 3)
#ifndef __offsetof      /* Deprecated: for source compatibility only */
#define __offsetof(type, field) __builtin_offsetof(type, field)
#endif
#define offsetof(type, field) __builtin_offsetof(type, field)
#else /* ! (gcc >= 3.5) */
#ifndef __offsetof      /* Deprecated: for source compatibility only */
#define __offsetof(type, field) ((size_t)(&((type *)0)->field))
#endif
#define offsetof(type, field) ((size_t)(&((type *)0)->field))
#endif /* (gcc >= 3.5) */

关于linux - 出错-ec_asn1.o-ec_asn1.c :201: error: expected expression before 'X9_62_PENTANOMIAL' ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28246642/

10-08 21:46