32位Linux Mint编译Bazel报InvalidProtocolBufferException错误如何解决
解决方案
编译Bazel报错修复方法
你遇到的报错本质是JVM G1垃圾回收器的标记栈溢出,之前仅调整堆内存参数未触及核心的MarkStackSizeMax溢出问题,所以没有效果,按以下步骤操作即可:
- 配置正确的JVM参数,新增标记栈扩容和GC适配参数,终端执行:
export BAZEL_JAVAC_OPTS="-J-Xms512m -J-Xmx1g -J-XX:MarkStackSizeMax=4M -J-XX:MarkStackSize=2M -J-XX:+UseParallelGC" - 编译时禁用Bazel的Java worker进程,避免序列化解析异常,编译命令调整为:
bazel build --strategy=Javac=standalone //src:bazel
无需编译Bazel的TensorFlow替代安装方案
32位架构下不需要自行编译Bazel和TensorFlow,可直接选择预编译包方案:
- 从系统官方源安装适配包:执行
sudo apt update && sudo apt install python3-tensorflow,源内包已经完成32位架构适配,开箱可用。 - 用pip安装历史32位兼容版本:TensorFlow 2.1之前的版本官方提供32位编译包,执行
pip3 install tensorflow==2.0.0即可直接安装。 - 安装社区维护的高版本32位TensorFlow wheel包:如果需要更高版本功能,下载社区预编译的32位wheel文件后,执行
pip3 install 下载的包文件名.whl即可完成安装,跳过全部编译流程。
内容的提问来源于stack exchange,提问作者Traigabor
相关产品推荐
相关产品推荐

