我在编译器机器中编译我的程序。后来我在不同的环境中运行并测试程序。如果我使用-fprofile-arcs编译,则程序会尝试在运行环境中不存在的文件夹中写入文件。这个问题有解决办法吗?
由于
答案 0 :(得分:1)
继RP的回答之后,我认为this会很有用。
如果是目标文件/user/build/foo.o 是用-fprofile-arcs构建的 最终的可执行文件将尝试创建 数据文件/user/build/foo.gcda 在目标系统上运行时。 如果相应的话,这将失败 目录不存在,它是 无法创建它。这可以 克服,例如,设置 环境如
GCOV_PREFIX=/target/run' and
GCOV_PREFIX_STRIP = 1' 。这样的设定 将命名数据文件 /target/run/build/foo.gcda。
答案 1 :(得分:0)
Nakiya,根据this “-fprofile弧 添加代码以便检测程序流弧。在执行期间,程序记录每个分支和调用执行的次数以及执行或返回的次数。当编译的程序退出时,它会将此数据保存到每个源文件的名为auxname.gcda的文件中。数据可用于配置文件导向的优化(-franch-probability),或用于测试覆盖率分析(-ftest-coverage)。每个目标文件的auxname都是从输出文件的名称生成的,如果明确指定并且它不是最终的可执行文件,否则它是源文件的基本名称。在这两种情况下都会删除任何后缀(例如输入文件dir / foo.c的foo.gcda,或者指定为-o dir / foo.o的输出文件的dir / foo.gcda)。“