Je compile Asterisk 1.8.32.3 (l'erreur persiste à partir du 1.8.18), et à la fin j'obtiens cette erreur:
tcptls.c: In function âtcptls_stream_closeâ: tcptls.c:401:20: error: dereferencing pointer to incomplete type if (!stream->ssl->server) { ^
Les lignes les plus importantes sont:
root@ubuntu:/usr/src/asterisk-1.8.32.3# make CC="cc" CXX="" LD="" AR="" RANLIB="" CFLAGS="" make -C menuselect CONFIGURE_SILENT="--silent" makeopts make[1]: Entering directory '/usr/src/asterisk-1.8.32.3/menuselect' make[1]: 'makeopts' is up to date. make[1]: Leaving directory '/usr/src/asterisk-1.8.32.3/menuselect' [CC] tcptls.c -> tcptls.o *tcptls.c: In function âtcptls_stream_closeâ: tcptls.c:401:20: error: dereferencing pointer to incomplete type if (!stream->ssl->server) {* ^ tcptls.c:403:5: warning: âERR_remove_stateâ is deprecated (declared at /usr/include/openssl/err.h:261) [-Wdeprecated-declarations] ERR_remove_state(0); ^ tcptls.c: In function â__ssl_setupâ: tcptls.c:768:4: warning: implicit declaration of function âSSLv2_client_methodâ [-Wimplicit-function-declaration] cfg->ssl_ctx = SSL_CTX_new(SSLv2_client_method()); ^ tcptls.c:768:4: warning: passing argument 1 of âSSL_CTX_newâ makes pointer from integer without a cast [enabled by default] In file included from /usr/src/asterisk-1.8.32.3/include/asterisk/tcptls.h:59:0, from tcptls.c:44: /usr/include/openssl/ssl.h:1503:17: note: expected âconst struct SSL_METHOD *â but argument is of type âintâ __owur SSL_CTX *SSL_CTX_new(const SSL_METHOD *meth); ^ tcptls.c:773:4: warning: implicit declaration of function âSSLv3_client_methodâ [-Wimplicit-function-declaration] cfg->ssl_ctx = SSL_CTX_new(SSLv3_client_method()); ^ tcptls.c:773:4: warning: passing argument 1 of âSSL_CTX_newâ makes pointer from integer without a cast [enabled by default] In file included from /usr/src/asterisk-1.8.32.3/include/asterisk/tcptls.h:59:0, from tcptls.c:44: /usr/include/openssl/ssl.h:1503:17: note: expected âconst struct SSL_METHOD *â but argument is of type âintâ __owur SSL_CTX *SSL_CTX_new(const SSL_METHOD *meth); ^ tcptls.c:775:4: warning: âTLSv1_client_methodâ is deprecated (declared at /usr/include/openssl/ssl.h:1879) [-Wdeprecated-declarations] cfg->ssl_ctx = SSL_CTX_new(TLSv1_client_method()); ^ /usr/src/asterisk-1.8.32.3/Makefile.rules:109: recipe for target 'tcptls.o' failed make[1]: *** [tcptls.o] Error 1 Makefile:351: recipe for target 'main' failed make: *** [main] Error 2
J'utilise dahdi 2.11.2 et g ++ / gcc 4.8; Compiler sur Ubuntu 16.04
Quelqu'un sait-il comment résoudre ce problème?
PS Je n'ai besoin de compiler que l'astérisque 1.8.18+ et uniquement sur Ubuntu 16.04.
3 Réponses :
Vous devez utiliser une ancienne version SSL (ce qui signifie généralement un autre système d'exploitation) OU une version plus récente d'astérisque.
1.8.x n'est plus pris en charge.
J'ai utilisé gcc / g ++ 4.4 et openssl1.0.2. Ne fonctionne pas de toute façon.
1.0.1beta fonctionne à coup sûr (version sous centos 5). Vérifiez que votre configuration a trouvé la version correcte de openssl.
Vous pouvez utiliser dahdi
comme module et ne pas recompiler tout Asterisk.
Vous venez de compiler dahdi
Je l'ai fait plusieurs fois avec la 1.8.32, et je n'ai jamais recompilé la distribution Asterisk.
J'ai installé dahdi 2.11.2 complet avant de commencer la compilation d'Asterisk pour l'installation, qui est une recommandation générale pour une installation générale. Aussi, je sélectionne dahdi comme module de compilation / installation Asterisk. Le moment principal c'est que tcptls.o jusc me cause des erreurs de compilation.
J'ai trouvé la solution par moi-même:
Pour compiler et installer astérisque, il faut gcc / g ++ 4.4 / 4.8. Openssl 1.0.2. Mais, après l'installation, il doit être remplacé par de nouveaux, sinon mysql ne fonctionnera pas dans astérisque, ainsi que Freeswitch.
De plus, l'ancienne version compilée avec les anciens openssl et gcc permet d'exécuter curl
, sinon elle devrait être remplacée par shell
.
Remplacement du nouveau openssl par l'ancien:
# will install libssl-dev as a dependency apt install libmysqlclient-dev # download required package manually apt download libssl1.0.0 apt download libssl1.0-dev apt download libcurl3 apt download libcurl-openssl1.0-dev # remove libssl-dev without removing libmysqlclient-dev dpkg -r --force-depends libssl-dev dpkg -r --force-depends libcurl4 dpkg -r --force-depends libcurl4-openssl-dev # install libssl1.0-dev manually dpkg -i libssl1.0-dev_1.0.2n-1ubuntu5.4_amd64.deb dpkg -i libcurl3_7.58.0-2ubuntu2_amd64.deb dpkg -i libcurl-openssl1.0-dev_7.58.0-2ubuntu2_amd64.deb