gcc ld error libgcov.a(_gcov_merge_add.o) ссылается на DSO

Пытаемся скомпилировать наш код для покрытия кода, используя gcov. Получение следующей ошибки:

скрытый символ `__gcov_merge_add' в /usr/lib/gcc/i686-redhat-linux/4.4.4/libgcov.a(_gcov_merge_add.o) ссылается DSO /usr/bin/ld: окончательная ссылка не удалась: непредставимый раздел на выходе collect2: ld вернул 1 статус выхода

Для gcov недавно добавлены следующие параметры компилятора:

-O0 -fprofile-arcs -ftest-coverage  -Xlinker -zmuldefs

и ld флаги:

-fprofile-generate -fprofile-arcs

и связан с библиотекой -lgcov

Пожалуйста, предложите.


person user2302555    schedule 20.04.2013    source источник


Ответы (2)


Мы можем включить покрытие кода, просто используя параметры компилятора --coverage -O0 и, наконец, связывание с -lgcov для версии RHEL 6.*.

Однако то же самое не с Debian, где нам пришлось использовать -O0 -fprofile-arcs -ftest-coverage -Xlinker -zmuldefs, чтобы сделать двоичные файлы с включенным покрытием кода.

person user2302555    schedule 24.04.2013

Решение этой проблемы

  • Компилировать с -fprofile-arcs -ftest-coverage
  • Связь с -fprofile-arcs -lgcov

Я также получил эту же ошибку, когда я не использовал -fprofile-arcs при связывании.

person rashok    schedule 21.12.2018