У меня огромный проект, написанный на C ++.Все это разбито на несколько статических библиотек, которые в конечном итоге объединяются в одну итоговую разделяемую библиотеку, которая должна экспортировать только несколько простых функций.
Если я выполняю objdump этого финального файла, поэтому я вижу все свои внутренние имена и т.д.он использует длинные имена классов и пространства имен, эти строки становятся чрезмерно длинными, и в результате конечный двоичный файл становится большим.
Итак, мой вопрос: как мне сделать это правильно с GCC, чтобы убедиться, что все эти внутренние функции непоказать в окончательном бинарном файле?
Мне известны все эти специфичные для GCC модификаторы видимости, я использую -fvisibility = hidden -fvisibility-inlines-hidden, я использую -Wl, - no-whole-архив.Я отключаю исключения c ++ и rtti (-fno-exceptions -fno-rtti), но я все еще не могу заставить GCC сгенерировать мой окончательный .so, который не содержит имен моих пространств имен и классов, которых не должно быть ввсе!
Я пытался использовать -Wl, - version-script = для управления тем, какие функции должны быть видны, но все же я вижу множество внутренних имен в окончательно очищенном разделяемом объекте.Я читаю несколько похожих записей на SO, но не вижу ничего, что делает эту работу.Примечание: я компилирую для нескольких платформ (Linux, Windows, iPhone и т. Д.), И только на Windows в VS у меня нет проблем.
спасибо