Reputation: 3004
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.
Upvotes: 9
Views: 8231
Reputation: 213446
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
Upvotes: 8
Reputation: 87386
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).
Upvotes: 7