На прошлой неделе я выпустил версию приложения для Linux и Windows.
И после релиза мы поняли, что символы не были удалены, и мой менеджер думает (и я не согласен), что он может позволить пользователю понять наш алгоритм.
В любом случае, теперь мне придется очищать символы и повторно выпускать приложение.
Мой вопрос,
С Visual С++ (и другими компиляторами Microsoft) в Windows символы не являются частью двоичных файлов. Вместо этого они хранятся в отдельных файлах под названием "База данных программы" (файлы .pdb). Просто не предоставляйте файлы .pdb.
С помощью инструментальной цепочки GNU вы должны использовать strip
для удаления символов из двоичных файлов.
Для инструментальной цепочки GNU существует крутая ловкость руки:
objcopy --only-keep-debug yourprogram ../somepath/yourprogram.dbg
strip yourprogram
objcopy --add-gnu-debuglink=../somepath/yourprogram.dbg
Теперь вы можете застегнуть папку, в которой находится ваша программа (или упаковать ее в установщик или что-то еще), в нем больше не будет символов отладки.
НО:. Если вы запустите отладчик или запустите инструмент, например addr2line
или obdump
, инструмент (благодаря информации debuglink) автоматически узнает, где найти символы и загрузить их.
Это потрясающе, потому что это означает, что у вас есть преимущества наличия символов на вашем конце, не распространяя их на пользователя.