Библиотеките не винаги съдържат символа _mcount, но приложенията съдържат (можете да проверите това с gobjdump или помощната програма nm). Четох, че _mcount се използва за реализиране на профилиране, но символът присъства дори когато профилирането е деактивирано и оптимизацията е активирана (-O2). Служи ли за някаква друга допълнителна цел?
Актуализация: Аз съм на Solaris, така че това е Solaris linker, комбиниран с GCC, не съм сигурен дали това има значение или не. GCC версията е 4.2.2. Това се случва дори ако компилирам файл, който съдържа само кода int main() { return 0; }
без свързани библиотеки.
Update2: Пиша:
$ g++ -O2 mytest.cpp
$ nm a.out | grep _mcount
[65] | 134547444| 1|FUNC |GLOB |0 |11 |_mcount
И g++ не е свързан с нищо. Освен това се опитах да компилирам с компилатора sun CC и няма този проблем. Опитах също да актуализирам GCC, символът все още съществува в 4.4.1.
gcc
(или командата, която използвате) свързан с нещо, което извиква компилатора с някои ключове по подразбиране, нали? Можете ли да публикувате точните извиквания, които използвате, за да компилирате това? - person Chris Lutz   schedule 08.01.2010