Bazelisk成功构建MediaPipe的hello_world示例,但无输出且找不到可执行文件
问题解决步骤
1. 定位可执行文件位置
Bazel构建的二进制文件默认存放在项目根目录的bazel-bin文件夹下,对应目标的路径与构建路径一致。你要找的hello_world可执行文件路径应为:./bazel-bin/mediapipe/examples/desktop/hello_world/hello_world
也可以用命令快速搜索:
find ./bazel-bin -name "hello_world" -type f -executable
2. 手动执行二进制文件排查输出
先跳过bazel run,单独构建后直接执行文件:
- 执行构建命令:
bazelisk build --define MEDIAPIPE_DISABLE_GPU=1 mediapipe/examples/desktop/hello_world:hello_world
- 进入对应目录运行:
cd ./bazel-bin/mediapipe/examples/desktop/hello_world ./hello_world
如果此时能输出10行Hello World,说明是bazel run的输出捕获或显示问题;若仍无输出,再排查代码或配置。
3. 修复bazel run的输出显示问题
有时Bazel的警告信息会覆盖程序输出,可将警告重定向以保留标准输出:
bazelisk run --define MEDIAPIPE_DISABLE_GPU=1 mediapipe/examples/desktop/hello_world:hello_world 2>/dev/null
4. 检查日志级别与代码逻辑
MediaPipe的hello_world示例用LOG(INFO)输出内容,若终端默认屏蔽INFO级日志,需手动指定日志级别:
GLOG_minloglevel=0 ./hello_world
同时确认mediapipe/examples/desktop/hello_world/hello_world.cc中的循环逻辑正常,代码应包含:
int main(int argc, char** argv) { for (int i = 0; i < 10; ++i) { LOG(INFO) << "Hello World!"; } return 0; }
5. 匹配Bazel与MediaPipe版本兼容性
MediaPipe对Bazel版本有特定要求,可查看官方文档推荐版本,让Bazelisk指定版本运行:
bazelisk run --define MEDIAPIPE_DISABLE_GPU=1 --bazel_version=【官方推荐版本号】 mediapipe/examples/desktop/hello_world:hello_world
内容的提问来源于stack exchange,提问作者Barbara
相关产品推荐
相关产品推荐

