Дополнительные параметры:
-Os -flto -fno-fat-lto-objects -fuse-ld=gold -fuse-linker-plugin \
-Wl,--icf=all -Wl,--icf-iterations=4 -Wl,--gc-sections -Wl,--as-needed \
-Wl,--strip-all -Wl,-O3 -Wl,--orphan-handling=discard -Wl,--no-eh-frame-hdr \
-Wl,--no-ld-generated-unwind-info -fno-unwind-tables
исправлена ошибка
(--icf
относится к «золоту»)
Я просто изучаю, как сам, но если это не поможет, вы можете начать модифицировать скрипт компоновщика ... вы можете добавить "неявный" скрипт компоновщика к постоянным настройкам по умолчанию, передав его в строке ссылки ( ld пытается прочитать все, что не похоже на объектный код, как скрипт). Мое лучшее предположение - вы захотите назначить проблемную библиотеку отдельному разделу, а затем отбросить ее
>
Компоновщик будет игнорировать присвоение адресов (* примечание Раздел вывода
Адрес: :) на удаленных разделах вывода, кроме случаев, когда скрипт компоновщика
определяет символы в разделе вывода. В этом случае компоновщик будет
подчиняться адресным присвоениям, возможно, продвигая точку, даже если
раздел отбрасывается.
Специальное имя секции вывода '/ DISCARD /' может использоваться для удаления
входные разделы. Любые входные разделы, которые назначены на выход
раздел с именем '/ DISCARD /' не включен в выходной файл.
Я чувствую, что это действительно не должно быть, но есть также --no-demangle
...
edit: если вы пытаетесь скомпилировать с -nostdlib
, вам может понадобиться комбинация -lgcc_s -lsupc++ -lm
, -B `your/compiler/dir`
и т. Д.