web-dev-qa-db-ja.com

エラー:フィールド 'ctx'の型が不完全ですEVP_CIPHER_CTX

問題:Cepstral(ttsエンジン)をDebian 8を実行しているFreeswitchにインストールする必要があります。Freeswitchはすでに稼働していますが、mod_cepstralモジュールを作成するためにソースからビルドする必要がありました。

makeを実行すると、次のエラーが発生します。

In file included from ./crypto/include/prng.h:17:0,
                 from ./crypto/include/crypto_kernel.h:50,
                 from ./include/srtp.h:53,
                 from srtp/srtp.c:46:
./crypto/include/aes_icm_ossl.h:66:20: error: field ‘ctx’ has incomplete type
     EVP_CIPHER_CTX ctx;
                    ^~~
In file included from srtp/srtp.c:50:0:
./crypto/include/aes_gcm_ossl.h:58:18: error: field ‘ctx’ has incomplete type
   EVP_CIPHER_CTX ctx;
                  ^~~
Makefile:646: recipe for target 'srtp.lo' failed
make[1]: *** [srtp.lo] Error 1
make[1]: Leaving directory '/usr/src/freeswitch/libs/srtp'
Makefile:3931: recipe for target 'libs/srtp/libsrtp.la' failed
make: *** [libs/srtp/libsrtp.la] Error 2

私はインターネットを使って解決策を模索していますが、私は開発者ではありません。任意の助けいただければ幸いです。

7
Joe

Cepstralでサポートと話し合った結果、Jessie(Debian 8)はまだ完全には互換性がないと判断しました。私はサーバーをDebian 7で再構築し、現在は正常に動作しています。

1
Joe
wget https://github.com/Cisco/libsrtp/archive/v2.1.0.tar.gz
tar xfv v2.1.0.tar.gz
cd libsrtp-2.1.0
./configure --prefix=/usr --enable-openssl
make shared_library && Sudo make install

libsrtpの最新バージョンを入手してください。

7
mikeb

より新しいOpenSSLが公開しない原因strcut EVP_CIPHER_CTX

これを試して

EVP_CIPHER_CTX *ctx = EVP_CIPHER_CTX_new();
EVP_CIPHER_CTX_init(ctx);
//do sth here
//...
EVP_CIPHER_CTX_free(ctx);
5
Xt Z

OpenSSLに依存しているようですが、使用しているOpenSSLのバージョンに互換性がありません。 OpenSSL 1.1.0を使用していますが、OpenSSL 1.0.2を使用する必要があります

3
Matt Caswell