I built OpenSS1.0.2g for SmartfoxClient API 1.6.3 (Cocos2dx v3 - Android - Window10 64bit). It throws error: Error SSL archive symbol table (run ranlib).
My config in Android.mk
LOCAL_CFLAGS += -I$(LOCAL_PATH)/boost
LOCAL_CFLAGS += -I$(LOCAL_PATH)/OpenSSL/include
LOCAL_CFLAGS += -I$(LOCAL_PATH)/../libs/smartfox
LOCAL_LDLIBS += -L$(LOCAL_PATH)/lib
LOCAL_LDLIBS += -L$(LOCAL_PATH)/OpenSSL/lib
LOCAL_LDLIBS += -lboost_system -lboost_thread -lboost_regex -lcrypto -lssl
LOCAL_CPPFLAGS += -fexceptions
LOCAL_CPPFLAGS += -frtti
LOCAL_CPPFLAGS += -w
Detail for error:
D:/Application/Cocos2d-x/android-ndk-r10e/toolchains/arm-linux-androideabi-4.9/prebuilt/windows-x86_64/bin/../lib/gcc/arm-linux-androideabi/4.9/../../../../arm-linux-androideabi/bin/ld.exe: error: crypto: no archive symbol table (run ranlib)
D:/Application/Cocos2d-x/android-ndk-r10e/toolchains/arm-linux-androideabi-4.9/prebuilt/windows-x86_64/bin/../lib/gcc/arm-linux-androideabi/4.9/../../../../arm-linux-androideabi/bin/ld.exe: error: ssl: no archive symbol table (run ranlib)
jni/../libs/smartfox/Core/DefaultPacketEncrypter.cpp:34: error: undefined reference to 'EVP_CIPHER_CTX_init'
jni/../libs/smartfox/Core/DefaultPacketEncrypter.cpp:47: error: undefined reference to 'EVP_aes_128_cbc'
jni/../libs/smartfox/Core/DefaultPacketEncrypter.cpp:47: error: undefined reference to 'EVP_CipherInit_ex'
jni/../libs/smartfox/Core/DefaultPacketEncrypter.cpp:52: error: undefined reference to 'EVP_CipherUpdate'
jni/../libs/smartfox/Core/DefaultPacketEncrypter.cpp:57: error: undefined reference to 'EVP_CipherFinal_ex'
jni/../libs/smartfox/Core/DefaultPacketEncrypter.cpp:64: error: undefined reference to 'EVP_CIPHER_CTX_cleanup'
jni/../libs/smartfox/Core/DefaultPacketEncrypter.cpp:75: error: undefined reference to 'EVP_CIPHER_CTX_init'
jni/../libs/smartfox/Core/DefaultPacketEncrypter.cpp:88: error: undefined reference to 'EVP_aes_128_cbc'
jni/../libs/smartfox/Core/DefaultPacketEncrypter.cpp:88: error: undefined reference to 'EVP_CipherInit_ex'
jni/../libs/smartfox/Core/DefaultPacketEncrypter.cpp:93: error: undefined reference to 'EVP_CipherUpdate'
jni/../libs/smartfox/Core/DefaultPacketEncrypter.cpp:98: error: undefined reference to 'EVP_CipherFinal_ex'
jni/../libs/smartfox/Core/DefaultPacketEncrypter.cpp:105: error: undefined reference to 'EVP_CIPHER_CTX_cleanup'
jni/boost/asio/ssl/detail/impl/openssl_init.ipp:39: error: undefined reference to 'SSL_library_init'
jni/boost/asio/ssl/detail/impl/openssl_init.ipp:40: error: undefined reference to 'SSL_load_error_strings'
jni/boost/asio/ssl/detail/impl/openssl_init.ipp:41: error: undefined reference to 'OPENSSL_add_all_algorithms_noconf'
jni/boost/asio/ssl/detail/impl/openssl_init.ipp:43: error: undefined reference to 'CRYPTO_num_locks'
jni/boost/asio/ssl/detail/impl/openssl_init.ipp:46: error: undefined reference to 'CRYPTO_set_locking_callback'
jni/boost/asio/ssl/detail/impl/openssl_init.ipp:47: error: undefined reference to 'CRYPTO_set_id_callback'
jni/boost/asio/ssl/detail/impl/openssl_init.ipp:64: error: undefined reference to 'CRYPTO_set_id_callback'
jni/boost/asio/ssl/detail/impl/openssl_init.ipp:65: error: undefined reference to 'CRYPTO_set_locking_callback'
jni/boost/asio/ssl/detail/impl/openssl_init.ipp:66: error: undefined reference to 'ERR_free_strings'
jni/boost/asio/ssl/detail/impl/openssl_init.ipp:68: error: undefined reference to 'ERR_remove_thread_state'
jni/boost/asio/ssl/detail/impl/openssl_init.ipp:72: error: undefined reference to 'EVP_cleanup'
jni/boost/asio/ssl/detail/impl/openssl_init.ipp:73: error: undefined reference to 'CRYPTO_cleanup_all_ex_data'
jni/boost/asio/ssl/detail/impl/openssl_init.ipp:74: error: undefined reference to 'CONF_modules_unload'
jni/boost/asio/ssl/detail/impl/openssl_init.ipp:76: error: undefined reference to 'ENGINE_cleanup'
jni/boost/asio/ssl/impl/error.ipp:40: error: undefined reference to 'ERR_reason_error_string'
jni/boost/asio/ssl/impl/context.ipp:70: error: undefined reference to 'ERR_clear_error'
jni/boost/asio/ssl/impl/context.ipp:93: error: undefined reference to 'SSLv3_method'
jni/boost/asio/ssl/impl/context.ipp:93: error: undefined reference to 'SSL_CTX_new'
jni/boost/asio/ssl/impl/context.ipp:96: error: undefined reference to 'SSLv3_client_method'
jni/boost/asio/ssl/impl/context.ipp:96: error: undefined reference to 'SSL_CTX_new'
jni/boost/asio/ssl/impl/context.ipp:99: error: undefined reference to 'SSLv3_server_method'
jni/boost/asio/ssl/impl/context.ipp:99: error: undefined reference to 'SSL_CTX_new'
jni/boost/asio/ssl/impl/context.ipp:102: error: undefined reference to 'TLSv1_method'
jni/boost/asio/ssl/impl/context.ipp:102: error: undefined reference to 'SSL_CTX_new'
jni/boost/asio/ssl/impl/context.ipp:105: error: undefined reference to 'TLSv1_client_method'
jni/boost/asio/ssl/impl/context.ipp:108: error: undefined reference to 'TLSv1_server_method'
jni/boost/asio/ssl/impl/context.ipp:111: error: undefined reference to 'SSLv23_method'
jni/boost/asio/ssl/impl/context.ipp:114: error: undefined reference to 'SSLv23_client_method'
jni/boost/asio/ssl/impl/context.ipp:117: error: undefined reference to 'SSLv23_server_method'
jni/boost/asio/ssl/impl/context.ipp:121: error: undefined reference to 'TLSv1_1_method'
jni/boost/asio/ssl/impl/context.ipp:124: error: undefined reference to 'TLSv1_1_client_method'
jni/boost/asio/ssl/impl/context.ipp:127: error: undefined reference to 'TLSv1_1_server_method'
jni/boost/asio/ssl/impl/context.ipp:139: error: undefined reference to 'TLSv1_2_method'
jni/boost/asio/ssl/impl/context.ipp:142: error: undefined reference to 'TLSv1_2_client_method'
jni/boost/asio/ssl/impl/context.ipp:145: error: undefined reference to 'TLSv1_2_server_method'
jni/boost/asio/ssl/impl/context.ipp:163: error: undefined reference to 'ERR_get_error'
jni/boost/asio/ssl/impl/context.ipp:208: error: undefined reference to 'SSL_CTX_get_ex_data'
jni/boost/asio/ssl/impl/context.ipp:212: error: undefined reference to 'SSL_CTX_get_ex_data'
jni/boost/asio/ssl/impl/context.ipp:214: error: undefined reference to 'SSL_CTX_set_ex_data'
jni/boost/asio/ssl/impl/context.ipp:217: error: undefined reference to 'SSL_CTX_free'
jni/boost/asio/ssl/impl/context.ipp:286: error: undefined reference to 'SSL_CTX_ctrl'
jni/boost/asio/ssl/impl/context.ipp:393: error: undefined reference to 'ERR_clear_error'
jni/boost/asio/ssl/impl/context.ipp:395: error: undefined reference to 'SSL_CTX_set_default_verify_paths'
jni/boost/asio/ssl/impl/context.ipp:398: error: undefined reference to 'ERR_get_error'
jni/boost/asio/ssl/detail/impl/engine.ipp:38: error: undefined reference to 'SSL_new'
jni/boost/asio/ssl/detail/impl/engine.ipp:43: error: undefined reference to 'ERR_get_error'
jni/boost/asio/ssl/detail/impl/engine.ipp:50: error: undefined reference to 'SSL_ctrl'
jni/boost/asio/ssl/detail/impl/engine.ipp:51: error: undefined reference to 'SSL_ctrl'
jni/boost/asio/ssl/detail/impl/engine.ipp:53: error: undefined reference to 'SSL_ctrl'
jni/boost/asio/ssl/detail/impl/engine.ipp:57: error: undefined reference to 'BIO_new_bio_pair'
jni/boost/asio/ssl/detail/impl/engine.ipp:58: error: undefined reference to 'SSL_set_bio'
jni/boost/asio/ssl/detail/impl/engine.ipp:63: error: undefined reference to 'SSL_get_ex_data'
jni/boost/asio/ssl/detail/impl/engine.ipp:65: error: undefined reference to 'SSL_get_ex_data'
jni/boost/asio/ssl/detail/impl/engine.ipp:66: error: undefined reference to 'SSL_set_ex_data'
jni/boost/asio/ssl/detail/impl/engine.ipp:69: error: undefined reference to 'BIO_free'
jni/boost/asio/ssl/detail/impl/engine.ipp:70: error: undefined reference to 'SSL_free'
jni/boost/asio/ssl/detail/impl/engine.ipp:81: error: undefined reference to 'SSL_get_verify_callback'
jni/boost/asio/ssl/detail/impl/engine.ipp:81: error: undefined reference to 'SSL_set_verify'
jni/boost/asio/ssl/detail/impl/engine.ipp:99: error: undefined reference to 'SSL_get_ex_data'
jni/boost/asio/ssl/detail/impl/engine.ipp:100: error: undefined reference to 'SSL_get_ex_data'
jni/boost/asio/ssl/detail/impl/engine.ipp:102: error: undefined reference to 'SSL_set_ex_data'
jni/boost/asio/ssl/detail/impl/engine.ipp:105: error: undefined reference to 'SSL_get_verify_mode'
jni/boost/asio/ssl/detail/impl/engine.ipp:105: error: undefined reference to 'SSL_set_verify'
jni/boost/asio/ssl/detail/impl/engine.ipp:117: error: undefined reference to 'SSL_get_ex_data_X509_STORE_CTX_idx'
jni/boost/asio/ssl/detail/impl/engine.ipp:117: error: undefined reference to 'X509_STORE_CTX_get_ex_data'
jni/boost/asio/ssl/detail/impl/engine.ipp:179: error: undefined reference to 'BIO_read'
jni/boost/asio/ssl/detail/impl/engine.ipp:190: error: undefined reference to 'BIO_write'
jni/boost/asio/ssl/detail/impl/engine.ipp:204: error: undefined reference to 'BIO_ctrl'
jni/boost/asio/ssl/detail/impl/engine.ipp:218: error: undefined reference to 'SSL_get_shutdown'
jni/boost/asio/ssl/detail/impl/engine.ipp:238: error: undefined reference to 'BIO_ctrl_pending'
jni/boost/asio/ssl/detail/impl/engine.ipp:239: error: undefined reference to 'ERR_clear_error'
jni/boost/asio/ssl/detail/impl/engine.ipp:241: error: undefined reference to 'SSL_get_error'
jni/boost/asio/ssl/detail/impl/engine.ipp:242: error: undefined reference to 'ERR_get_error'
jni/boost/asio/ssl/detail/impl/engine.ipp:243: error: undefined reference to 'BIO_ctrl_pending'
jni/boost/asio/ssl/detail/impl/engine.ipp:277: error: undefined reference to 'SSL_get_shutdown'
jni/boost/asio/ssl/detail/impl/engine.ipp:292: error: undefined reference to 'SSL_accept'
jni/boost/asio/ssl/detail/impl/engine.ipp:297: error: undefined reference to 'SSL_connect'
jni/boost/asio/ssl/detail/impl/engine.ipp:311: error: undefined reference to 'SSL_read'
jni/boost/asio/ssl/detail/impl/engine.ipp:317: error: undefined reference to 'SSL_write'
jni/../libs/smartfox/Core/Sockets/TCPClientSSL.cpp:152: error: undefined reference to 'X509_STORE_CTX_get_current_cert'
jni/../libs/smartfox/Core/Sockets/TCPClientSSL.cpp:153: error: undefined reference to 'X509_get_subject_name'
jni/../libs/smartfox/Core/Sockets/TCPClientSSL.cpp:153: error: undefined reference to 'X509_NAME_oneline'
Which idea for fix error? Tks
libcrypto
andlibssl
libraries. After cross-compiling OpenSSL and getting the archiveslibcrypto.a
andlibssl.a
, you need to runranlib
on them. Also see no archive symbol table (run ranlib) while building libcryptopp.a through ndk-build. – Frontality