Компилировать libcurl с пользовательским каталогом OpenSSL - PullRequest
0 голосов
/ 15 мая 2018

Я собрал OpenSSL в пользовательский каталог сборки:

/Users/builder/dev/artifact_staging/temp/openssl

Теперь, когда я настраиваю libcurl, я указываю на использование OpenSSL в этом каталоге:

./configure
  --without-zlib \
  --enable-static \
  --enable-ipv6 \
  --with-ssl=/Users/builder/dev/artifact_staging/temp/openssl \
  --host="arm-apple-darwin" \
  --prefix=/Users/builder/dev/artifact_staging/temp/libcurl

Проблема в том, что в итоговом отчете, который я получаю в конце настройки, он говорит мне, что не будет использовать SSL:

curl version:     7.59.0
  Host setup:       x86_64-apple-darwin17.5.0
  Install prefix:   /usr/local
  Compiler:         gcc
  SSL support:      no      (--with-{ssl,gnutls,nss,polarssl,mbedtls,cyassl,axtls,winssl,darwinssl} )
  SSH support:      no      (--with-libssh2)
  zlib support:     enabled
  brotli support:   no      (--with-brotli)
  GSS-API support:  no      (--with-gssapi)
  TLS-SRP support:  no      (--enable-tls-srp)
  resolver:         POSIX threaded
  IPv6 support:     enabled
  Unix sockets support: enabled
  IDN support:      enabled (libidn2)
  Build libcurl:    Shared=yes, Static=yes
  Built-in manual:  enabled
  --libcurl option: enabled (--disable-libcurl-option)
  Verbose errors:   enabled (--disable-verbose)
  SSPI support:     no      (--enable-sspi)
  ca cert bundle:   /etc/ssl/cert.pem
  ca cert path:     no
  ca fallback:      no
  LDAP support:     enabled (OpenLDAP)
  LDAPS support:    enabled
  RTSP support:     enabled
  RTMP support:     no      (--with-librtmp)
  metalink support: no      (--with-libmetalink)
  PSL support:      no      (libpsl not found)
  HTTP2 support:    disabled (--with-nghttp2)
  Protocols:        DICT FILE FTP GOPHER HTTP IMAP LDAP LDAPS POP3 RTSP SMTP TELNET TFTP

Чего мне не хватает в моем вызове конфигурации?

ОБНОВЛЕНИЕ 1

Некоторые ошибки найдены в моем файле config.log

/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/netdb.h:277:17: note: previous declaration is here
int             getnameinfo(const struct sockaddr * __restrict, socklen_t,
                ^
1 error generated.


gcc -o conftest -Qunused-arguments -Os -mmacosx-version-min=10.8 -Werror=partial-availability  -I/usr/local/Cellar/libidn2/2.0.4/include  -L/usr/local/Cellar/libidn2/2.0.4/lib conftest.c -lidn2 -lldap >&5
conftest.c:307:3: error: expected identifier or '('
} # AC-LANG-PROGRAM
  ^
1 error generated.


fatal error: 'ac_nonexistent.h' file not found
#include <ac_nonexistent.h>
         ^~~~~~~~~~~~~~~~~~
1 error generated.


error: use of undeclared identifier 'force'
      force compilation error
      ^
1 error generated.


error: 'bad_t' declared as an array with a negative size
      typedef char bad_t[sizeof(char) == sizeof(int) ? -1 : -1 ];
                         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1 error generated.

ОБНОВЛЕНИЕ 2

После прочтения я внес следующие изменения. Это все еще не дает мне то, что я хочу, но я хотел бы знать, нахожусь ли я на правильном пути.

Я изменил мои параметры конфигурации с тем, что я считаю правильным хостом:

./configure
  --without-zlib \
  --enable-static \
  --enable-ipv6 \
  --with-ssl=/Users/builder/dev/artifact_staging/temp/openssl \
  --host="arm64-apple-darwin" \
  --prefix=/Users/builder/dev/artifact_staging/temp/libcurl

Я также добавил пару флагов:

export CPPFLAGS="-arch=arm64 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk -I/Users/builder/dev/artifact_staging/temp/openssl/include"

export LDFLAGS="-arch=arm64 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk -L/Users/builder/dev/artifact_staging/temp/openssl/lib"

Теперь, когда я запускаю configure, я все равно не получаю поддержку ssl в конце, и когда я проверяю файл config.log, я вижу

clang: warning: using sysroot for 'iPhoneOS' but targeting 'MacOSX' [-Wincompatible-sysroot]

Я не уверен, что мне здесь не хватает, чтобы заставить меня думать, что я нацеливаюсь на MacOSX; все, что я делал до сих пор, определяет arm64.

Существуют и другие фактические ошибки, но я думаю, что они являются результатом того, что я думаю, что я пытаюсь собрать для x86_64, а не для arm64.

ld: dynamic main executables must link with libSystem.dylib for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
configure:4386: $? = 1
configure:4424: result: no
configure: failed program was:
| /* confdefs.h */
| #define PACKAGE_NAME "curl"
| #define PACKAGE_TARNAME "curl"
| #define PACKAGE_VERSION "-"
| #define PACKAGE_STRING "curl -"
| #define PACKAGE_BUGREPORT "a suitable curl mailing list: https://curl.haxx.se/mail/"
| #define PACKAGE_URL ""
| /* end confdefs.h.  */
| 
| int main (void)
| {
| 
|  ;
|  return 0;
| }
configure:4429: error: in `/Users/builder/dev/artifact_staging/curl-7.59.0':
configure:4431: error: C compiler cannot create executables

Мне не хватает параметра в моих флагах?

...