Gcov из памяти/несогласованная версия?
Просто пытаясь запустить gcov и получив следующую ошибку:
$ gcov src/main.c -o build
build/main.gcno:version '404*', prefer '407*'
gcov: out of memory allocating 14819216480 bytes after a total of 135168 bytes
Я использую clang/profile_rt для генерации файлов, необходимых gcov, я предполагаю, что это может иметь какое-то отношение к этому. Однако он работает на моем другом компьютере, поэтому я предполагаю, что он может быть исправлен каким-то образом.
Ответы
Ответ 1
У меня была такая же проблема на моей машине.
Убедитесь, что ваши версии gcov и используемого вами компилятора совпадают.
У меня была эта точная проблема при компиляции с g++ - 4.7, и у меня была gcov 4.6.
На моей машине sudo apt-get install ggcov
появилась последняя версия. Затем мне пришлось sudo ln -sf /usr/bin/gcov-4.7 /usr/bin/gcov
сделать точку gcov в нужном месте.
Ответ 2
Моя проблема заключалась в том, что я обновил gcc
и g++
, чтобы я мог использовать новый компилятор, но забыл обновить версию gcov
, означающую запуск "gcov
" или "lcov
", предыдущие версии компиляторов gcov
.
Таким образом, в основном работающие g++ --version
и gcov --version
должны давать один и тот же номер версии, иначе все будет очень плохо.
Вот как я обновил версию своего компилятора, последняя строка - то, что я пропал без вести, чтобы заставить все это работать.
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.9 90
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-4.9 90
sudo update-alternatives --install /usr/bin/gcov gcov /usr/bin/gcov-4.9 90
Ответ 3
У меня была такая же проблема, и у меня были правильные версии. Решение в моем случае: удалите все *.gcda
файлы из любого поддира, в котором вы компилируете. Мой make clean
не покрывал их.