Correcting Sector build errors
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
Comments
Anonymous
June 14, 2014
Thanks, that saved me a lot of time and researches in the code ! Best E.Anonymous
January 15, 2015
Thanks ! Saved me prolly some 2 or 3 hours of headache-provoking searches & corrections !!