protobuf 3.5.1交叉编译

下载交叉编译链

复制代码
wget https://snapshots.linaro.org/gnu-toolchain/11.3-2022.06-1/aarch64-linux-gnu/gcc-linaro-11.3.1-2022.06-x86_64_aarch64-linux-gnu.tar.xz 
wget https://snapshots.linaro.org/gnu-toolchain/11.3-2022.06-1/aarch64-linux-gnu/sysroot-glibc-linaro-2.34-2022.06-aarch64-linux-gnu.tar.xz 

下载protobuf

复制代码
wget https://github.com/protocolbuffers/protobuf/archive/refs/tags/v3.5.1.tar.gz

编译

复制代码
tar xvf v3.5.1.tar.gz
cd protobuf-3.5.1
mkdir install
./autogen.sh

配置

  • 用选型CC/CXX指定交叉编译链

  • 用--with-sysroot指定sysroot路径

  • --prefix执行安装目录的路径

  • --host指定目标host平台型号

  • --with-protoc=protoc 可以指定用protoc协助编译,前提是要安装 protobuf-compiler

    ./configure --target=aarch64-linux --host=aarch64-linux --with-sysroot=~/sysroot-glibc-linaro-2.34-2022.06-aarch64-linux-gnu CC=~/gcc-linaro-11.3.1-2022.06-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-gcc CXX=~/gcc-linaro-11.3.1-2022.06-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-g++ --prefix=~/protobuf-3.5.1/install

    ./configure --host=aarch64-linux-gnu --with-sysroot=~/sysroot-glibc-linaro-2.34-2022.06-aarch64-linux-gnu CC=~/gcc-linaro-11.3.1-2022.06-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-gcc CXX=~/gcc-linaro-11.3.1-2022.06-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-g++ --prefix=~/protobuf-3.5.1/install

    实际也可以直接指定host平台即可 :
    ./autogen.sh
    ./configure --with-protoc=protoc --host=aarch64-linux-gnu --prefix=~/protobuf-3.5.1/install
    make
    make install

编译

复制代码
make -j8

make 报错,找不到ld-linux-aarch64.so.1

将sysroot目录下的ld-linux-aarch64.so.1拷贝到系统目录/lib/ld-linux-aarch64.so.1

添加依赖库路径: ** 实测无效,需要拷贝。**

  • export LDFLAGS=~/sysroot-glibc-linaro-2.34-2022.06-aarch64-linux-gnu/libc/lib/
  • export LDFLAGS_FOR_BUILD=~/sysroot-glibc-linaro-2.34-2022.06-aarch64-linux-gnu/libc/lib/

make报错:找不到libstdc++

protobuf-3.5.1/src/.libs/lt-protoc: error while loading shared libraries: libstdc++.so.6: cannot open shared object file: No such file or directory

make[2]: *** [Makefile:9508:unittest_proto_middleman] 错误 127

  • 后面发现可能是配置问题,修改了配置host为aarch64-linux-gnu 即可

dockers 安装编译 - success

复制代码
apt-get install autoconf automake libtool
./autogen.sh 
// ./configure --with-protoc=protoc --host=aarch64-linux-gnu  --prefix=/app/protobuf-3.5.1/install 
./configure  --host=aarch64-linux-gnu  --prefix=/app/protobuf-3.5.1/install 
make 
make install
相关推荐
一只爱撸猫的程序猿3 小时前
使用Spring AI配合MCP(Model Context Protocol)构建一个"智能代码审查助手"
spring boot·aigc·ai编程
Jimmy4 小时前
AI 代理是什么,其有助于我们实现更智能编程
前端·后端·ai编程
星际码仔9 小时前
停止无脑“Vibe”!一行命令,让你的Claude变身编程导师、结对伙伴
ai编程·claude
程序员老刘10 小时前
Flutter 3.35 更新要点解析
flutter·ai编程·客户端
mortimer12 小时前
一次与“顽固”外部程序的艰难交锋:subprocess 调用exe踩坑实录
windows·python·ai编程
程序员X小鹿1 天前
腾讯出手!重磅发布CloudBase AI CLI,集Claude Code等5大AI CLI于一体!从开发到部署!(附教程)
ai编程
狠活科技1 天前
平替 Claude Code,API接入 GPT-5,Codex CLI 国内直接使用教程
chatgpt·ai编程·oneapi
麦兜*1 天前
【swift】SwiftUI动画卡顿全解:GeometryReader滥用检测与Canvas绘制替代方案
服务器·ios·swiftui·android studio·objective-c·ai编程·swift
Jooolin2 天前
【教你一招】反汇编有啥用?
c++·ai编程·汇编语言
谦行2 天前
使用 Claude Code Subagents 组建 AI Coding 专家顾问团
ai编程·claude