10.5 Перемещение файлов данных для поддержки кросс-профилирования
Запуск программы приведет к генерации профильных данных. Для каждого исходного файла, скомпилированного с помощью -fprofile-arcs, сопутствующий файл .gcda будет помещен в директорию файлов объектов. Это подразумевает запуск программы на той же системе, на которой она была построена, или наличие на целевой системе той же абсолютной структуры каталогов. Программа попытается создать необходимую структуру каталогов, если она еще не существует.
Для поддержки кросс-профилирования программа, скомпилированная с помощью -fprofile-arcs, может перемещать файлы данных, основываясь на двух переменных среды:
- GCOV_PREFIX содержит префикс, добавляемый к абсолютным путям в файлах объектов. Префикс может быть абсолютным или относительным. По умолчанию префикс отсутствует.
- GCOV_PREFIX_STRIP указывает, сколько начальных имён каталогов следует удалить из жёстко заданных абсолютных путей. Значение по умолчанию равно 0.
Примечание: Если GCOV_PREFIX_STRIP установлено, а GCOV_PREFIX не определено, то относительный путь создаётся из жёстко заданных абсолютных путей.
Например, если файл объекта /user/build/foo.o был скомпилирован с помощью -fprofile-arcs, то исполняемый файл попытается создать файл данных /user/build/foo.gcda при запуске на целевой системе. Это может завершиться неудачей, если соответствующий каталог не существует и его нельзя создать. Это можно преодолеть, например, установив переменные среды: ‘GCOV_PREFIX=/target/run’ и ‘GCOV_PREFIX_STRIP=1’. Такое значение переименует файл данных в /target/run/build/foo.gcda.
Вы должны переместить файлы данных в ожидаемую древовидную структуру каталогов, чтобы использовать их для оптимизации профилирования (-fprofile-use) или для использования инструмента gcov.
© Free Software Foundation
Licensed under the GNU Free Documentation License, Version 1.3.
https://gcc.gnu.org/onlinedocs/gcc-7.5.0/gcc/Cross-profiling.html