Я пытаюсь выяснить, могу ли я создать статическую библиотеку, которая скрывает все ее внутренние объекты и функции, и т.д., за исключением интерфейсов, которые я хочу экспортировать. Я экспериментирую с XCode (gcc 4.2).
Я использовал __attribute__((visibility("hidden")))
атрибут на некоторых классах C++ на эту документацию. Я также определил мало функций помощника C, как являющихся локальными для файла (помехами) и т.д.
Однако, когда я работаю strings
на получающемся.a файле библиотеки, даже когда скомпилировано в конфигурации Выпуска, я все еще вижу названия своих якобы скрытых классов с их именами методов и даже названиями локальных для файла функций, усыпанных вокруг там также.
Я добавил -fvisibility=hidden
и даже -fno-rtti
к флагам gcc. В то время как это уменьшает некоторые строки, имена классов, имена методов, и статические имена функций - все все еще там в плоскости или mangled-readable.
Существует ли надежный способ заставить компилятор создавать этот материал, не имея названий строк всего внутреннего материала, испускаемого в двоичный файл? Не должно быть необходимо иметь для любых внешних клиентов, связывающихся в.
(Для разъяснения: я спрашиваю о путанице внутреннего именования, по сравнению с литеральными потребностями привязки экспорта. Я дезориентирован, что все внутренние работы видимы через strings
команда, независимо от того, экспортируются ли эти символы официально или нет.)
Спасибо.