OpenSSL with C++ app - getting undefined references during compilation

41 views Asked by At

I am cross-compiling a C++ app for an aarch64 device. Everything worked fine until now, when I added code using openssl into the app. I have the 3.2.1 version of OpenSSL compiled for aarch64 (using aarch64-linux-gnu-gcc as the compiler), and it seems to be compiled correctly since I previously used it during compilation of both curl and a cpr library, which both use it (and the app uses them) and both seem to work just fine. However, when adding it to my app directly, it produces the following errors during compilation:

25.38 /usr/lib/gcc-cross/aarch64-linux-gnu/11/../../../../aarch64-linux-gnu/bin/ld: /opt/build/openssl/lib/libssl.so: undefined reference to `SRP_create_verifier_BN_ex@OPENSSL_3.0.0'
25.38 /usr/lib/gcc-cross/aarch64-linux-gnu/11/../../../../aarch64-linux-gnu/bin/ld: /opt/build/openssl/lib/libssl.so: undefined reference to `X509_STORE_CTX_init_rpk@OPENSSL_3.2.0'
25.38 /usr/lib/gcc-cross/aarch64-linux-gnu/11/../../../../aarch64-linux-gnu/bin/ld: /opt/build/openssl/lib/libssl.so: undefined reference to `BIO_recvmmsg@OPENSSL_3.2.0'
25.38 /usr/lib/gcc-cross/aarch64-linux-gnu/11/../../../../aarch64-linux-gnu/bin/ld: /opt/build/openssl/lib/libssl.so: undefined reference to `SRP_Calc_client_key_ex@OPENSSL_3.0.0'
25.38 /usr/lib/gcc-cross/aarch64-linux-gnu/11/../../../../aarch64-linux-gnu/bin/ld: /opt/build/openssl/lib/libssl.so: undefined reference to `OSSL_ERR_STATE_restore@OPENSSL_3.2.0'
25.38 /usr/lib/gcc-cross/aarch64-linux-gnu/11/../../../../aarch64-linux-gnu/bin/ld: /opt/build/openssl/lib/libssl.so: undefined reference to `SRP_Calc_u_ex@OPENSSL_3.0.0'
25.38 /usr/lib/gcc-cross/aarch64-linux-gnu/11/../../../../aarch64-linux-gnu/bin/ld: /opt/build/openssl/lib/libssl.so: undefined reference to `SRP_Calc_x_ex@OPENSSL_3.0.0'
25.38 /usr/lib/gcc-cross/aarch64-linux-gnu/11/../../../../aarch64-linux-gnu/bin/ld: /opt/build/openssl/lib/libssl.so: undefined reference to `BIO_sendmmsg@OPENSSL_3.2.0'
25.38 /usr/lib/gcc-cross/aarch64-linux-gnu/11/../../../../aarch64-linux-gnu/bin/ld: /opt/build/openssl/lib/libssl.so: undefined reference to `BIO_err_is_non_fatal@OPENSSL_3.2.0'
25.38 /usr/lib/gcc-cross/aarch64-linux-gnu/11/../../../../aarch64-linux-gnu/bin/ld: /opt/build/openssl/lib/libssl.so: undefined reference to `BIO_get_rpoll_descriptor@OPENSSL_3.2.0'
25.38 /usr/lib/gcc-cross/aarch64-linux-gnu/11/../../../../aarch64-linux-gnu/bin/ld: /opt/build/openssl/lib/libssl.so: undefined reference to `OSSL_ERR_STATE_free@OPENSSL_3.2.0'
25.38 /usr/lib/gcc-cross/aarch64-linux-gnu/11/../../../../aarch64-linux-gnu/bin/ld: /opt/build/openssl/lib/libssl.so: undefined reference to `SRP_Calc_server_key@OPENSSL_3.0.0'
25.38 /usr/lib/gcc-cross/aarch64-linux-gnu/11/../../../../aarch64-linux-gnu/bin/ld: /opt/build/openssl/lib/libssl.so: undefined reference to `OSSL_STACK_OF_X509_free@OPENSSL_3.2.0'
25.38 /usr/lib/gcc-cross/aarch64-linux-gnu/11/../../../../aarch64-linux-gnu/bin/ld: /opt/build/openssl/lib/libssl.so: undefined reference to `OSSL_ERR_STATE_save_to_mark@OPENSSL_3.2.0'
25.38 /usr/lib/gcc-cross/aarch64-linux-gnu/11/../../../../aarch64-linux-gnu/bin/ld: /opt/build/openssl/lib/libssl.so: undefined reference to `OSSL_ERR_STATE_save@OPENSSL_3.2.0'
25.38 /usr/lib/gcc-cross/aarch64-linux-gnu/11/../../../../aarch64-linux-gnu/bin/ld: /opt/build/openssl/lib/libssl.so: undefined reference to `SRP_Verify_B_mod_N@OPENSSL_3.0.0'
25.38 /usr/lib/gcc-cross/aarch64-linux-gnu/11/../../../../aarch64-linux-gnu/bin/ld: /opt/build/openssl/lib/libssl.so: undefined reference to `SRP_Calc_A@OPENSSL_3.0.0'
25.38 /usr/lib/gcc-cross/aarch64-linux-gnu/11/../../../../aarch64-linux-gnu/bin/ld: /opt/build/openssl/lib/libssl.so: undefined reference to `BIO_get_wpoll_descriptor@OPENSSL_3.2.0'
25.38 /usr/lib/gcc-cross/aarch64-linux-gnu/11/../../../../aarch64-linux-gnu/bin/ld: /opt/build/openssl/lib/libssl.so: undefined reference to `BIO_s_dgram_mem@OPENSSL_3.2.0'
25.38 /usr/lib/gcc-cross/aarch64-linux-gnu/11/../../../../aarch64-linux-gnu/bin/ld: /opt/build/openssl/lib/libssl.so: undefined reference to `SRP_get_default_gN@OPENSSL_3.0.0'
25.38 /usr/lib/gcc-cross/aarch64-linux-gnu/11/../../../../aarch64-linux-gnu/bin/ld: /opt/build/openssl/lib/libssl.so: undefined reference to `SRP_check_known_gN_param@OPENSSL_3.0.0'
25.38 /usr/lib/gcc-cross/aarch64-linux-gnu/11/../../../../aarch64-linux-gnu/bin/ld: /opt/build/openssl/lib/libssl.so: undefined reference to `SRP_Verify_A_mod_N@OPENSSL_3.0.0'
25.38 /usr/lib/gcc-cross/aarch64-linux-gnu/11/../../../../aarch64-linux-gnu/bin/ld: /opt/build/openssl/lib/libssl.so: undefined reference to `SRP_Calc_B_ex@OPENSSL_3.0.0'
25.38 /usr/lib/gcc-cross/aarch64-linux-gnu/11/../../../../aarch64-linux-gnu/bin/ld: /opt/build/openssl/lib/libssl.so: undefined reference to `OSSL_ERR_STATE_new@OPENSSL_3.2.0'
25.38 /usr/lib/gcc-cross/aarch64-linux-gnu/11/../../../../aarch64-linux-gnu/bin/ld: /opt/build/openssl/lib/libssl.so: undefined reference to `ERR_count_to_mark@OPENSSL_3.2.0'

I compile my app using aarch64-linux-gnu-gcc again, including the -lssl -lcrypto flags at the end of the command (though neither their position nor their order seems to matter, unlike what I read in answers to some other questions here) and the appropriate -I and -L flags.

I have tried looking up potential solutions and came up empty handed, and I also tried everything I could think of myself, similarly fruitlessly, so I would be very grateful if there is somebody who can point me in the right direction.

0

There are 0 answers