multipass icon indicating copy to clipboard operation
multipass copied to clipboard

Linker error on ubuntu 24.04, it does not occur on ubuntu 23.10

Open georgeliao opened this issue 7 months ago • 0 comments

Describe the bug Any executables of multipass project fail to link at the linkage phase. It is due to the system library libQt6Network.so.6.4.2 links to libcurl-gnutls.so.4 and the latter one links to libssh.so.4. In Multipass cmake environments, many targets link to Qt6::Network target which is libQt6Network.so.6.4.2 under the hood.

[ 77%] Linking CXX executable ../bin/multipass_tests /usr/bin/ld: /lib/x86_64-linux-gnu/libcurl-gnutls.so.4: undefined reference to ssh_scp_free@LIBSSH_4_5_0' /usr/bin/ld: /lib/x86_64-linux-gnu/libcurl-gnutls.so.4: undefined reference to ssh_init@LIBSSH_4_5_0' /usr/bin/ld: /lib/x86_64-linux-gnu/libcurl-gnutls.so.4: undefined reference to ssh_scp_read@LIBSSH_4_5_0' /usr/bin/ld: /lib/x86_64-linux-gnu/libcurl-gnutls.so.4: undefined reference to ssh_connect@LIBSSH_4_5_0' /usr/bin/ld: /lib/x86_64-linux-gnu/libcurl-gnutls.so.4: undefined reference to ssh_userauth_kbdint@LIBSSH_4_5_0' /usr/bin/ld: /lib/x86_64-linux-gnu/libcurl-gnutls.so.4: undefined reference to sftp_opendir@LIBSSH_4_5_0' /usr/bin/ld: /lib/x86_64-linux-gnu/libcurl-gnutls.so.4: undefined reference to ssh_get_error@LIBSSH_4_5_0' /usr/bin/ld: /lib/x86_64-linux-gnu/libcurl-gnutls.so.4: undefined reference to sftp_mkdir@LIBSSH_4_5_0' /usr/bin/ld: /lib/x86_64-linux-gnu/libcurl-gnutls.so.4: undefined reference to sftp_seek64@LIBSSH_4_5_0' /usr/bin/ld: /lib/x86_64-linux-gnu/libcurl-gnutls.so.4: undefined reference to ssh_get_poll_flags@LIBSSH_4_5_0' /usr/bin/ld: /lib/x86_64-linux-gnu/libcurl-gnutls.so.4: undefined reference to ssh_string_free_char@LIBSSH_4_5_0' /usr/bin/ld: /lib/x86_64-linux-gnu/libcurl-gnutls.so.4: undefined reference to sftp_attributes_free@LIBSSH_4_5_0' /usr/bin/ld: /lib/x86_64-linux-gnu/libcurl-gnutls.so.4: undefined reference to ssh_pki_import_privkey_file@LIBSSH_4_5_0' /usr/bin/ld: /lib/x86_64-linux-gnu/libcurl-gnutls.so.4: undefined reference to ssh_version@LIBSSH_4_5_0' /usr/bin/ld: /lib/x86_64-linux-gnu/libcurl-gnutls.so.4: undefined reference to sftp_get_error@LIBSSH_4_5_0' /usr/bin/ld: /lib/x86_64-linux-gnu/libcurl-gnutls.so.4: undefined reference to ssh_free@LIBSSH_4_5_0' /usr/bin/ld: /lib/x86_64-linux-gnu/libcurl-gnutls.so.4: undefined reference to ssh_userauth_try_publickey@LIBSSH_4_5_0' /usr/bin/ld: /lib/x86_64-linux-gnu/libcurl-gnutls.so.4: undefined reference to ssh_get_server_publickey@LIBSSH_4_5_0' /usr/bin/ld: /lib/x86_64-linux-gnu/libcurl-gnutls.so.4: undefined reference to ssh_scp_new@LIBSSH_4_5_0' /usr/bin/ld: /lib/x86_64-linux-gnu/libcurl-gnutls.so.4: undefined reference to ssh_pki_export_pubkey_base64@LIBSSH_4_5_0' /usr/bin/ld: /lib/x86_64-linux-gnu/libcurl-gnutls.so.4: undefined reference to sftp_async_read_begin@LIBSSH_4_5_0' /usr/bin/ld: /lib/x86_64-linux-gnu/libcurl-gnutls.so.4: undefined reference to ssh_new@LIBSSH_4_5_0' /usr/bin/ld: /lib/x86_64-linux-gnu/libcurl-gnutls.so.4: undefined reference to ssh_pki_import_pubkey_file@LIBSSH_4_5_0' /usr/bin/ld: /lib/x86_64-linux-gnu/libcurl-gnutls.so.4: undefined reference to sftp_file_set_nonblocking@LIBSSH_4_5_0' /usr/bin/ld: /lib/x86_64-linux-gnu/libcurl-gnutls.so.4: undefined reference to sftp_new@LIBSSH_4_5_0' /usr/bin/ld: /lib/x86_64-linux-gnu/libcurl-gnutls.so.4: undefined reference to sftp_stat@LIBSSH_4_5_0' /usr/bin/ld: /lib/x86_64-linux-gnu/libcurl-gnutls.so.4: undefined reference to sftp_readlink@LIBSSH_4_5_0' /usr/bin/ld: /lib/x86_64-linux-gnu/libcurl-gnutls.so.4: undefined reference to ssh_finalize@LIBSSH_4_5_0' /usr/bin/ld: /lib/x86_64-linux-gnu/libcurl-gnutls.so.4: undefined reference to sftp_write@LIBSSH_4_5_0' /usr/bin/ld: /lib/x86_64-linux-gnu/libcurl-gnutls.so.4: undefined reference to sftp_symlink@LIBSSH_4_5_0' /usr/bin/ld: /lib/x86_64-linux-gnu/libcurl-gnutls.so.4: undefined reference to ssh_userauth_kbdint_setanswer@LIBSSH_4_5_0' /usr/bin/ld: /lib/x86_64-linux-gnu/libcurl-gnutls.so.4: undefined reference to sftp_readdir@LIBSSH_4_5_0' /usr/bin/ld: /lib/x86_64-linux-gnu/libcurl-gnutls.so.4: undefined reference to ssh_userauth_publickey_auto@LIBSSH_4_5_0' /usr/bin/ld: /lib/x86_64-linux-gnu/libcurl-gnutls.so.4: undefined reference to ssh_scp_init@LIBSSH_4_5_0' /usr/bin/ld: /lib/x86_64-linux-gnu/libcurl-gnutls.so.4: undefined reference to ssh_key_free@LIBSSH_4_5_0' /usr/bin/ld: /lib/x86_64-linux-gnu/libcurl-gnutls.so.4: undefined reference to sftp_closedir@LIBSSH_4_5_0' /usr/bin/ld: /lib/x86_64-linux-gnu/libcurl-gnutls.so.4: undefined reference to ssh_options_set@LIBSSH_4_5_0' /usr/bin/ld: /lib/x86_64-linux-gnu/libcurl-gnutls.so.4: undefined reference to sftp_free@LIBSSH_4_5_0' /usr/bin/ld: /lib/x86_64-linux-gnu/libcurl-gnutls.so.4: undefined reference to ssh_scp_pull_request@LIBSSH_4_5_0' /usr/bin/ld: /lib/x86_64-linux-gnu/libcurl-gnutls.so.4: undefined reference to sftp_setstat@LIBSSH_4_5_0' /usr/bin/ld: /lib/x86_64-linux-gnu/libcurl-gnutls.so.4: undefined reference to ssh_set_blocking@LIBSSH_4_5_0' /usr/bin/ld: /lib/x86_64-linux-gnu/libcurl-gnutls.so.4: undefined reference to sftp_unlink@LIBSSH_4_5_0' /usr/bin/ld: /lib/x86_64-linux-gnu/libcurl-gnutls.so.4: undefined reference to ssh_options_parse_config@LIBSSH_4_5_0' /usr/bin/ld: /lib/x86_64-linux-gnu/libcurl-gnutls.so.4: undefined reference to sftp_lstat@LIBSSH_4_5_0' /usr/bin/ld: /lib/x86_64-linux-gnu/libcurl-gnutls.so.4: undefined reference to sftp_init@LIBSSH_4_5_0' /usr/bin/ld: /lib/x86_64-linux-gnu/libcurl-gnutls.so.4: undefined reference to ssh_userauth_password@LIBSSH_4_5_0' /usr/bin/ld: /lib/x86_64-linux-gnu/libcurl-gnutls.so.4: undefined reference to ssh_scp_request_get_size@LIBSSH_4_5_0' /usr/bin/ld: /lib/x86_64-linux-gnu/libcurl-gnutls.so.4: undefined reference to sftp_open@LIBSSH_4_5_0' /usr/bin/ld: /lib/x86_64-linux-gnu/libcurl-gnutls.so.4: undefined reference to ssh_scp_write@LIBSSH_4_5_0' /usr/bin/ld: /lib/x86_64-linux-gnu/libcurl-gnutls.so.4: undefined reference to sftp_canonicalize_path@LIBSSH_4_5_0' /usr/bin/ld: /lib/x86_64-linux-gnu/libcurl-gnutls.so.4: undefined reference to ssh_key_type@LIBSSH_4_5_0' /usr/bin/ld: /lib/x86_64-linux-gnu/libcurl-gnutls.so.4: undefined reference to ssh_scp_push_file@LIBSSH_4_5_0' /usr/bin/ld: /lib/x86_64-linux-gnu/libcurl-gnutls.so.4: undefined reference to ssh_scp_close@LIBSSH_4_5_0' /usr/bin/ld: /lib/x86_64-linux-gnu/libcurl-gnutls.so.4: undefined reference to ssh_userauth_none@LIBSSH_4_5_0' /usr/bin/ld: /lib/x86_64-linux-gnu/libcurl-gnutls.so.4: undefined reference to ssh_userauth_kbdint_getnprompts@LIBSSH_4_5_0' /usr/bin/ld: /lib/x86_64-linux-gnu/libcurl-gnutls.so.4: undefined reference to ssh_disconnect@LIBSSH_4_5_0' /usr/bin/ld: /lib/x86_64-linux-gnu/libcurl-gnutls.so.4: undefined reference to ssh_userauth_publickey@LIBSSH_4_5_0' /usr/bin/ld: /lib/x86_64-linux-gnu/libcurl-gnutls.so.4: undefined reference to sftp_rename@LIBSSH_4_5_0' /usr/bin/ld: /lib/x86_64-linux-gnu/libcurl-gnutls.so.4: undefined reference to sftp_dir_eof@LIBSSH_4_5_0' /usr/bin/ld: /lib/x86_64-linux-gnu/libcurl-gnutls.so.4: undefined reference to sftp_statvfs@LIBSSH_4_5_0' /usr/bin/ld: /lib/x86_64-linux-gnu/libcurl-gnutls.so.4: undefined reference to sftp_close@LIBSSH_4_5_0' /usr/bin/ld: /lib/x86_64-linux-gnu/libcurl-gnutls.so.4: undefined reference to sftp_statvfs_free@LIBSSH_4_5_0' /usr/bin/ld: /lib/x86_64-linux-gnu/libcurl-gnutls.so.4: undefined reference to ssh_session_get_known_hosts_entry@LIBSSH_4_8_1' /usr/bin/ld: /lib/x86_64-linux-gnu/libcurl-gnutls.so.4: undefined reference to ssh_clean_pubkey_hash@LIBSSH_4_5_0' /usr/bin/ld: /lib/x86_64-linux-gnu/libcurl-gnutls.so.4: undefined reference to ssh_userauth_gssapi@LIBSSH_4_5_0' /usr/bin/ld: /lib/x86_64-linux-gnu/libcurl-gnutls.so.4: undefined reference to sftp_async_read@LIBSSH_4_5_0' /usr/bin/ld: /lib/x86_64-linux-gnu/libcurl-gnutls.so.4: undefined reference to ssh_knownhosts_entry_free@LIBSSH_4_5_0' /usr/bin/ld: /lib/x86_64-linux-gnu/libcurl-gnutls.so.4: undefined reference to sftp_rmdir@LIBSSH_4_5_0' /usr/bin/ld: /lib/x86_64-linux-gnu/libcurl-gnutls.so.4: undefined reference to sftp_fstat@LIBSSH_4_5_0' /usr/bin/ld: /lib/x86_64-linux-gnu/libcurl-gnutls.so.4: undefined reference to ssh_userauth_list@LIBSSH_4_5_0' /usr/bin/ld: /lib/x86_64-linux-gnu/libcurl-gnutls.so.4: undefined reference to ssh_session_update_known_hosts@LIBSSH_4_5_0' /usr/bin/ld: /lib/x86_64-linux-gnu/libcurl-gnutls.so.4: undefined reference to ssh_get_publickey_hash@LIBSSH_4_5_0' collect2: error: ld returned 1 exit status make[2]: *** [tests/CMakeFiles/multipass_tests.dir/build.make:2123: bin/multipass_tests] Error 1 make[1]: *** [CMakeFiles/Makefile2:3873: tests/CMakeFiles/multipass_tests.dir/all] Error 2 make: *** [Makefile:146: all] Error 2

Additional context It is related to https://github.com/canonical/multipass/issues/947

georgeliao avatar Jul 03 '24 13:07 georgeliao