Surround the libraries with --start-group and --end-group to work around . diff --git a/src/trans/codegen_c.cpp b/src/trans/codegen_c.cpp --- a/src/trans/codegen_c.cpp +++ b/src/trans/codegen_c.cpp @@ -960,6 +960,7 @@ namespace { { args.push_back("-L"); args.push_back(path); } + args.push_back("-Wl,--start-group"); for(const auto& lib : m_crate.m_ext_libs) { ASSERT_BUG(Span(), lib.name != "", ""); args.push_back("-l"); args.push_back(lib.name.c_str()); @@ -975,6 +976,7 @@ namespace { { args.push_back("-l"); args.push_back(path.c_str()); } + args.push_back("-Wl,--end-group"); for( const auto& a : Target_GetCurSpec().m_backend_c.m_linker_opts ) { args.push_back( a.c_str() );