Poco Issues running on Ubuntu

Hey all.

I’m porting a mac app to ubuntu 18.04, but I have some issues. OF compiles with gcc version 7.3.0, but my project needs ofxSimpleHttp and here we run into problems. I’m running OF10 for gcc6+, but I run into errors with poco namely Poco::Net::Context(): error: undefined reference to ‘SSLv23_client_method’.

/home/digital-bydel/openFrameworks/of_v0.10.0_linux64gcc6_release/addons/ofxPoco/libs/poco/lib/linux64/libPocoNetSSL.a(Context.o):Context.cpp:function Poco::Net::Context::createSSLContext(): error: undefined reference to 'SSLv23_client_method'
/home/digital-bydel/openFrameworks/of_v0.10.0_linux64gcc6_release/addons/ofxPoco/libs/poco/lib/linux64/libPocoNetSSL.a(Context.o):Context.cpp:function Poco::Net::Context::createSSLContext(): error: undefined reference to 'SSLv23_server_method'
/home/digital-bydel/openFrameworks/of_v0.10.0_linux64gcc6_release/addons/ofxPoco/libs/poco/lib/linux64/libPocoCrypto.a(X509Certificate.o):X509Certificate.cpp:function Poco::Crypto::X509Certificate::extractNames(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, std::set<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&) const: error: undefined reference to 'sk_num'
/home/digital-bydel/openFrameworks/of_v0.10.0_linux64gcc6_release/addons/ofxPoco/libs/poco/lib/linux64/libPocoCrypto.a(X509Certificate.o):X509Certificate.cpp:function Poco::Crypto::X509Certificate::extractNames(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, std::set<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&) const: error: undefined reference to 'sk_value'
/home/digital-bydel/openFrameworks/of_v0.10.0_linux64gcc6_release/addons/ofxPoco/libs/poco/lib/linux64/libPocoCrypto.a(OpenSSLInitializer.o):OpenSSLInitializer.cpp:function Poco::Crypto::OpenSSLInitializer::uninitialize(): error: undefined reference to 'EVP_cleanup'
/home/digital-bydel/openFrameworks/of_v0.10.0_linux64gcc6_release/addons/ofxPoco/libs/poco/lib/linux64/libPocoCrypto.a(OpenSSLInitializer.o):OpenSSLInitializer.cpp:function Poco::Crypto::OpenSSLInitializer::uninitialize(): error: undefined reference to 'ERR_free_strings'
/home/digital-bydel/openFrameworks/of_v0.10.0_linux64gcc6_release/addons/ofxPoco/libs/poco/lib/linux64/libPocoCrypto.a(OpenSSLInitializer.o):OpenSSLInitializer.cpp:function Poco::Crypto::OpenSSLInitializer::uninitialize(): error: undefined reference to 'CRYPTO_set_locking_callback'
/home/digital-bydel/openFrameworks/of_v0.10.0_linux64gcc6_release/addons/ofxPoco/libs/poco/lib/linux64/libPocoCrypto.a(OpenSSLInitializer.o):OpenSSLInitializer.cpp:function Poco::Crypto::OpenSSLInitializer::uninitialize(): error: undefined reference to 'CRYPTO_set_id_callback'
/home/digital-bydel/openFrameworks/of_v0.10.0_linux64gcc6_release/addons/ofxPoco/libs/poco/lib/linux64/libPocoCrypto.a(OpenSSLInitializer.o):OpenSSLInitializer.cpp:function Poco::Crypto::OpenSSLInitializer::initialize(): error: undefined reference to 'SSL_library_init'
/home/digital-bydel/openFrameworks/of_v0.10.0_linux64gcc6_release/addons/ofxPoco/libs/poco/lib/linux64/libPocoCrypto.a(OpenSSLInitializer.o):OpenSSLInitializer.cpp:function Poco::Crypto::OpenSSLInitializer::initialize(): error: undefined reference to 'SSL_load_error_strings'
/home/digital-bydel/openFrameworks/of_v0.10.0_linux64gcc6_release/addons/ofxPoco/libs/poco/lib/linux64/libPocoCrypto.a(OpenSSLInitializer.o):OpenSSLInitializer.cpp:function Poco::Crypto::OpenSSLInitializer::initialize(): error: undefined reference to 'OPENSSL_add_all_algorithms_noconf'
/home/digital-bydel/openFrameworks/of_v0.10.0_linux64gcc6_release/addons/ofxPoco/libs/poco/lib/linux64/libPocoCrypto.a(OpenSSLInitializer.o):OpenSSLInitializer.cpp:function Poco::Crypto::OpenSSLInitializer::initialize(): error: undefined reference to 'CRYPTO_num_locks'
/home/digital-bydel/openFrameworks/of_v0.10.0_linux64gcc6_release/addons/ofxPoco/libs/poco/lib/linux64/libPocoCrypto.a(OpenSSLInitializer.o):OpenSSLInitializer.cpp:function Poco::Crypto::OpenSSLInitializer::initialize(): error: undefined reference to 'CRYPTO_set_locking_callback'
/home/digital-bydel/openFrameworks/of_v0.10.0_linux64gcc6_release/addons/ofxPoco/libs/poco/lib/linux64/libPocoCrypto.a(OpenSSLInitializer.o):OpenSSLInitializer.cpp:function Poco::Crypto::OpenSSLInitializer::initialize(): error: undefined reference to 'CRYPTO_set_id_callback'
/home/digital-bydel/openFrameworks/of_v0.10.0_linux64gcc6_release/addons/ofxPoco/libs/poco/lib/linux64/libPocoCrypto.a(OpenSSLInitializer.o):OpenSSLInitializer.cpp:function Poco::Crypto::OpenSSLInitializer::initialize(): error: undefined reference to 'CRYPTO_set_dynlock_create_callback'
/home/digital-bydel/openFrameworks/of_v0.10.0_linux64gcc6_release/addons/ofxPoco/libs/poco/lib/linux64/libPocoCrypto.a(OpenSSLInitializer.o):OpenSSLInitializer.cpp:function Poco::Crypto::OpenSSLInitializer::initialize(): error: undefined reference to 'CRYPTO_set_dynlock_lock_callback'
/home/digital-bydel/openFrameworks/of_v0.10.0_linux64gcc6_release/addons/ofxPoco/libs/poco/lib/linux64/libPocoCrypto.a(OpenSSLInitializer.o):OpenSSLInitializer.cpp:function Poco::Crypto::OpenSSLInitializer::initialize(): error: undefined reference to 'CRYPTO_set_dynlock_destroy_callback'
/home/digital-bydel/openFrameworks/of_v0.10.0_linux64gcc6_release/addons/ofxPoco/libs/poco/lib/linux64/libPocoCrypto.a(OpenSSLInitializer.o):OpenSSLInitializer.cpp:function Poco::Crypto::OpenSSLInitializer::uninitialize(): error: undefined reference to 'CONF_modules_free'

Does anyone know how to fix this?

What combination of gcc version and openframeworks version, should I go for in Ubuntu 18.04?

Thanks!

This error seems to be related to the fact that ubuntu 18 comes with openssl 1.1, while previous ubuntu versions included 1.0.2 and they are quite different.

As openframeworks uses in linux the system openssl library, i think that will be needed to recompile POCO with support to 1.1.

I am having a similar incompatibility in windows, as openssl comes compiled with of and was upgraded to 1.1, and other library that I use is incompatible at the moment.

I imagine that @arturo recompile POCO with that support in windows, maybe the apothecary recipe may give you some clues on how to recompile for Linux.

we probably need to install openssl 1.1 in the ci servers while compiling poco, can you open an issue on github?

Hey @arturo . Posted an issue here: https://github.com/openframeworks/openFrameworks/issues/6041 ! I ended up going back to openframeworks 0.9.8 for now and setting up following this guide: https://gist.github.com/baydam/ef2e37ea158eb49ad94bc5e5cec0520a