Прочитал доку про --as-needed и для меня не совсем очевидно описанное ТС поведение (откидывание libm).
Я понял, что линкер должен выкинуть лишь те либы на которые нет ссылок.
Поясните пожалуйста, если не трудно, что я не так понимаю.
Понял кажется!
Если либа включена до объектиников, то на момент её линковки на неё просто ещё нет ссылок.
Линкер видимо по умолчанию однопроходный.
Кстати, для решения сложных циклических завязок либа от либы есть ключики --start-group --end-group
Код
-Wl,--start-group -lmy_lib -lyour_lib -lhis_lib -Wl,--end-group