mac 의 Nginx 컴 파일 구덩이

10038 단어 스 트림 미디어
배경
오늘 은 mac 로 nginx 소스 코드 를 컴 파일 합 니 다. nginx - rtmp - module 을 컴 파일 해 야 하기 때문에 홈 페이지 에서 주 는 방식 으로 컴 파일 합 니 다. 그 결과 중간 에 어려움 을 겪 었 습 니 다 nginx 컴 파일 실행 명령 은 다음 과 같 습 니 다.
./configure --add-module=/Users/kyolong/Desktop/workspace/nginx/nginx-rtmp-module --with-openssl=../openssl-1.0.2s

ld: warning: The i386 architecture is deprecated for macOS (remove from the Xcode build setting: ARCHS)
먼저 이 오류 입 니 다. 얼핏 보면 라 이브 러 리 가 인식 되 지 않 는 문제 인 것 같 습 니 다. 아래 에 기호 가 정의 되 지 않 은 i386 을 알려 드 리 겠 습 니 다. 사실은 이 오 류 는 여기에 없습니다. 위 에 i386 은 이미 Xcode 에서 제거 되 었 습 니 다.what???? 쉽게 말 하면 애플 이 32 명의 라 이브 러 리 를 사용 하지 말 라 는 거 야. 그래, 그럼 예전 에 예전 버 전 으로 건 드 리 라 고 했 잖 아 ~
ld: warning: The i386 architecture is deprecated for macOS (remove from the Xcode build setting: ARCHS)
ld: warning: could not create compact unwind for _passwd_main: stack subl instruction is too different from dwarf stack size
ld: warning: could not create compact unwind for _s_client_main: stack subl instruction is too different from dwarf stack size
ld: warning: could not create compact unwind for _serverinfo_cli_parse_cb: stack subl instruction is too different from dwarf stack size
ld: warning: could not create compact unwind for _speed_main: stack subl instruction is too different from dwarf stack size
ld: warning: could not create compact unwind for _print_stuff: stack subl instruction is too different from dwarf stack size
ld: warning: could not create compact unwind for _s_time_main: stack subl instruction is too different from dwarf stack size
ld: warning: could not create compact unwind for _rand_main: stack subl instruction is too different from dwarf stack size
ld: warning: could not create compact unwind for _ocsp_main: stack subl instruction is too different from dwarf stack size
ld: warning: could not create compact unwind for _create_query: stack subl instruction is too different from dwarf stack size
ld: warning: could not create compact unwind for _serial_cb: stack subl instruction is too different from dwarf stack size
ld: warning: could not create compact unwind for _srp_main: stack subl instruction is too different from dwarf stack size
ld: warning: could not create compact unwind for _srp_create_user: stack subl instruction is too different from dwarf stack size
ld: warning: ignoring file /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk/usr/lib/libSystem.tbd, missing required architecture i386 in file /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk/usr/lib/libSystem.tbd
ld: warning: could not create compact unwind for _ERR_print_errors_cb: stack subl instruction is too different from dwarf stack size
ld: warning: could not create compact unwind for _ERR_print_errors: stack subl instruction is too different from dwarf stack size
ld: warning: could not create compact unwind for _PEM_X509_INFO_write_bio: stack subl instruction is too different from dwarf stack size
ld: warning: could not create compact unwind for _PEM_read_bio_PrivateKey: stack subl instruction is too different from dwarf stack size
ld: warning: could not create compact unwind for _PKCS7_verify: stack subl instruction is too different from dwarf stack size
ld: warning: could not create compact unwind for _PKCS7_decrypt: stack subl instruction is too different from dwarf stack size
ld: warning: could not create compact unwind for _RAND_load_file: stack subl instruction is too different from dwarf stack size
ld: warning: could not create compact unwind for _RAND_write_file: stack subl instruction is too different from dwarf stack size
ld: warning: could not create compact unwind for _read_string_inner: stack subl instruction is too different from dwarf stack size
ld: warning: could not create compact unwind for _process_pci_value: stack subl instruction is too different from dwarf stack size
ld: warning: could not create compact unwind for _pkey_GOST01cp_encrypt: stack subl instruction is too different from dwarf stack size
ld: warning: could not create compact unwind for _pkey_GOST01cp_decrypt: stack subl instruction is too different from dwarf stack size
Undefined symbols for architecture i386:
  "__DefaultRuneLocale", referenced from:
      _show_ciphers in enc.o
      _s_server_main in s_server.o
      _s_client_main in s_client.o
      _BN_hex2bn in libcrypto.a(bn_print.o)
      _CONF_parse_list in libcrypto.a(conf_mod.o)
      _OBJ_create_objects in libcrypto.a(obj_dat.o)
      _OCSP_REQ_CTX_nbio in libcrypto.a(ocsp_ht.o)
      ...

좋 습 니 다. 예전 에 이런 실 수 를 당 한 사람 이 있 는 지 찾 아 보 니 많은 선배 들 이 이미 구 덩이 를 밟 았 습 니 다. 이 문 제 는 Xcode 강등 을 통 해 해결 할 수 있 습 니 다. 그러나 Xcode 강등 은 아무래도 좀 번 거 롭 습 니 다. 그리고 옛날 버 전 을 다운로드 하고 반나절 동안 옛날 버 전 을 삭제 해 야 합 니 다.괜찮아 요. 선배 님 이 다 밟 아 주 셨 어 요. 이 걸 Command 라 고 다운로드 해 주세요.Line_Tools_macOS_10.13_for_Xcode_10.1 이면 됩 니 다. 사용 방법 도 매우 간단 합 니 다. 다음 과 같이 xcode - select 가 현재 어디 를 가리 키 고 있 는 지 살 펴 보 겠 습 니 다.
$ xcode-select -p
/Application/Xcode.app/Contents/Developer

그리고 그것 을 수정 하고 우리 가 방금 내 린 CommondLine Tools 를 가리 키 며 루트 권한 이 필요 하기 때문에 sudo 를 사용 합 니 다.
$ sudo xcode-select -s /path/to/CommandLineTools

Undefined symbols for architecture x86_64
위의 그 잘못 이 해결 되 고 또 새로운 잘못 이 생 겼 다.그리고 아래 의 이 오류 입 니 다. x86 - 64 라 이브 러 리 를 찾 을 수 없 는 것 같 습 니 다. 이 파일 을 무시 하 는 것 은 64 비트 라 이브 러 리 가 아 닙 니 다.근 데 아까 nginx 32 명 더 있 었 는데 왜 지금 64 명 더...그래서 아래 에 많은 보고 가 잘못 되 었 는데, 분명히 라 이브 러 리 파일 의 자릿수 가 틀 렸 다.
ld: warning: ignoring file ../openssl-1.0.2s/.openssl/lib/libssl.a, file was built for archive which is not the architecture being linked (x86_64): ../openssl-1.0.2s/.openssl/lib/libssl.a
ld: warning: ignoring file ../openssl-1.0.2s/.openssl/lib/libcrypto.a, file was built for archive which is not the architecture being linked (x86_64): ../openssl-1.0.2s/.openssl/lib/libcrypto.a
Undefined symbols for architecture x86_64:
  "_AES_cbc_encrypt", referenced from:
      _ngx_rtmp_mpegts_write_file in ngx_rtmp_mpegts.o
      _ngx_rtmp_mpegts_close_file in ngx_rtmp_mpegts.o
  "_AES_set_encrypt_key", referenced from:
      _ngx_rtmp_mpegts_init_encryption in ngx_rtmp_mpegts.o
  "_ASN1_GENERALIZEDTIME_print", referenced from:
      _ngx_ssl_stapling_ocsp_handler in ngx_event_openssl_stapling.o
  "_ASN1_TIME_print", referenced from:
      _ngx_ssl_get_client_v_start in ngx_event_openssl.o
      _ngx_ssl_get_client_v_end in ngx_event_openssl.o
      _ngx_ssl_get_client_v_remain in ngx_event_openssl.o
  "_ASN1_d2i_bio", referenced from:
      _ngx_ssl_stapling in ngx_event_openssl_stapling.o

저도 어떻게 해 야 할 지 모 르 겠 어 요. 선배 님 이 또 구 덩이 를 밟 으 셨 어 요. 그러면 저 는 해결 방안 을 밟 지 않 아 도 돼 요. 번역 하기 전에 다음 과 같은 말 을 더 하 는 거 예요.
$ export KERNEL_BITS=64

openssl 의 config 파일 은 이 변수 에 따라 x86 을 열 었 는 지 여 부 를 판단 합 니 다.64 컴 파일, 기본 값 은 닫 힌 다음 에 정상적으로 컴 파일 하여 파일 을 성공 적 으로 생 성 합 니 다.

좋은 웹페이지 즐겨찾기