Символ, скрывающийся в статических библиотеках, создается с XCode

Я пытаюсь выяснить, могу ли я создать статическую библиотеку, которая скрывает все ее внутренние объекты и функции, и т.д., за исключением интерфейсов, которые я хочу экспортировать. Я экспериментирую с XCode (gcc 4.2).

Я использовал __attribute__((visibility("hidden"))) атрибут на некоторых классах C++ на эту документацию. Я также определил мало функций помощника C, как являющихся локальными для файла (помехами) и т.д.

Однако, когда я работаю strings на получающемся.a файле библиотеки, даже когда скомпилировано в конфигурации Выпуска, я все еще вижу названия своих якобы скрытых классов с их именами методов и даже названиями локальных для файла функций, усыпанных вокруг там также.

Я добавил -fvisibility=hidden и даже -fno-rtti к флагам gcc. В то время как это уменьшает некоторые строки, имена классов, имена методов, и статические имена функций - все все еще там в плоскости или mangled-readable.

Существует ли надежный способ заставить компилятор создавать этот материал, не имея названий строк всего внутреннего материала, испускаемого в двоичный файл? Не должно быть необходимо иметь для любых внешних клиентов, связывающихся в.

(Для разъяснения: я спрашиваю о путанице внутреннего именования, по сравнению с литеральными потребностями привязки экспорта. Я дезориентирован, что все внутренние работы видимы через strings команда, независимо от того, экспортируются ли эти символы официально или нет.)

Спасибо.

46
задан jww 27 August 2018 в 13:26
поделиться