• There is NO official Otland's Discord server and NO official Otland's server list. The Otland's Staff does not manage any Discord server or server list. Moderators or administrator of any Discord server or server lists have NO connection to the Otland's Staff. Do not get scammed!

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:
vaizardx@pc:/poke/otc/build$ sudo chmod 777 -R /poke/
vaizardx@pc:/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
vaizardx@pc:/poke/otc/build$

Someone can help me?
Thanks in advance :)
 
Last edited:
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.
 
Back
Top