Переименование символов во время компиляции без изменения кода кроссплатформенным способом - PullRequest
6 голосов
/ 26 августа 2011

При создании статического объекта возможно ли переименование символов во время компиляции (без изменения кода) кросс-платформенным способом?Недавно я рекомендовал objcopy, но linux - не единственная целевая платформа, она также должна работать на Mac.Я компилирую с использованием gcc, поэтому я надеялся, что был какой-то вариант gcc.

Я слышал о файлах .def, но это могло вводить в заблуждение, поскольку информация о них, которую я нашел, кажетсябыть для окон.

Редактировать: я пытаюсь изменить имя функций C и Fortran, в частности, предварительно ожидая их со словом "wrap", чтобы избежать конфликтов символов во время ссылки.

Ответы [ 2 ]

6 голосов
/ 27 августа 2011

возможно ли переименовать символы во время компиляции

Вы можете достичь этого с препроцессором:

gcc -c foo.c -Dfoo=foo_renamed
5 голосов
/ 27 августа 2011

Вы можете использовать атрибут gcc alias , чтобы создать несколько символов, указывающих на одну и ту же функцию.

void name1() __attribute__((alias ("name2")));

Я не уверен, работает ли атрибут alias для других типовсимволы (например, переменные).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...