で「s6_addr32」という名前のメンバーを持っていません。私は、エラーをキャッチしています:「構造体のin6_addrは、」私は<strong><em><code>no-asm -ansi</code></em></strong>でOpenSSLをビルドするときに、いくつかのエラーをコンパイルして働いてい-ansi
$ ./config no-asm -ansi
...
$ make
...
gcc -DDSO_DLFCN -DHAVE_DLFCN_H -DOPENSSL_THREADS -DOPENSSL_NO_STATIC_ENGINE -DOPENSSL_PIC
-DOPENSSLDIR="\"/usr/local/ssl\"" -DENGINESDIR="\"/usr/local/lib/engines\"" -Wall -O3
-pthread -m64 -DL_ENDIAN -ansi -fPIC -Iinclude -I. -Icrypto/include -MMD -MF
crypto/bio/bss_dgram.d.tmp -MT crypto/bio/bss_dgram.o -c -o crypto/bio/bss_dgram.o
crypto/bio/bss_dgram.c
In file included from /usr/include/netdb.h:27:0,
from ./e_os.h:443,
from crypto/bio/bio_lcl.h:2,
from crypto/bio/bss_dgram.c:62:
crypto/bio/bss_dgram.c: In function ‘dgram_get_mtu_overhead’:
crypto/bio/bss_dgram.c:433:20: error: ‘const struct in6_addr’ has no member named ‘s6_addr32’
&& IN6_IS_ADDR_V4MAPPED(&tmp_addr))
^
私は/usr/include/linux/in6.h
で構造体を発見した:
#if __UAPI_DEF_IN6_ADDR
struct in6_addr {
union {
__u8 u6_addr8[16];
#if __UAPI_DEF_IN6_ADDR_ALT
__be16 u6_addr16[8];
__be32 u6_addr32[4];
#endif
} in6_u;
#define s6_addr in6_u.u6_addr8
#if __UAPI_DEF_IN6_ADDR_ALT
#define s6_addr16 in6_u.u6_addr16
#define s6_addr32 in6_u.u6_addr32
#endif
};
#endif /* __UAPI_DEF_IN6_ADDR */
私は過去に__UAPI_DEF_IN6_ADDR_ALT
を定義する必要が覚えていません。それはライン95、カーネルのlibc-compat.h
から次のことを明らかにしたりので、(私はそれを正しく解析していた場合)の検索:
#define __UAPI_DEF_IN6_ADDR 1
/* We unconditionally define the in6_addr macros and glibc must coordinate. */
#define __UAPI_DEF_IN6_ADDR_ALT 1
#define __UAPI_DEF_SOCKADDR_IN6 1
#define __UAPI_DEF_IPV6_MREQ 1
#define __UAPI_DEF_IPPROTO_V6 1
#define __UAPI_DEF_IPV6_OPTIONS 1
#define __UAPI_DEF_IN6_PKTINFO 1
#define __UAPI_DEF_IP6_MTUINFO 1
私は定義された代替シンボルを取得するために進むべき方法は?
システムは、Ubuntuの14.04(x86_64版)です:
$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 14.04.4 LTS
Release: 14.04
Codename: trusty
GCCは次のとおりです。
$ gcc --version
gcc (Ubuntu 4.8.4-2ubuntu1~14.04.1) 4.8.4
Copyright (C) 2013 Free Software Foundation, Inc.
OpenSSLに問題があるとお考えですか?ビルド設定プログラムがエラーなく実行されている場合、ビルドを成功させるためにビルドに頼ることができるはずです。したがって、これは確かに真実な*バグです。それは正しいことであるだけでなく、チケットに関する解説は回避策や修正をもたらすかもしれません。 –
報告書は、[Issue#4480:Ubuntu 14(x86_64): "no-asm -ansi"を使用した場合のコンパイルエラーと警告](https://rt.openssl.org/Ticket/Display.html?id= 4480&ユーザー=ゲスト&パス=ゲスト)。私は実際に現時点でバグを働いている人に近い。 – jww