Postgres 9.5.4 for OpenSSL 1.1.0を設定しようとしています。設定はOpenSSL 1.1.0でSSL_library_init
が見つからないために死ぬでしょう。 OpenSSL 1.1.0はSSL_library_init
の代わりにOPENSSL_init_ssl
を提供します。したがって、AutoconfはSSL_library_init
またはOPENSSL_init_ssl
のいずれかをチェックする必要があります。AutoconfにLIBの "シンボルAまたはBが必要です"と伝えるには?
AC_CHECK_LIB(ssl, SSL_library_init, [], [AC_MSG_ERROR([library 'ssl' is required for OpenSSL])])
どのように私は[ルールを?]修正するかSSL_library_init
またはOPENSSL_init_ssl
のいずれかを探すために:
Postgresは次のテストを使用していますか?
ネイティブに、私はconfigure.in
を次のように変更しましたが、これは動作しませんでした。私が言うことができる最高のは、私の変更が(でもautoreconf
を実行した後に)無視された:ここでは
AC_CHECK_LIB(ssl, SSL_library_init|OPENSSL_init_ssl, [], [AC_MSG_ERROR([library 'ssl' is required for OpenSSL])])
はPostgrsコマンドを設定している:
:ここ$ ./configure --with-openssl --with-includes=/usr/local/ssl/include --with-libraries=/usr/local/ssl/lib
はconfig.log
から関連エントリです
configure:8732: gcc -o conftest -Wall -Wmissing-prototypes -Wpointer-arith
-Wdeclaration-after-statement -Wendif-labels -Wmissing-format-attribute
-Wformat-security -fno-strict-aliasing -fwrapv
-Wno-unused-command-line-argument -I/usr/local/ssl/include
-L/usr/local/ssl/lib -I/usr/local/ssl/include -L/usr/local/ssl/lib
conftest.c -lssl -lcrypto -lz -lreadline -lm >&5
Undefined symbols for architecture x86_64:
"_SSL_library_init", referenced from:
_main in conftest-c0c2a1.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see
invocation)
configure:8732: $? = 1
configure: failed program was:
| /* confdefs.h */
| #define PACKAGE_NAME "PostgreSQL"
| #define PACKAGE_TARNAME "postgresql"
| #define PACKAGE_VERSION "9.5.4"
| #define PACKAGE_STRING "PostgreSQL 9.5.4"
| #define PACKAGE_BUGREPORT "pgsql-bugs(at)postgresql(dot)org"
| #define PACKAGE_URL ""
| #define PG_MAJORVERSION "9.5"
| #define PG_VERSION "9.5.4"
| #define USE_INTEGER_DATETIMES 1
| #define DEF_PGPORT 5432
| #define DEF_PGPORT_STR "5432"
| #define BLCKSZ 8192
| #define RELSEG_SIZE 131072
| #define XLOG_BLCKSZ 8192
| #define XLOG_SEG_SIZE (16 * 1024 * 1024)
| #define ENABLE_THREAD_SAFETY 1
| #define PG_KRB_SRVNAM "postgres"
| #define USE_OPENSSL 1
| #define HAVE_LIBM 1
| #define HAVE_LIBREADLINE 1
| #define HAVE_LIBZ 1
| #define HAVE_SPINLOCKS 1
| #define HAVE_ATOMICS 1
| #define HAVE_LIBCRYPTO 1
| /* end confdefs.h. */
|
| /* Override any GCC internal prototype to avoid an error.
| Use char because int might match the return type of a GCC
| builtin and then its argument prototype would still apply. */
| #ifdef __cplusplus
| extern "C"
| #endif
| char SSL_library_init();
| int
| main()
| {
| return SSL_library_init();
| ;
| return 0;
| }
configure:8741: result: no
configure:8751: error: library 'ssl' is required for OpenSSL
ありがとうございました。はい、ソースコードにはOpenSSL固有のマクロマジックがあります。 (私にとっては)固着点が設定上の問題を克服しています。 – jww