extern int test();
int main()
{
return test();
}
Я создаю код gcc -c -o test.o test.c
, и я нахожу, что при запуске nm test.o
я не могу найти имя. nm
выходы test
но не _test
.Почему имя mangling не происходит?
Моя среда ubuntu 16.04
gcc 5.4.0
Хотя это не действительно _name mangling_, добавление подчеркивания к именам функций - это то, что зависит от используемой цепочки инструментов. При разработке микроконтроллеров C16x я использовал инструменты Keil и Tasking. Один добавил _, а другой - нет. Даже для той же архитектуры процессора. Поэтому вам нужно прочитать документацию по цепочке инструментов или описание EABI вашего CPU, как соглашения о вызовах для функций C. – Gerhardh