If you are building Sector on Ubuntu or Mint, you might encounter three kinds of errors: One about ::close() in tcpTransport.cpp at line 157, next about usleep, and the other about SSL.
SSL related errors look like below:
/sector/common/ssltransport.cpp:229: undefined reference to `SSL_new' /sector/common/ssltransport.cpp:230: undefined reference to `SSL_set_fd' /sector/common/ssltransport.cpp:232: undefined reference to `SSL_connect' /sector/common/ssltransport.cpp:234: undefined reference to `SSL_free' /sector/common/ssltransport.cpp:239: undefined reference to `SSL_get_verify_result'
The way to solve them is:
- For the ::close() error in the tcpTransport.cpp, prefix UDT as explicit namespace and it will be good. It should read, UDT::close(m_iSocket)
- For the usleep errors, these happen in multiple locations in the source, and you want to add #include <unistd.h> in respective files to resolve it (there will be many, so you have to keep issuing make and correct them one by one)
- For the SSL related errors, first ensure you have SSL development files installed (e.g., libssl-dev for Debian or openssl-devel for Fedora). You can check with ldd $(which openssl)
- The main problem that happens in Sector make files for SSL is, out of order library linkage. The ssl, crypto libraries should come after libclient.a and libsecurity.a on the g++ command line, but the make files have it incorrect. Need to correct this.
- You can correct the make files (one by one, once again) by opening the respective make file that is causing the error from the corresponding directory and adding -lssl -lcrypto to the end for LDFLAGS variable. It should look something like:
LDFLAGS += ../lib/libclient.a ../lib/libsecurity.a ../lib/librpc.a ../lib/libcommon.a ../lib/libudt.a -lssl -lcrypto