首页 > 其他分享 >交叉编译gRPC

交叉编译gRPC

时间:2023-04-21 14:57:22浏览次数:52  
标签:tmp set cmake 交叉 gRPC 编译 DCMAKE grpc

 

1.cmake版本至少3.5.1

#官方用的3.16
#Install CMake 3.16
apt-get update && apt-get install -y wget
wget -q -O cmake-linux.sh https://github.com/Kitware/CMake/releases/download/v3.16.1/cmake-3.16.1-Linux-x86_64.sh
sh cmake-linux.sh -- --skip-license --prefix=/usr
rm cmake-linux.sh

 

2.编译gRPC相关工具
cd grpc-v1.45.2
mkdir -p cmake/build
cd cmake/build
cmake   -DCMAKE_BUILD_TYPE=Release   -DgRPC_INSTALL=ON   -DgRPC_BUILD_TESTS=OFF   -DgRPC_SSL_PROVIDER=package   ../..
make install

 

3.建立cmake config
#重点来了,需要修改硬件对应的编译工具链
vim /tmp/toolchain.cmake
# Write a toolchain file to use for cross-compiling.
SET(CMAKE_SYSTEM_NAME Linux)
SET(CMAKE_SYSTEM_PROCESSOR armhf)
set(CMAKE_STAGING_PREFIX /tmp/stage)
# 以下两行根据所用的交叉编译器所在路径修改
set(QL_TOOLCHAIN_PATH /opt/ql_crosstools/ql-ag35-le22-gcc640-v1-toolchain/gcc/usr/bin/arm-oe-linux-gnueabi)
set(CMAKE_C_COMPILER ${QL_TOOLCHAIN_PATH}/arm-oe-linux-gnueabi-gcc)
set(CMAKE_CXX_COMPILER ${QL_TOOLCHAIN_PATH}/arm-oe-linux-gnueabi-g++)

add_compile_options("-marm")
add_compile_options("-march=armv7-a")
add_compile_options("-mfpu=neon")
add_compile_options("-mfloat-abi=hard")

#这个应该不是必须的,这是之前编译app用的
set(AG35_SDK_DIR /home/vico/work/sdk/ql-ol-extsdk-ag35_ocpu)
SET(ENV{LDFLAGS} "$ENV{LDFLAGS} -marm -march=armv7-a -mfpu=neon -mfloat-abi=hard -s -no-pie")
set(CMAKE_SYSROOT /home/vico/work/sdk/ql-ol-extsdk-ag35_ocpu/ql-sysroots)

 

4.交叉编译gRPC
cd grpc-v1.45.2
mkdir -p cmake/build_arm
cd cmake/build_arm
cmake -DCMAKE_TOOLCHAIN_FILE=/tmp/toolchain.cmake -DCMAKE_BUILD_TYPE=Release  -DCMAKE_INSTALL_PREFIX=/tmp/install    ../..
make install

 

5.交叉编译demo
cd grpc-v1.45.2/examples/cpp/helloworld
mkdir -p cmake/build_arm
cd cmake/build_arm
cmake -DCMAKE_TOOLCHAIN_FILE=/tmp/toolchain.cmake \
      -DCMAKE_BUILD_TYPE=Release \
      -Dabsl_DIR=/tmp/stage/lib/cmake/absl \
      -DProtobuf_DIR=/tmp/stage/lib/cmake/protobuf \
      -Dutf8_range_DIR=/tmp/stage/lib/cmake/utf8_range \
      -DgRPC_DIR=/tmp/stage/lib/cmake/grpc \
      ../..
make

 

标签:tmp,set,cmake,交叉,gRPC,编译,DCMAKE,grpc
From: https://www.cnblogs.com/edenpei/p/17340321.html

相关文章

  • GCC预处理、编译、汇编、链接全过程
    //hello.c#include<stdio.h>intmain(void){printf("Hello,world!\n");return0;} 预处理:替代宏,引入头文件cpphello.c>hello.i 编译:gcc-Wall-Shello.i(生成hello.s) 汇编:ashello.s-ohello.o(生成hello.o) 链接:复杂ld版:ld-dynamic-linke......
  • 一套完整的基于随机森林的机器学习流程(特征选择、交叉验证、模型评估))...
    机器学习实操(以随机森林为例)为了展示随机森林的操作,我们用一套早期的前列腺癌和癌旁基因表达芯片数据集,包含102个样品(50个正常,52个肿瘤),2个分组和9021个变量(基因)。(https://file.biolab.si/biolab/supp/bi-cancer/projections/info/prostata.html)数据格式和读入数据输入数据为......
  • JVM中的编译器
    JVM中集成了两种编译器,ClientCompiler和ServerCompiler,它们的作用也不同。ClientCompiler注重启动速度和局部的优化,ServerCompiler则更加关注全局的优化,性能会更好,但由于会进行更多的全局分析,所以启动速度会变慢。两种编译器有着不同的应用场景,在虚拟机中同时发挥作用。Clien......
  • Linux 编译安装 OpenSSH
    1.安装依赖yum-yinstallgccopenssl11openssl11-develpam-develzlib-devel2.设置编译FLAGexportCFLAGS=$(pkg-config--cflagslibssl11)exportLDFLAGS=$(pkg-config--libslibssl11)3.备份配置,删除系统自带软件包mv/etc/pam.d/sshd/etc/pam.d/sshd.bakrpm-e--n......
  • Linux 编译安装 Python3
    本文档适用Python3.9及以上版本。1.提前安装依赖yuminstall-ygccncurses-develgdbm-develxz-develsqlite-develtk-develuuid-develreadline-develbzip2-devellibffi-developenssl11openssl11-devel2.设置编译FLAGAWSAMI:exportCFLAGS=$(pkg-config--cflagsli......
  • 每天打卡一小时 第十一天 编译四部曲
     第一部曲自然语言创建函数,对函数进行定义声明第二部曲流程图不用了吧第三部曲代码#include<iostream>usingnamespacestd;classComplex{public:Complex(doubler=0,doublei=0):real(r),imag(i){}Complexoperator+(Complex&c......
  • 【原创】实验验证 -fstack-protector 编译选项效果
     使用 -fstack-protector选项的编译脚本  [root@Bettystack_smash_test]#catmk.sh  #!/bin/bash g++-O2-Wall-m32-shared-Wl,-fpiccaptureexception.cpp-olibcaptureexception.so gcc-g-fstack-protector-Wall-U_FORTIFY_......
  • ubuntu编译字符设备
    前言创建一个简单的字符设备驱动程序。​ 本文命令的运行基本上都需要root权限,使用root账号,或者在命令前面加上sudo。​ 如果你使用ssh远程连接的服务器进行代码编写。那么不要在root用户下创建文件或者文件夹。这会导致你ssh连接vscode编写代码的权限问题。可以在普通用户创建......
  • c++ 静态编译和动态编译
      C++是一种高级编程语言,它支持两种不同的编译方式:静态编译和动态编译。下面是它们的介绍:静态编译  静态编译是将程序代码和库函数一起编译成一个可执行文件的过程。在静态编译过程中,程序代码和库函数的代码被组合在一起,形成一个独立的可执行文件,该文件可以在任何系统上运行......
  • jad 命令行批量反编译
    下载地址:http://varaneckas.com/jad/ 解压放到jdkbin目录比如需求是要把org文件夹下及其子文件夹下所有的class文件反编译后放到src目录中,并保持package原始结构命令这样:jad-r-dsrc-sjava"org/**/*.class"-r表示保持原始package结构-dsrc表示output目录为当前的src目录-......