这篇记录虽然短,但很典型:编译失败往往不是“代码坏了”,而是依赖库、链接路径或构建参数没对上。像 vmapextractor 这种报错,先看缺的是哪个库,再判断是走外部依赖配置,还是补齐本地库并重新生成构建文件。实操里最怕的是只反复 make,不回头检查依赖树;真正省时间的办法,是先定位缺库,再按模块逐层修复。
编译 mangosone 时提示 cannot find -lmpq 怎么办?
这类报错通常表示链接阶段找不到 mpq 库文件。优先检查是否按项目要求启用了外部依赖参数;如果不行,就进入 dep/libmpq 目录先执行 autogen.sh、configure、make,再到 contrib/vmap_extractor 重新 cmake 和 make。
-DACE_USE_EXTERNAL=1 这个参数有什么作用?
它的作用是让编译过程优先使用外部依赖配置,避免某些库在项目内部路径里找不到。对于本文这种 vmapextractor 链接失败场景,这是最省事的第一步,适合先尝试。
手动编译 libmpq 后还要做什么?
编译完 dep/libmpq 后,还要到 contrib/vmap_extractor 目录重新生成并编译相关目标,然后回到 obj 或 build 目录继续整体构建。关键是让链接器能找到正确的 mpq 库路径。






