国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【安裝】grpc源碼編譯安裝(Linux)

這篇具有很好參考價(jià)值的文章主要介紹了【安裝】grpc源碼編譯安裝(Linux)。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

一. 編譯環(huán)境說明

1. grpc版本: V1.58.0

2. gcc版本:gcc7或以上(當(dāng)前使用 gcc version 7.5.0 (Ubuntu 7.5.0-3ubuntu1~18.04))

3. cmake版本:3.8或以上(當(dāng)前使用cmake version 3.19.6)

4. 操作系統(tǒng)版本:Ubuntu16.04

5. apt 源:阿里云

二. 編譯環(huán)境準(zhǔn)備

說明:由于Ubuntu16.04自帶編譯環(huán)境,gcc為4.8,cmake為3.5,不滿足編譯grpc-v1.58.0最低要求, 因此需要升級(jí)gcc和cmake環(huán)境。

1. 更新gcc

$ apt-get install build-essential autoconf libtool pkg-config

2. 更新cmake

# 1.下載自動(dòng)安裝腳本
  $ wget -q -O cmake-linux.sh https://github.com/Kitware/CMake/releases/download/v3.19.6/cmake-3.19.6-Linux-x86_64.sh
# 2.執(zhí)行自動(dòng)安裝腳本(--prefix指定cmake安裝目錄)
  $ sh cmake-linux.sh -- --skip-license --prefix=/usr/local/cmake
# 3.刪除自動(dòng)安裝腳本
  $ rm cmake-linux.sh
# 4.將cmake安裝目錄永久設(shè)置到PATH環(huán)境變量
  $ vim /etc/profile
   (最后一行新增:export PATH=/usr/local/cmake/bin:$PATH)
  $ source /etc/profile

三. 源碼下載

# 注意:下載子模塊時(shí)因github對(duì)應(yīng)源碼不在國內(nèi)服務(wù)器,下載會(huì)很慢,最好使用梯子
git clone --recurse-submodules -b v1.58.0 --depth 1 --shallow-submodules https://github.com/grpc/grpc

四、源碼編譯安裝gRPC和Protocol Buffers(命令行)

# 1.進(jìn)入grpc源碼根路徑
$ cd grpc
# 2.創(chuàng)建編譯目錄
$ mkdir -p cmake/build
# 3.進(jìn)入編譯目錄
$ pushd cmake/build
# 4.執(zhí)行cmake設(shè)置cmake參數(shù),并指定安裝目錄為/usr/local/grpc(該命令會(huì)轉(zhuǎn)換成makefile供編譯使用)
$ cmake -DgRPC_INSTALL=ON -DgRPC_BUILD_TESTS=OFF -DCMAKE_INSTALL_PREFIX=/usr/local/grpc ../..
# 5.編譯
$ make -j 4
# 6.安裝(將編譯后的目標(biāo)文件安裝到/usr/local/grpc)
$ make install
# 7.退出編譯目錄
$ popd
###################################################################
# 至此,grpc源碼庫已編譯完成,生成的相關(guān)頭文件、庫文件在/usr/local/grpc目錄下
# 8. 查看編譯后的目標(biāo)文件
$ ls /usr/local/grpc
bin  include  lib  share

四、源碼編譯安裝gRPC和Protocol Buffers(Qt Creator)

1. 設(shè)置Qt Creator CMake環(huán)境為3.19.0,并設(shè)置為默認(rèn)套件

linux安裝grpc,Linux,rpc,c++,linux

  • 修改構(gòu)建套件的CMake Tool為新建的CMake
    linux安裝grpc,Linux,rpc,c++,linux

2. 打開grpc項(xiàng)目

    1. 選擇grpc源碼目錄中的CMakeLists.txt(grpc/CMakeLists.txt)
    1. 初始打開,會(huì)彈出窗,設(shè)置cmake編譯的構(gòu)建目錄;(構(gòu)建產(chǎn)生的構(gòu)建文件都會(huì)生成在該目錄下)
    1. 初始打開,設(shè)置構(gòu)建目錄后,會(huì)彈出窗設(shè)置CMake參數(shù);
    1. 點(diǎn)擊CMake,執(zhí)行CMake;(最終會(huì)生成MakeFile文件)
    • 3)、4)步驟,等同于命令 cmake -DgRPC_INSTALL=ON -DgRPC_BUILD_TESTS=OFF -DCMAKE_INSTALL_PREFIX=/usr/local/grpc …/…;該命令設(shè)置參數(shù)并執(zhí)行cmake。
      linux安裝grpc,Linux,rpc,c++,linux
    1. 然后項(xiàng)目打開完成。打開后工程結(jié)構(gòu)如下:
      linux安裝grpc,Linux,rpc,c++,linux

3. 修改構(gòu)建設(shè)置,添加構(gòu)建步驟

    1. 默認(rèn)構(gòu)建設(shè)置中,構(gòu)建步驟只有make命令,如果希望執(zhí)行make install,可以修改構(gòu)建設(shè)置,添加make install 構(gòu)建步驟
      linux安裝grpc,Linux,rpc,c++,linux

4. 構(gòu)建(編譯項(xiàng)目)

linux安裝grpc,Linux,rpc,c++,linux文章來源地址http://www.zghlxwxcb.cn/news/detail-859972.html

五、樣例程序編譯(使用已有CMakeLists.txt,全部編譯)

$ cd examples/cpp/helloworld

$ mkdir -p cmake/build

$ pushd cmake/build

# 執(zhí)行cmake,生成makefile文件(CMAKE_PREFIX_PATH 指定CMake的搜索路徑,提供給find_package(), find_program(), find_library(), find_file(), 和find_path()等函數(shù)使用。
# 這里還有一個(gè)小知識(shí)點(diǎn)就是,CMAKE_INSTALL_PREFIX (執(zhí)行make install命令時(shí)安裝的根目錄的路徑) 會(huì)被添加到CMAKE_SYSTEM_PREFIX_PATH,所以find_package(), find_program(), find_library(), find_path(), find_ile()等命令也可以該目錄為prefix去查找。)
$ cmake -DCMAKE_PREFIX_PATH=/usr/local/grpc ../..

#編譯(如果多線程編譯報(bào)錯(cuò),則直接使用make進(jìn)行編譯即可)
$ make -j 4
############################

# 編譯后,會(huì)生成如下文件:
root@node2:~/software/grpc/examples/cpp/helloworld/cmake/build# ls
CMakeCache.txt  cmake_install.cmake   greeter_async_client2  greeter_callback_client  greeter_client  helloworld.grpc.pb.cc  helloworld.pb.cc  libhw_grpc_proto.a
CMakeFiles      greeter_async_client  greeter_async_server   greeter_callback_server  greeter_server  helloworld.grpc.pb.h   helloworld.pb.h   Makefile

六、樣例程序編譯(單獨(dú)編譯)

# 1.進(jìn)入到樣例程序目錄
$ cd /root/software/grpc/examples/cpp/helloworld

# 2.使用 protoc 和 gRPC C++ 插件從 helloworld.proto 文件生成 gRPC 服務(wù)端和客戶端接口,生成的代碼將被放置在當(dāng)前目錄中(該命令會(huì)生成helloworld.grpc.pb.h和helloworld.grpc.pb.cc兩個(gè)文件)
$ protoc -I ../../protos --grpc_out=. --plugin=protoc-gen-grpc=`which grpc_cpp_plugin` ../../protos/helloworld.proto

# 3.使用protoc和C++插件從helloworld.proto文件生成相應(yīng)的數(shù)據(jù)接口,即響應(yīng)和請求消息類(該命令會(huì)生成helloworld.pb.h和helloworld.pb.cc兩個(gè)文件)
$ protoc -I ../../protos --cpp_out=. ../../protos/helloworld.proto

# 4.設(shè)置PKG_CONFIG_PATH變量(grpc相關(guān)庫通過pkg-config管理,修改該變量指定pkg-config到grpc的安裝目錄里搜索pkgconfig)
$ export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/grpc/lib/pkgconfig

##### re2庫在grpc目錄中沒有re2.pc文件,需要單獨(dú)指定搜索路徑;否則使用pkgconfig會(huì)有如下錯(cuò)誤
<<ErrorMsg
   Package re2 was not found in the pkg-config search path.
   Perhaps you should add the directory containing `re2.pc'
   to the PKG_CONFIG_PATH environment variable
   Package 're2', required by 'grpc', not found
   In file included from helloworld.pb.cc:4:0:
ErrorMsg
$ export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/root/software/grpc/third_party/re2/

# 5.定義變量管理protobuf相關(guān)公共依賴庫(目的使得g++編譯命令簡短一點(diǎn))
$ export PROTOBUF_ABSL_DEPS=absl_absl_check absl_absl_log absl_algorithm absl_base absl_bind_front absl_bits absl_btree absl_cleanup absl_cord absl_core_headers absl_debugging absl_die_if_null absl_dynamic_annotations absl_flags absl_flat_hash_map absl_flat_hash_set absl_function_ref absl_hash absl_layout absl_log_initialize absl_log_severity absl_memory absl_node_hash_map absl_node_hash_set absl_optional absl_span absl_status absl_statusor absl_strings absl_synchronization absl_time absl_type_traits absl_utility absl_variant

# 6.使用greeter_server.cc編譯服務(wù)端程序
$ g++ -o greeter_server helloworld.pb.cc helloworld.grpc.pb.cc greeter_server.cc -I/usr/local/grpc/include -L/usr/local/lib `pkg-config --libs --static protobuf grpc++ absl_flags absl_flags_parse $PROTOBUF_ABSL_DEPS` -lutf8_validity -pthread -Wl,--no-as-needed -lgrpc++_reflection -Wl,--as-needed -ldl

# 7.使用greeter_client.cc編譯客戶端程序
$ g++ -o greeter_client helloworld.pb.cc helloworld.grpc.pb.cc greeter_client.cc -I/usr/local/grpc/include -L/usr/local/lib `pkg-config --libs --static protobuf grpc++ absl_flags absl_flags_parse $PROTOBUF_ABSL_DEPS` -lutf8_validity -pthread -Wl,--no-as-needed -lgrpc++_reflection -Wl,--as-needed -ldl

七、Protobuf編譯器protoc命令常用參數(shù)項(xiàng)

  • -I …/…/protos:告訴 protoc 在何處查找 .proto 文件。在這種情況下,它將在 …/…/protos 目錄中查找
  • –grpc_out=.:指定生成的 gRPC 服務(wù)文件的輸出目錄。在這種情況下,它們將被生成在當(dāng)前目錄中。
  • –plugin=protoc-gen-grpc=which grpc_cpp_plugin``:告訴 protoc 使用哪個(gè)插件來生成 gRPC 代碼。在這種情況下,它使用的是 grpc_cpp_plugin,它是 gRPC C++ 插件。
  • –cpp_out=.:指定生成的C++代碼文件的輸出目錄。在這種情況下,它們將被生成在當(dāng)前目錄中。

到了這里,關(guān)于【安裝】grpc源碼編譯安裝(Linux)的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • Linux更新操作系統(tǒng)Openssh版本9.3p1(源碼編譯安裝)

    安裝依賴 yum install -y gcc gcc-c++ glibc make autoconf openssl openssl-devel pcre-devel pam-devel yum install -y pam* zlib* openssh-9.3p1.tar.gz openssl-3.1.0.tar.gz 備份文件 cp /etc/pam.d/sshd /etc/pam.d/sshd.bak 解壓安裝包 tar zxvf openssl-3.1.0.tar.gz cd openssl-3.1.0 備份舊Openssl mv /usr/bin/openssl /usr/bin/openssl_old mv /usr/include/

    2024年02月12日
    瀏覽(35)
  • Linux驅(qū)動(dòng)開發(fā)筆記(二):ubuntu系統(tǒng)從源碼編譯安裝gcc7.3.0編譯器

    Linux驅(qū)動(dòng)開發(fā)筆記(二):ubuntu系統(tǒng)從源碼編譯安裝gcc7.3.0編譯器

    若該文為原創(chuàng)文章,轉(zhuǎn)載請注明原文出處 本文章博客地址:https://hpzwl.blog.csdn.net/article/details/130533941 紅胖子網(wǎng)絡(luò)科技博文大全:開發(fā)技術(shù)集合(包含Qt實(shí)用技術(shù)、樹莓派、三維、OpenCV、OpenGL、ffmpeg、OSG、單片機(jī)、軟硬結(jié)合等等)持續(xù)更新中… 上一篇:《Linux驅(qū)動(dòng)開發(fā)筆記(一

    2024年02月06日
    瀏覽(27)
  • Windows GRPC源碼編譯C++庫——詳細(xì)步驟

    Windows GRPC源碼編譯C++庫——詳細(xì)步驟

    目錄 前言: 一、環(huán)境準(zhǔn)備 1.1、安裝cmake 1.2、安裝Perl 1.3、安裝golang 1.4、安裝Visual Studio (推薦2022) 1.5、安裝git 1.6、安裝yasm 1.7、安裝,配置openssl庫 二、源碼下載 2.1、grpc源碼下載 2.2、第三方庫下載 三、編譯源碼 3.1、新建.build 3.2、生產(chǎn)解決方案 3.3、編譯 錯(cuò)誤1 錯(cuò)誤2 錯(cuò)誤3:

    2023年04月08日
    瀏覽(29)
  • Linux 編譯CEF源碼詳細(xì)記錄

    Linux 編譯CEF源碼詳細(xì)記錄

    Linux CEF(Chromium Embedded Framework)源碼下載編譯 由于CEF默認(rèn)的二進(jìn)制分發(fā)包不支持音視頻播放,需要自行編譯源碼,將ffmpeg開關(guān)打開才能支持。這里介紹的是Linux平臺(tái)下的CEF源碼下載編譯過程。 Windows平臺(tái)參考: 《Windows 編譯CEF源碼詳細(xì)記錄》 下載的過程非常艱辛,因?yàn)橛残砸?/p>

    2024年02月13日
    瀏覽(13)
  • Zabbix6.0全套落地方案-基于RHEL9系列源碼編譯安裝-Linux+Nginx+Mysql+Redis生產(chǎn)級(jí)模板及Agent2客戶端一鍵部署

    Zabbix6.0全套落地方案-基于RHEL9系列源碼編譯安裝-Linux+Nginx+Mysql+Redis生產(chǎn)級(jí)模板及Agent2客戶端一鍵部署

    實(shí)踐說明:基于RHEL9系列(CentOS9,AlmaLinux9,RockyLinux9等),但適用場景不限于此,客戶端一鍵部署安裝包基于RHEL8和RHEL9。 文檔形成時(shí)期:2023年 因系統(tǒng)或軟件版本不同,構(gòu)建部署可能略有差異,但本文未做細(xì)分,對(duì)稍有經(jīng)驗(yàn)者應(yīng)不存在明顯障礙。 限于篇幅,Zabbix配置基于Agent2一鍵

    2024年02月02日
    瀏覽(33)
  • 【Linux驅(qū)動(dòng)開發(fā)】編譯Android12源碼

    基于訊為電子rk3568教程 rk_android12.0_sdk_20220720.tar.gz 解壓 設(shè)置屏幕配置 整體編譯 Android 固件 使能編譯環(huán)境 開始整體編譯 rockdev/Image-rk3568_s // 編譯成功鏡像存放位置 單獨(dú)編譯u-boot (方法一) 編譯完成后在 u-boot 目錄會(huì)生成 rk356x_spl_loader_v1.13.112.bin 文件、uboot.img 文件、 resourc

    2024年02月05日
    瀏覽(23)
  • win10系統(tǒng) C++環(huán)境 安裝編譯GRPC

    win10系統(tǒng) C++環(huán)境 安裝編譯GRPC

    為了依賴的成功安裝,采用gitee進(jìn)行下載與更新。記得需要安裝git軟件。 安裝命令: 在自己指定的目錄下,鼠標(biāo)右鍵,選擇 git Bash Here 打開命令行 在grpc的目錄下修改配置文件:.gitmodules 復(fù)制下面內(nèi)容替換.gitmodules內(nèi)容: 在grpc目錄下,在git 上使用更新命令 使用cmake對(duì)grpc進(jìn)行

    2024年02月07日
    瀏覽(20)
  • Linux | Ubuntu配置JDK源碼編譯環(huán)境

    宿主機(jī)環(huán)境:Windows 11 家庭版 21H2 版本 宿主機(jī)操作系統(tǒng)版本:22000.348 虛擬機(jī)環(huán)境:VMware? Workstation 17 Pro 虛擬機(jī)操作系統(tǒng)版本:Ubuntu 22.10 參考:《深入理解Java虛擬機(jī):JVM高級(jí)特性與最佳實(shí)踐(第3版)》 在 Win 11 家庭版中使用 VMware 可能會(huì)產(chǎn)生一些兼容性問題,比如藍(lán)屏、無法

    2024年02月03日
    瀏覽(19)
  • 迅為iTOP-4412之Android 4.0/Linux源碼編譯

    迅為iTOP-4412之Android 4.0/Linux源碼編譯

    搭建配置好 ? uboot 、 Linux3.0 和 Android4.0的 編譯環(huán)境,完整搭建配置過程可參照下述博文: 迅為iTOP-4412之Android 4.0系統(tǒng)編譯環(huán)境的搭建(完整版)-CSDN博客 ?https://blog.csdn.net/Eva20192020/article/details/134668004?spm=1001.2014.3001.5502 提示:虛擬機(jī)中解壓完后的原打包文件建議刪除,可以節(jié)

    2024年02月03日
    瀏覽(21)
  • Linux CEF(Chromium Embedded Framework)源碼下載編譯詳細(xì)記錄

    Linux CEF(Chromium Embedded Framework)源碼下載編譯詳細(xì)記錄

    Linux CEF(Chromium Embedded Framework)源碼下載編譯 由于CEF默認(rèn)的二進(jìn)制分發(fā)包不支持音視頻播放,需要自行編譯源碼,將ffmpeg開關(guān)打開才能支持。這里介紹的是Linux平臺(tái)下的CEF源碼下載編譯過程。 Windows平臺(tái)參考: 《Windows 編譯CEF源碼詳細(xì)記錄》 下載的過程非常艱辛,因?yàn)橛残砸?/p>

    2024年02月14日
    瀏覽(38)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包