编译Python时出现__gcov_indirect_call_profiler未定义符号错误的原因
Python编译出现
__gcov_indirect_call_profiler未定义符号的原因及解决 原因分析
__gcov_indirect_call_profiler 是GCC代码覆盖率工具(gcov)的专属符号,出现这个错误的核心原因是编译目录中残留了带有gcov编译标记的旧产物,且configure缓存未清理,导致新旧编译配置的文件混合链接。
具体细节:
- 首次编译正常,但后续修改编译选项时,可能曾触发过开启代码覆盖率的编译逻辑(比如误加
--enable-coverage参数,或CFLAGS中混入-fprofile-arcs -ftest-coverage),生成了依赖gcov的目标文件。 - 重新编译时没有彻底清理旧文件,即使改回原选项,残留的带gcov依赖的目标文件依然存在,新编译的二进制尝试链接这些文件时,找不到对应的gcov符号。
- configure缓存会保留之前的配置参数,即使重新执行configure,旧的缓存可能仍会影响编译流程,导致混合配置。
解决方法
- 彻底清理编译目录,清除所有残留产物和配置缓存:
make distclean - 重新执行你的configure配置命令:
./configure --prefix="$PREFIX" --enable-optimizations --enable-shared LDFLAGS="-Wl,--rpath=$PREFIX/lib" - 重新编译并安装:
make -j$(nproc) make install
内容的提问来源于stack exchange,提问作者rrauenza
相关产品推荐
相关产品推荐

