Renaming symbols at compile time without changing

2019-06-20 03:55发布

In creating a static object is it possible to rename the symbols at compile time (without changing the code) in a cross platform way? I have recently had objcopy recommended, but linux is not the only target platform it must also work on a mac. I am compiling using gcc, so I was hoping that there was a gcc option of some sort.

I have heard about .def files, but this may have been misleading as the information about them that I have found seems to be for windows.

Edit: I'm trying to change the name of C and Fortran functions, specifically pre-pending them with the word "wrap" in order to avoid symbol conflicts at link time.

2条回答
我欲成王,谁敢阻挡
2楼-- · 2019-06-20 04:33

You can use the gcc alias attribute to make multiple symbols that point to the same function.

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

I'm not sure if the alias attribute works for other types of symbols (e.g. variables).

查看更多
forever°为你锁心
3楼-- · 2019-06-20 04:34

is it possible to rename the symbols at compile time

You might be able to achieve it with preprocessor:

gcc -c foo.c -Dfoo=foo_renamed
查看更多
登录 后发表回答