OTClient wont compile on Ubuntu 16.04

VaizardX

New Member
Joined
May 13, 2015
Messages
19
Reaction score
1
Hello, i tried to compile the OTClient at Ubuntu 16.04, but any sucess
I've tried the GitHub tutorial (Compiling on Linux · edubart/otclient Wiki · GitHub). But any sucess

when i do make, that error appears:

Code:
[email protected]:/poke/otc/build$ sudo chmod 777 -R /poke/
[email protected]:/poke/otc/build$ make
[  1%] Building CXX object CMakeFiles/otclient.dir/src/framework/util/crypt.cpp.o
/poke/otc/src/framework/util/crypt.cpp: In member function ‘void Crypt::rsaGenerateKey(int, int)’:
/poke/otc/src/framework/util/crypt.cpp:315:56: error: invalid use of incomplete type ‘RSA {aka struct rsa_st}’
     g_logger.info(std::string("p = ") + BN_bn2dec(m_rsa->p));
                                                        ^
In file included from /poke/otc/src/framework/util/crypt.cpp:23:0:
/poke/otc/src/framework/util/crypt.h:31:16: note: forward declaration of ‘RSA {aka struct rsa_st}’
typedef struct rsa_st RSA;
                ^
/poke/otc/src/framework/util/crypt.cpp:316:56: error: invalid use of incomplete type ‘RSA {aka struct rsa_st}’
     g_logger.info(std::string("q = ") + BN_bn2dec(m_rsa->q));
                                                        ^
In file included from /poke/otc/src/framework/util/crypt.cpp:23:0:
/poke/otc/src/framework/util/crypt.h:31:16: note: forward declaration of ‘RSA {aka struct rsa_st}’
typedef struct rsa_st RSA;
                ^
/poke/otc/src/framework/util/crypt.cpp:317:56: error: invalid use of incomplete type ‘RSA {aka struct rsa_st}’
     g_logger.info(std::string("d = ") + BN_bn2dec(m_rsa->d));
                                                        ^
In file included from /poke/otc/src/framework/util/crypt.cpp:23:0:
/poke/otc/src/framework/util/crypt.h:31:16: note: forward declaration of ‘RSA {aka struct rsa_st}’
typedef struct rsa_st RSA;
                ^
/poke/otc/src/framework/util/crypt.cpp:318:56: error: invalid use of incomplete type ‘RSA {aka struct rsa_st}’
     g_logger.info(std::string("n = ") + BN_bn2dec(m_rsa->n));
                                                        ^
In file included from /poke/otc/src/framework/util/crypt.cpp:23:0:
/poke/otc/src/framework/util/crypt.h:31:16: note: forward declaration of ‘RSA {aka struct rsa_st}’
typedef struct rsa_st RSA;
                ^
/poke/otc/src/framework/util/crypt.cpp:319:56: error: invalid use of incomplete type ‘RSA {aka struct rsa_st}’
     g_logger.info(std::string("e = ") + BN_bn2dec(m_rsa->e));
                                                        ^
In file included from /poke/otc/src/framework/util/crypt.cpp:23:0:
/poke/otc/src/framework/util/crypt.h:31:16: note: forward declaration of ‘RSA {aka struct rsa_st}’
typedef struct rsa_st RSA;
                ^
/poke/otc/src/framework/util/crypt.cpp: In member function ‘void Crypt::rsaSetPublicKey(const string&, const string&)’:
/poke/otc/src/framework/util/crypt.cpp:326:21: error: invalid use of incomplete type ‘RSA {aka struct rsa_st}’
     BN_dec2bn(&m_rsa->n, n.c_str());
                     ^
In file included from /poke/otc/src/framework/util/crypt.cpp:23:0:
/poke/otc/src/framework/util/crypt.h:31:16: note: forward declaration of ‘RSA {aka struct rsa_st}’
typedef struct rsa_st RSA;
                ^
/poke/otc/src/framework/util/crypt.cpp:327:21: error: invalid use of incomplete type ‘RSA {aka struct rsa_st}’
     BN_dec2bn(&m_rsa->e, e.c_str());
                     ^
In file included from /poke/otc/src/framework/util/crypt.cpp:23:0:
/poke/otc/src/framework/util/crypt.h:31:16: note: forward declaration of ‘RSA {aka struct rsa_st}’
typedef struct rsa_st RSA;
                ^
/poke/otc/src/framework/util/crypt.cpp:330:13: error: invalid use of incomplete type ‘RSA {aka struct rsa_st}’
     if(m_rsa->_method_mod_n) { BN_MONT_CTX_free(m_rsa->_method_mod_n); m_rsa->_method_mod_n = NULL; }
             ^
In file included from /poke/otc/src/framework/util/crypt.cpp:23:0:
/poke/otc/src/framework/util/crypt.h:31:16: note: forward declaration of ‘RSA {aka struct rsa_st}’
typedef struct rsa_st RSA;
                ^
/poke/otc/src/framework/util/crypt.cpp:330:54: error: invalid use of incomplete type ‘RSA {aka struct rsa_st}’
     if(m_rsa->_method_mod_n) { BN_MONT_CTX_free(m_rsa->_method_mod_n); m_rsa->_method_mod_n = NULL; }
                                                      ^
In file included from /poke/otc/src/framework/util/crypt.cpp:23:0:
/poke/otc/src/framework/util/crypt.h:31:16: note: forward declaration of ‘RSA {aka struct rsa_st}’
typedef struct rsa_st RSA;
                ^
/poke/otc/src/framework/util/crypt.cpp:330:77: error: invalid use of incomplete type ‘RSA {aka struct rsa_st}’
     if(m_rsa->_method_mod_n) { BN_MONT_CTX_free(m_rsa->_method_mod_n); m_rsa->_method_mod_n = NULL; }
                                                                             ^
In file included from /poke/otc/src/framework/util/crypt.cpp:23:0:
/poke/otc/src/framework/util/crypt.h:31:16: note: forward declaration of ‘RSA {aka struct rsa_st}’
typedef struct rsa_st RSA;
                ^
/poke/otc/src/framework/util/crypt.cpp: In member function ‘void Crypt::rsaSetPrivateKey(const string&, const string&, const string&)’:
/poke/otc/src/framework/util/crypt.cpp:335:21: error: invalid use of incomplete type ‘RSA {aka struct rsa_st}’
     BN_dec2bn(&m_rsa->p, p.c_str());
                     ^
In file included from /poke/otc/src/framework/util/crypt.cpp:23:0:
/poke/otc/src/framework/util/crypt.h:31:16: note: forward declaration of ‘RSA {aka struct rsa_st}’
typedef struct rsa_st RSA;
                ^
/poke/otc/src/framework/util/crypt.cpp:336:21: error: invalid use of incomplete type ‘RSA {aka struct rsa_st}’
     BN_dec2bn(&m_rsa->q, q.c_str());
                     ^
In file included from /poke/otc/src/framework/util/crypt.cpp:23:0:
/poke/otc/src/framework/util/crypt.h:31:16: note: forward declaration of ‘RSA {aka struct rsa_st}’
typedef struct rsa_st RSA;
                ^
/poke/otc/src/framework/util/crypt.cpp:337:21: error: invalid use of incomplete type ‘RSA {aka struct rsa_st}’
     BN_dec2bn(&m_rsa->d, d.c_str());
                     ^
In file included from /poke/otc/src/framework/util/crypt.cpp:23:0:
/poke/otc/src/framework/util/crypt.h:31:16: note: forward declaration of ‘RSA {aka struct rsa_st}’
typedef struct rsa_st RSA;
                ^
/poke/otc/src/framework/util/crypt.cpp:340:13: error: invalid use of incomplete type ‘RSA {aka struct rsa_st}’
     if(m_rsa->_method_mod_p) { BN_MONT_CTX_free(m_rsa->_method_mod_p); m_rsa->_method_mod_p = NULL; }
             ^
In file included from /poke/otc/src/framework/util/crypt.cpp:23:0:
/poke/otc/src/framework/util/crypt.h:31:16: note: forward declaration of ‘RSA {aka struct rsa_st}’
typedef struct rsa_st RSA;
                ^
/poke/otc/src/framework/util/crypt.cpp:340:54: error: invalid use of incomplete type ‘RSA {aka struct rsa_st}’
     if(m_rsa->_method_mod_p) { BN_MONT_CTX_free(m_rsa->_method_mod_p); m_rsa->_method_mod_p = NULL; }
                                                      ^
In file included from /poke/otc/src/framework/util/crypt.cpp:23:0:
/poke/otc/src/framework/util/crypt.h:31:16: note: forward declaration of ‘RSA {aka struct rsa_st}’
typedef struct rsa_st RSA;
                ^
/poke/otc/src/framework/util/crypt.cpp:340:77: error: invalid use of incomplete type ‘RSA {aka struct rsa_st}’
     if(m_rsa->_method_mod_p) { BN_MONT_CTX_free(m_rsa->_method_mod_p); m_rsa->_method_mod_p = NULL; }
                                                                             ^
In file included from /poke/otc/src/framework/util/crypt.cpp:23:0:
/poke/otc/src/framework/util/crypt.h:31:16: note: forward declaration of ‘RSA {aka struct rsa_st}’
typedef struct rsa_st RSA;
                ^
/poke/otc/src/framework/util/crypt.cpp:341:13: error: invalid use of incomplete type ‘RSA {aka struct rsa_st}’
     if(m_rsa->_method_mod_q) { BN_MONT_CTX_free(m_rsa->_method_mod_q); m_rsa->_method_mod_q = NULL; }
             ^
In file included from /poke/otc/src/framework/util/crypt.cpp:23:0:
/poke/otc/src/framework/util/crypt.h:31:16: note: forward declaration of ‘RSA {aka struct rsa_st}’
typedef struct rsa_st RSA;
                ^
/poke/otc/src/framework/util/crypt.cpp:341:54: error: invalid use of incomplete type ‘RSA {aka struct rsa_st}’
     if(m_rsa->_method_mod_q) { BN_MONT_CTX_free(m_rsa->_method_mod_q); m_rsa->_method_mod_q = NULL; }
                                                      ^
In file included from /poke/otc/src/framework/util/crypt.cpp:23:0:
/poke/otc/src/framework/util/crypt.h:31:16: note: forward declaration of ‘RSA {aka struct rsa_st}’
typedef struct rsa_st RSA;
                ^
/poke/otc/src/framework/util/crypt.cpp:341:77: error: invalid use of incomplete type ‘RSA {aka struct rsa_st}’
     if(m_rsa->_method_mod_q) { BN_MONT_CTX_free(m_rsa->_method_mod_q); m_rsa->_method_mod_q = NULL; }
                                                                             ^
In file included from /poke/otc/src/framework/util/crypt.cpp:23:0:
/poke/otc/src/framework/util/crypt.h:31:16: note: forward declaration of ‘RSA {aka struct rsa_st}’
typedef struct rsa_st RSA;
                ^
In file included from /usr/include/openssl/asn1.h:24:0,
                 from /usr/include/openssl/rsa.h:16,
                 from /poke/otc/src/framework/util/crypt.cpp:35:
/poke/otc/src/framework/util/crypt.cpp: In member function ‘bool Crypt::rsaCheckKey()’:
/poke/otc/src/framework/util/crypt.cpp:352:21: error: invalid use of incomplete type ‘RSA {aka struct rsa_st}’
         BN_mod(m_rsa->dmp1, m_rsa->d, r1, ctx);
                     ^
In file included from /poke/otc/src/framework/util/crypt.cpp:23:0:
/poke/otc/src/framework/util/crypt.h:31:16: note: forward declaration of ‘RSA {aka struct rsa_st}’
typedef struct rsa_st RSA;
                ^
In file included from /usr/include/openssl/asn1.h:24:0,
                 from /usr/include/openssl/rsa.h:16,
                 from /poke/otc/src/framework/util/crypt.cpp:35:
/poke/otc/src/framework/util/crypt.cpp:352:34: error: invalid use of incomplete type ‘RSA {aka struct rsa_st}’
         BN_mod(m_rsa->dmp1, m_rsa->d, r1, ctx);
                                  ^
In file included from /poke/otc/src/framework/util/crypt.cpp:23:0:
/poke/otc/src/framework/util/crypt.h:31:16: note: forward declaration of ‘RSA {aka struct rsa_st}’
typedef struct rsa_st RSA;
                ^
In file included from /usr/include/openssl/asn1.h:24:0,
                 from /usr/include/openssl/rsa.h:16,
                 from /poke/otc/src/framework/util/crypt.cpp:35:
/poke/otc/src/framework/util/crypt.cpp:353:21: error: invalid use of incomplete type ‘RSA {aka struct rsa_st}’
         BN_mod(m_rsa->dmq1, m_rsa->d, r2, ctx);
                     ^
In file included from /poke/otc/src/framework/util/crypt.cpp:23:0:
/poke/otc/src/framework/util/crypt.h:31:16: note: forward declaration of ‘RSA {aka struct rsa_st}’
typedef struct rsa_st RSA;
                ^
In file included from /usr/include/openssl/asn1.h:24:0,
                 from /usr/include/openssl/rsa.h:16,
                 from /poke/otc/src/framework/util/crypt.cpp:35:
/poke/otc/src/framework/util/crypt.cpp:353:34: error: invalid use of incomplete type ‘RSA {aka struct rsa_st}’
         BN_mod(m_rsa->dmq1, m_rsa->d, r2, ctx);
                                  ^
In file included from /poke/otc/src/framework/util/crypt.cpp:23:0:
/poke/otc/src/framework/util/crypt.h:31:16: note: forward declaration of ‘RSA {aka struct rsa_st}’
typedef struct rsa_st RSA;
                ^
/poke/otc/src/framework/util/crypt.cpp:355:29: error: invalid use of incomplete type ‘RSA {aka struct rsa_st}’
         BN_mod_inverse(m_rsa->iqmp, m_rsa->q, m_rsa->p, ctx);
                             ^
In file included from /poke/otc/src/framework/util/crypt.cpp:23:0:
/poke/otc/src/framework/util/crypt.h:31:16: note: forward declaration of ‘RSA {aka struct rsa_st}’
typedef struct rsa_st RSA;
                ^
/poke/otc/src/framework/util/crypt.cpp:355:42: error: invalid use of incomplete type ‘RSA {aka struct rsa_st}’
         BN_mod_inverse(m_rsa->iqmp, m_rsa->q, m_rsa->p, ctx);
                                          ^
In file included from /poke/otc/src/framework/util/crypt.cpp:23:0:
/poke/otc/src/framework/util/crypt.h:31:16: note: forward declaration of ‘RSA {aka struct rsa_st}’
typedef struct rsa_st RSA;
                ^
/poke/otc/src/framework/util/crypt.cpp:355:52: error: invalid use of incomplete type ‘RSA {aka struct rsa_st}’
         BN_mod_inverse(m_rsa->iqmp, m_rsa->q, m_rsa->p, ctx);
                                                    ^
In file included from /poke/otc/src/framework/util/crypt.cpp:23:0:
/poke/otc/src/framework/util/crypt.h:31:16: note: forward declaration of ‘RSA {aka struct rsa_st}’
typedef struct rsa_st RSA;
                ^
CMakeFiles/otclient.dir/build.make:110: recipe for target 'CMakeFiles/otclient.dir/src/framework/util/crypt.cpp.o' failed
make[2]: *** [CMakeFiles/otclient.dir/src/framework/util/crypt.cpp.o] Error 1
CMakeFiles/Makefile2:67: recipe for target 'CMakeFiles/otclient.dir/all' failed
make[1]: *** [CMakeFiles/otclient.dir/all] Error 2
Makefile:127: recipe for target 'all' failed
make: *** [all] Error 2
[email protected]:/poke/otc/build$
Someone can help me?
Thanks in advance :)
 

slawkens

Developer
Premium User
Joined
Aug 27, 2007
Messages
2,847
Reaction score
363
Location
Germany
I know this topic is a bit outdated, but I run into the same issue. I will still happen for people running Ubuntu 16.04 or any other distro with OpenSSL higher than 1.1. So I'm posting the solution.

The solution is to downgrade to OpenSSL version 1.0.

It can be achieved by following this steps:

1. create a new temporary folder:
Code:
mkdir openssl-downgrade && cd openssl-downgrade
1. Download all .deb files from this link to the openssl-downgrade folder:
amd64 build of openssl 1.0.2g-1ubuntu13.6 : PPA for Ubuntu Security Proposed : “Ubuntu Security Proposed” team

Run this command in the openssl-downgrade directory. It will install all .deb files from this folder:
Code:
sudo dpkg -i *.deb
This will install/downgrade your OpenSSL version to 1.0.2g, that works with OTClient, as well with TFS 0.3/0.4.

It's only for amd64, can't find any links to other architectures for this build now.
 
Top