Библиотеки не всегда содержат символ _mcount, но приложения содержат его (вы можете проверить это с помощью gobjdump или утилиты nm). Я читал, что _mcount используется для реализации профилирования, но символ присутствует, даже если профилирование отключено и включена оптимизация (-O2). Это служит какой-то другой дополнительной цели?
Обновление: я на Solaris, так что это компоновщик Solaris в сочетании с GCC, я не уверен, если это имеет значение или нет. Версия GCC - 4.2.2. Это происходит, даже если я компилирую файл, который содержит только код int main() { return 0; }
без связанных библиотек.
Обновление2: я печатаю:
$ g++ -O2 mytest.cpp
$ nm a.out | grep _mcount
[65] | 134547444| 1|FUNC |GLOB |0 |11 |_mcount
И g ++ ни к чему не привязан. Кроме того, я попытался скомпилировать с помощью компилятора Sun CC, и у него нет этой проблемы. Я также пытался обновить GCC, символ все еще существует в 4.4.1.