Я знаю, что в прошлом была опция -fprefix-function-name
, которая добавляла бы префикс ко всем сгенерированным символам, похоже, она больше не является частью gcc. Есть ли другой способ сделать это?
Как я могу заставить gcc добавлять префикс ко всем именам символов
Ответы (2)
Я считаю, что этот ответ даст вам решение.
Короче говоря, вы можете «префиксировать» символы в существующей библиотеке, используя objcopy
следующим образом:
objcopy --prefix-symbols=foo_ foo.o
* РЕДАКТИРОВАТЬ: решение Джорджа Скопцова лучше моего :) Однако трюк nm
может пригодиться.
Это не совсем то, что вы ищете, но мне приходилось делать что-то подобное в прошлом (переименовывать символы, экспортируемые библиотекой).
Если вы знаете имена символов, которые хотите переопределить, вы можете попробовать использовать objcopy --redefine-syms old=new
. См. справочные страницы objcopy для получения более подробной информации о вводе (objcopy может перезаписать ваш файл, поэтому будьте осторожны с этим)
Если вы не знаете названия символов, вы можете попробовать использовать nm
, чтобы получить список символов. Опять же, поскольку я не уверен, какие символы вы ищете, справочные страницы, вероятно, будут вашим лучшим выбором.
objcopy
на самом деле не создает копию.
- person Puppy; 15.04.2012