Page 1 of 1

HighSierra上でビルドできない

Posted: Sat Jun 29, 2019 11:55 pm
by Tomon613
掲題の通り、macOS HighSierraでビルドできません。
ソースはgithubから落としてます。
以下のエラーでmakeが止まります。デフォルトのclangじゃダメってオチですかね?
どなたかご教授願います。

------エラー文-------

Undefined symbols for architecture x86_64:
"_DH_get0_key", referenced from:
_DhNew in Encrypt.o
"_DH_set0_pqg", referenced from:
_DhNew in Encrypt.o
"_EVP_PKEY_get0_RSA", referenced from:
_RsaPublicToBuf in Encrypt.o
_RsaVerifyEx in Encrypt.o
_RsaSignEx in Encrypt.o
_RsaPublicDecrypt in Encrypt.o
_RsaPrivateEncrypt in Encrypt.o
_RsaPrivateDecrypt in Encrypt.o
_RsaPublicEncrypt in Encrypt.o
...
"_HMAC_CTX_free", referenced from:
_Enc_tls1_P_hash in Encrypt.o
_NewMd in Encrypt.o
_FreeMd in Encrypt.o
"_HMAC_CTX_new", referenced from:
_Enc_tls1_P_hash in Encrypt.o
_NewMd in Encrypt.o
"_OPENSSL_init_crypto", referenced from:
_InitCryptLibrary in Encrypt.o
"_OPENSSL_init_ssl", referenced from:
_InitCryptLibrary in Encrypt.o
"_OPENSSL_sk_new_null", referenced from:
_NewExtendedKeyUsageForX509 in Encrypt.o
"_OPENSSL_sk_num", referenced from:
_X509ToX in Encrypt.o
"_OPENSSL_sk_pop_free", referenced from:
_NewExtendedKeyUsageForX509 in Encrypt.o
"_OPENSSL_sk_push", referenced from:
_AddKeyUsageX509 in Encrypt.o
_NewExtendedKeyUsageForX509 in Encrypt.o
"_OPENSSL_sk_value", referenced from:
_X509ToX in Encrypt.o
"_RSA_get0_crt_params", referenced from:
_WriteSecKey in Secure.o
"_RSA_get0_factors", referenced from:
_WriteSecKey in Secure.o
"_RSA_get0_key", referenced from:
_RsaPublicToBuf in Encrypt.o
_WriteSecKey in Secure.o
"_RSA_set0_key", referenced from:
_RsaBinToPublic in Encrypt.o
"_SSL_CTX_set_options", referenced from:
_StartSSLEx in Network.o
_NewSslPipe in Network.o
_NewSSLCtx in Network.o
"_X509_get0_notAfter", referenced from:
_LoadXDates in Encrypt.o
"_X509_get0_notBefore", referenced from:
_LoadXDates in Encrypt.o
"_X509_getm_notAfter", referenced from:
_NewX509 in Encrypt.o
_NewRootX509 in Encrypt.o
"_X509_getm_notBefore", referenced from:
_NewX509 in Encrypt.o
_NewRootX509 in Encrypt.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make: *** [tmp/hamcorebuilder] Error 1

Re: HighSierra上でビルドできない

Posted: Mon Jul 01, 2019 10:23 am
by cedar
エラーメッセージからすると、OpenSSL 関連のシンボルが見つからないというエラーのようです。
OpenSSL の開発版がインストールされているか確認してみてください。

Re: HighSierra上でビルドできない

Posted: Wed Jul 03, 2019 12:42 pm
by Tomon613
ご助言ありがとうございます。
しかし、HighSierraにはopensslデフォルトでインストールされています。
私もopensslが怪しいかと思い、gitのopensslレポジトリからインストールしましたが全く同じエラーが返されます。
もちろんパスも通っています。

Re: HighSierra上でビルドできない

Posted: Thu Jul 04, 2019 9:22 am
by cedar
ビルドしようとしているのは、バイナリで配布されているフリー版でしょうか、それともソースコードで配布されているオープンソース版でしょうか。

Re: HighSierra上でビルドできない

Posted: Thu Jul 04, 2019 11:36 am
by Tomon613
先に述べた通りgitからソースコードを取得しています。

Re: HighSierra上でビルドできない

Posted: Fri Jul 05, 2019 9:44 am
by cedar
ソースコードからコンパイルする場合には、OpenSSL のライブラリは配布パッケージに含まれていません。
インストールされた OpenSSL のライブラリはリンクの対象に含まれているでしょうか?
ライブラリパスが正しく設定されていないようであれば、コマンドラインでフルパスを指定してみたほうが良いかもしれません。

Re: HighSierra上でビルドできない

Posted: Sat Jul 06, 2019 12:50 am
by Tomon613
返信ありがとうございます。
macOSでは/usr/local/libにsslライブラリがインストールされていますが、このディレクトリをわざわざフルパス指定しないといけないのですか?
ちなみにフルパス指定しても同様のエラーを吐いてmakeできませんでした(bash_profileに「export LDFLAGS="-L/usr/local/lib"を追記)。

ところでopenssl(git)の再インストールを試みてログを追ってみたところ、
"/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ranlib: file: /usr/local/lib/libssl.a.new(libssl-lib-ssl_utst.o) has no symbols"
の一文をみつけました。
opensslはシンボルを作らない仕様になってるらしいのですが、無理やり作らないといけないですかね…?

Re: HighSierra上でビルドできない

Posted: Sat Jul 06, 2019 1:14 am
by cedar
SoftEther VPN からは API として公開していないシンボルは参照していないので、内部シンボルについては削除されていても問題ないと思います。

Re: HighSierra上でビルドできない

Posted: Fri Jul 12, 2019 10:47 pm
by Tomon613
自己解決しました。
Cmakeを導入したら成功しました。
はじめに書いたようにデフォルトのclangじゃダメてオチみたいですね。