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-11.4.0/gcc/Cross-profiling.html