在Ubuntu上安装与配置Protobuf 3.21.1并应用于QT及TQA133开发板

一、在Ubuntu 22.04下安装Protobuf 3.21.1

步骤详情:

  1. 下载Protobuf:访问 protobuf v21.1 下载对应版本。

  2. 解压并进入解压后的protobuf-3.21.1文件夹

  3. 配置安装路径

    ./configure --prefix=/home/hm/protobuf3.2.1-lib --libdir=/home/hm/protobuf3.2.1-lib/lib
    
    • --prefix:指定生成文件的路径(包括可执行文件、库文件等)。请将/home/hm替换为您自己的用户目录。
    • --libdir:指定库文件的安装路径。同样,请根据需要调整此路径。
  4. 编译源码

    make -j8
    
  5. 执行安装

    sudo make install
    
  6. 添加protoc到环境变量
    编辑~/.bashrc文件,并添加以下行:

    export PATH=/home/hm/protobuf3.2.1-lib/bin:$PATH
    export LD_LIBRARY_PATH=/home/hm/protobuf3.2.1-lib/lib:$LD_LIBRARY_PATH
    

    然后运行:

    source ~/.bashrc
    

    测试安装结果:

    protoc --version
    

    注意:请确保将/home/hm替换为您的实际路径。即,如果您不是使用hm作为用户名,请相应地更改这些路径以匹配您计算机上的目录结构。

  7. 使用protoc生成对应的.cc.h文件

    protoc --cpp_out=./ hello.proto
    
    • --cpp_out=./:指定输出路径,即生成的C++代码存放的位置。这里的./表示当前目录。
    • hello.proto:需要转换的proto文件。protoc会根据这个文件生成相应的C++代码。
    • 更多关于protoc命令的用法可以参考官方文档
  8. 在QT的.pro文件中添加库引用

二、使用TQA133对应的交叉编译工具链编译Protobuf 3.21.1

准备工作与步骤:

  1. 确保交叉编译工具链已经正确安装

  2. 设置环境变量

    export CC=/opt/EmbedSky/TQA133/bin/aarch64-linux-gnu-gcc
    export CXX=/opt/EmbedSky/TQA133/bin/aarch64-linux-gnu-g++
    export AR=/opt/EmbedSky/TQA133/bin/aarch64-linux-gnu-ar
    export RANLIB=/opt/EmbedSky/TQA133/bin/aarch64-linux-gnu-ranlib
    

    注意:请确保上述路径正确指向您系统中的交叉编译工具链。如果您的交叉编译工具链安装位置不同,请相应地修改这些路径。

  3. 使用configure生成Makefile

    ./configure --host=aarch64-linux-gnu --prefix=/home/hm/tqa133_protobuf/ --with-protoc=/home/hm/protobuf3.2.1-lib/bin/protoc --libdir=/home/hm/tqa133_protobuf/lib
    
    • --host=aarch64-linux-gnu:指定目标平台为TQA133。
    • --prefix:指定生成文件的路径。请将/home/hm替换为您自己的用户目录。
    • --with-protoc:使用本机的protoc来生成必要的文件。请确保路径正确指向您主机上的protoc位置。
    • --libdir:指定依赖库的位置。请根据需要调整此路径。
  4. 编译

    make -j8
    
  5. 安装

    make install
    

    成功后会生成bin, include, 和lib文件夹。

  6. 复制库文件到开发板
    lib文件夹中的libprotobuf.so.32.1libprotobuf-lite.so.32.1复制到开发板,并确保路径与QT .pro文件中的路径一致。

  7. 创建软链接或使用tar打包整个lib并在开发板上解压

  8. 检查可执行文件的动态库依赖
    如果遇到找不到环境变量的问题,可以尝试:

    export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/hm/tqa133_protobuf/lib
    

    再次运行ldd 可执行文件确认是否找到库。

参考资料

posted @ 2025-02-27 22:54  mgshadow  阅读(390)  评论(0)    收藏  举报