当前位置:   article > 正文

Ubuntu20.04(arm)+Qt5.12.8+gRPC1.48 编译与使用_ubuntu20.04 arm64 qt5

ubuntu20.04 arm64 qt5

本文章参考了多位大佬与gRPC官方的文章,在此拜谢,以下仅为本人自己的编译过程与使用的分享,如有错误,还望指正。

gRPC在ubuntu系统下的安装和使用icon-default.png?t=N7T8https://blog.csdn.net/w13l14/article/details/117984322gRPC官方icon-default.png?t=N7T8https://grpc.io/docs/languages/cpp/quickstart/ubuntu20.04 编译安装 grpc-c++icon-default.png?t=N7T8https://blog.csdn.net/Bart__/article/details/106992395#:~:text=%E7%BC%96%E8%AF%91%E5%AE%89%E8%A3%85grpc%20%23%E5%AE%89%E8%A3%85%E4%BB%A5%E4%B8%8B%E7%BB%84%E4%BB%B6%20%24%20sudo%20apt-get%20install%20build-essential%20autoconf,%23%E7%BC%96%E8%AF%91%E5%AE%89%E8%A3%85grpc%E5%BA%93%20%24%20mkdir%20-p%20cmake%2Fbuild%20%24%20pushd%20cmake%2Fbuild

1、环境/工具

(1)Ubuntu 20.04(arm)

(2)Qt 5.12.8

(3)CMake 3.28.3

(4)Git

(5)GCC/G++ 9.4.0

注意:gRPC对CMake与GCC/G++版本有所要求,最好能够升级到较高的版本,具体的升级方法请查阅网上资料,本人在这里只升级了CMake,故在下方只列出CMake的升级文章

ubuntu18.04的cmake升级icon-default.png?t=N7T8https://blog.csdn.net/Boys_Wu/article/details/104940575

 2、安装编译工具

在ubuntu中打开终端,输入以下代码,安装gRPC的编译工具

$ sudo apt install -y build-essential autoconf libtool pkg-config

另外,本人额外安装了libssl-dev工具,不知道有啥用,先记录进来

$ sudo apt-get install libssl-dev 
3、下载gRPC(1.48版本)

具体参照我之前的文章,中第4章(1)中的内容。windows+vs2017 C++编译gRPCicon-default.png?t=N7T8https://blog.csdn.net/weixin_44328139/article/details/136504504?spm=1001.2014.3001.5502注意:仅下载gRPC代码,必须下载完全,可以重复执行   git submodule update --init --recursive    命令,直到没有错误提示

之后将源码目录下third_party\zlib\CMakeList.txt的第一行依赖的CMake版本修改为2.8.12;

4、使用CMake编译gRPC
(1)创建编译文件夹build

进入刚刚git clone 下来的grpc目录,使用以下代码,创建文件编译文件夹

mkdir arm64_build
(2)编译gRPC

        1.进入创建的文件夹

cd arm64_build

        2.使用以下代码进行编译设置

cmake -DgRPC_INSTALL=ON -DCMAKE_BUILD_TYPE=Release -DgRPC_BUILD_TESTS=OFF -DCMAKE_INSTALL_PREFIX=/home/nvidia/workspace/grpc/GRPCPACKAGE -DgRPC_SSL_PROVIDER=package ..

        注意:最后有 “..” 

        3.执行以下代码编译,等待编译完成

make -j 8

        注意:编译过程中是否存在红色报错,waring信息忽略,若存在报错,可能是git clone代码下载不完全,若确认代码下载完全,则可网上查找相关错误问题。

(3)安装gRPC
make install

        通过此条代码进行安装gRPC,安装的路径就是2.编译设置中-DCMAKE_INSTALL_PREFIX所对应的路径。

至此,gRPC安装完成。

5、Qt使用gRPC
(1)Qt添加gRPC库文件(注意引用顺序,不能更改
  1. LIBS += -L$$PWD/../../grpc/GRPCPACKAGE/lib/ -lgrpc
  2. LIBS += -L$$PWD/../../grpc/GRPCPACKAGE/lib/ -lgpr
  3. LIBS += -L$$PWD/../../grpc/GRPCPACKAGE/lib/ -labsl_hashtablez_sampler
  4. LIBS += -L$$PWD/../../grpc/GRPCPACKAGE/lib/ -labsl_hash
  5. LIBS += -L$$PWD/../../grpc/GRPCPACKAGE/lib/ -labsl_random_distributions
  6. LIBS += -L$$PWD/../../grpc/GRPCPACKAGE/lib/ -labsl_random_seed_sequences
  7. LIBS += -L$$PWD/../../grpc/GRPCPACKAGE/lib/ -labsl_random_internal_pool_urbg
  8. LIBS += -L$$PWD/../../grpc/GRPCPACKAGE/lib/ -labsl_random_internal_randen
  9. LIBS += -L$$PWD/../../grpc/GRPCPACKAGE/lib/ -labsl_random_internal_randen_hwaes
  10. LIBS += -L$$PWD/../../grpc/GRPCPACKAGE/lib/ -labsl_random_internal_randen_hwaes_impl
  11. LIBS += -L$$PWD/../../grpc/GRPCPACKAGE/lib/ -labsl_random_internal_randen_slow
  12. LIBS += -L$$PWD/../../grpc/GRPCPACKAGE/lib/ -labsl_random_internal_platform
  13. LIBS += -L$$PWD/../../grpc/GRPCPACKAGE/lib/ -labsl_random_internal_seed_material
  14. LIBS += -L$$PWD/../../grpc/GRPCPACKAGE/lib/ -labsl_random_seed_gen_exception
  15. LIBS += -L$$PWD/../../grpc/GRPCPACKAGE/lib/ -labsl_synchronization
  16. LIBS += -L$$PWD/../../grpc/GRPCPACKAGE/lib/ -labsl_cord
  17. LIBS += -L$$PWD/../../grpc/GRPCPACKAGE/lib/ -labsl_cordz_info
  18. LIBS += -L$$PWD/../../grpc/GRPCPACKAGE/lib/ -labsl_cord_internal
  19. LIBS += -L$$PWD/../../grpc/GRPCPACKAGE/lib/ -labsl_cordz_functions
  20. LIBS += -L$$PWD/../../grpc/GRPCPACKAGE/lib/ -labsl_statusor
  21. LIBS += -L$$PWD/../../grpc/GRPCPACKAGE/lib/ -labsl_status
  22. LIBS += -L$$PWD/../../grpc/GRPCPACKAGE/lib/ -labsl_base
  23. LIBS += -L$$PWD/../../grpc/GRPCPACKAGE/lib/ -labsl_stacktrace
  24. LIBS += -L$$PWD/../../grpc/GRPCPACKAGE/lib/ -labsl_symbolize
  25. LIBS += -L$$PWD/../../grpc/GRPCPACKAGE/lib/ -labsl_debugging_internal
  26. LIBS += -L$$PWD/../../grpc/GRPCPACKAGE/lib/ -labsl_kernel_timeout_internal
  27. LIBS += -L$$PWD/../../grpc/GRPCPACKAGE/lib/ -labsl_time
  28. LIBS += -L$$PWD/../../grpc/GRPCPACKAGE/lib/ -labsl_int128
  29. LIBS += -L$$PWD/../../grpc/GRPCPACKAGE/lib/ -labsl_strings
  30. LIBS += -L$$PWD/../../grpc/GRPCPACKAGE/lib/ -labsl_strings_internal
  31. LIBS += -L$$PWD/../../grpc/GRPCPACKAGE/lib/ -labsl_malloc_internal
  32. LIBS += -L$$PWD/../../grpc/GRPCPACKAGE/lib/ -labsl_log_flags
  33. LIBS += -L$$PWD/../../grpc/GRPCPACKAGE/lib/ -labsl_log_globals
  34. LIBS += -L$$PWD/../../grpc/GRPCPACKAGE/lib/ -labsl_raw_logging_internal
  35. LIBS += -L$$PWD/../../grpc/GRPCPACKAGE/lib/ -labsl_bad_any_cast_impl
  36. LIBS += -L$$PWD/../../grpc/GRPCPACKAGE/lib/ -labsl_bad_optional_access
  37. LIBS += -L$$PWD/../../grpc/GRPCPACKAGE/lib/ -labsl_bad_variant_access
  38. LIBS += -L$$PWD/../../grpc/GRPCPACKAGE/lib/ -labsl_city
  39. LIBS += -L$$PWD/../../grpc/GRPCPACKAGE/lib/ -labsl_civil_time
  40. LIBS += -L$$PWD/../../grpc/GRPCPACKAGE/lib/ -labsl_cordz_handle
  41. LIBS += -L$$PWD/../../grpc/GRPCPACKAGE/lib/ -labsl_cordz_sample_token
  42. LIBS += -L$$PWD/../../grpc/GRPCPACKAGE/lib/ -labsl_demangle_internal
  43. LIBS += -L$$PWD/../../grpc/GRPCPACKAGE/lib/ -labsl_examine_stack
  44. LIBS += -L$$PWD/../../grpc/GRPCPACKAGE/lib/ -labsl_exponential_biased
  45. LIBS += -L$$PWD/../../grpc/GRPCPACKAGE/lib/ -labsl_failure_signal_handler
  46. LIBS += -L$$PWD/../../grpc/GRPCPACKAGE/lib/ -labsl_flags_commandlineflag_internal
  47. LIBS += -L$$PWD/../../grpc/GRPCPACKAGE/lib/ -labsl_flags_commandlineflag
  48. LIBS += -L$$PWD/../../grpc/GRPCPACKAGE/lib/ -labsl_flags_config
  49. LIBS += -L$$PWD/../../grpc/GRPCPACKAGE/lib/ -labsl_flags_internal
  50. LIBS += -L$$PWD/../../grpc/GRPCPACKAGE/lib/ -labsl_flags_marshalling
  51. LIBS += -L$$PWD/../../grpc/GRPCPACKAGE/lib/ -labsl_flags_parse
  52. LIBS += -L$$PWD/../../grpc/GRPCPACKAGE/lib/ -labsl_flags_private_handle_accessor
  53. LIBS += -L$$PWD/../../grpc/GRPCPACKAGE/lib/ -labsl_flags_program_name
  54. LIBS += -L$$PWD/../../grpc/GRPCPACKAGE/lib/ -labsl_flags_reflection
  55. LIBS += -L$$PWD/../../grpc/GRPCPACKAGE/lib/ -labsl_flags_usage_internal
  56. LIBS += -L$$PWD/../../grpc/GRPCPACKAGE/lib/ -labsl_flags_usage
  57. LIBS += -L$$PWD/../../grpc/GRPCPACKAGE/lib/ -labsl_flags
  58. LIBS += -L$$PWD/../../grpc/GRPCPACKAGE/lib/ -labsl_graphcycles_internal
  59. LIBS += -L$$PWD/../../grpc/GRPCPACKAGE/lib/ -labsl_leak_check
  60. LIBS += -L$$PWD/../../grpc/GRPCPACKAGE/lib/ -labsl_log_entry
  61. LIBS += -L$$PWD/../../grpc/GRPCPACKAGE/lib/ -labsl_log_flags
  62. LIBS += -L$$PWD/../../grpc/GRPCPACKAGE/lib/ -labsl_log_globals
  63. LIBS += -L$$PWD/../../grpc/GRPCPACKAGE/lib/ -labsl_log_initialize
  64. LIBS += -L$$PWD/../../grpc/GRPCPACKAGE/lib/ -labsl_log_internal_check_op
  65. LIBS += -L$$PWD/../../grpc/GRPCPACKAGE/lib/ -labsl_log_internal_conditions
  66. LIBS += -L$$PWD/../../grpc/GRPCPACKAGE/lib/ -labsl_log_internal_format
  67. LIBS += -L$$PWD/../../grpc/GRPCPACKAGE/lib/ -labsl_log_internal_globals
  68. LIBS += -L$$PWD/../../grpc/GRPCPACKAGE/lib/ -labsl_log_internal_log_sink_set
  69. LIBS += -L$$PWD/../../grpc/GRPCPACKAGE/lib/ -labsl_log_internal_message
  70. LIBS += -L$$PWD/../../grpc/GRPCPACKAGE/lib/ -labsl_log_internal_nullguard
  71. LIBS += -L$$PWD/../../grpc/GRPCPACKAGE/lib/ -labsl_log_internal_proto
  72. LIBS += -L$$PWD/../../grpc/GRPCPACKAGE/lib/ -labsl_log_severity
  73. LIBS += -L$$PWD/../../grpc/GRPCPACKAGE/lib/ -labsl_log_sink
  74. LIBS += -L$$PWD/../../grpc/GRPCPACKAGE/lib/ -labsl_low_level_hash
  75. LIBS += -L$$PWD/../../grpc/GRPCPACKAGE/lib/ -labsl_malloc_internal
  76. LIBS += -L$$PWD/../../grpc/GRPCPACKAGE/lib/ -labsl_periodic_sampler
  77. LIBS += -L$$PWD/../../grpc/GRPCPACKAGE/lib/ -labsl_raw_hash_set
  78. LIBS += -L$$PWD/../../grpc/GRPCPACKAGE/lib/ -labsl_scoped_set_env
  79. LIBS += -L$$PWD/../../grpc/GRPCPACKAGE/lib/ -labsl_spinlock_wait
  80. LIBS += -L$$PWD/../../grpc/GRPCPACKAGE/lib/ -labsl_strerror
  81. LIBS += -L$$PWD/../../grpc/GRPCPACKAGE/lib/ -labsl_str_format_internal
  82. LIBS += -L$$PWD/../../grpc/GRPCPACKAGE/lib/ -labsl_throw_delegate
  83. LIBS += -L$$PWD/../../grpc/GRPCPACKAGE/lib/ -labsl_time_zone
  84. LIBS += -L$$PWD/../../grpc/GRPCPACKAGE/lib/ -laddress_sorting
  85. LIBS += -L$$PWD/../../grpc/GRPCPACKAGE/lib/ -lcares
  86. LIBS += -L$$PWD/../../grpc/GRPCPACKAGE/lib/ -lssl
  87. LIBS += -L$$PWD/../../grpc/GRPCPACKAGE/lib/ -lcrypto
  88. LIBS += -L$$PWD/../../grpc/GRPCPACKAGE/lib/ -lgrpc++_unsecure
  89. LIBS += -L$$PWD/../../grpc/GRPCPACKAGE/lib/ -lgrpc_plugin_support
  90. LIBS += -L$$PWD/../../grpc/GRPCPACKAGE/lib/ -lgrpc_unsecure
  91. LIBS += -L$$PWD/../../grpc/GRPCPACKAGE/lib/ -lgrpc++_alts
  92. LIBS += -L$$PWD/../../grpc/GRPCPACKAGE/lib/ -lgrpc++_error_details
  93. LIBS += -L$$PWD/../../grpc/GRPCPACKAGE/lib/ -lgrpc++_reflection
  94. LIBS += -L$$PWD/../../grpc/GRPCPACKAGE/lib/ -lgrpc++
  95. LIBS += -L$$PWD/../../grpc/GRPCPACKAGE/lib/ -lgrpcpp_channelz
  96. LIBS += -L$$PWD/../../grpc/GRPCPACKAGE/lib/ -lprotobuf-lite
  97. LIBS += -L$$PWD/../../grpc/GRPCPACKAGE/lib/ -lprotobuf
  98. LIBS += -L$$PWD/../../grpc/GRPCPACKAGE/lib/ -lprotoc
  99. LIBS += -L$$PWD/../../grpc/GRPCPACKAGE/lib/ -lre2
  100. LIBS += -L$$PWD/../../grpc/GRPCPACKAGE/lib/ -lupb
  101. LIBS += -L$$PWD/../../grpc/GRPCPACKAGE/lib/ -lz

注意:这些导入的类需要在其他类之前导入,另外此处头文件与库文件路径本人采用了相对路径,可自行改为绝对路径

(2)Qt添加gRPC头文件
  1. INCLUDEPATH += $$PWD/../../grpc/GRPCPACKAGE/include
  2. DEPENDPATH += $$PWD/../../grpc/GRPCPACKAGE/include
(3)Qt添加proto相关.pb.h等文件

 具体proto编译相关方法,请参照我的上篇文章第5章的(1)编译proto文件的操作

windows+vs2017 C++编译gRPCicon-default.png?t=N7T8https://blog.csdn.net/weixin_44328139/article/details/136504504?spm=1001.2014.3001.5502添加.pb.h等相关文件到项目目录中

        (4)编写类方法使用proto

        略 

6、踩过的坑

        在Ubuntu Qt 中使用grpc 的使用类(即对proto中通讯进行了简单封装以供使用的类)时,仅仅包含了头文件,编译没有错误,新建类并进行实例化,即如下:

GrpcClient demoClient(grpc::CreateChannel(target_str, grpc::InsecureChannelCredentials()));

出现奇怪错误——显示各种缺少包含的库,当增加了类中首个通讯协议的发送函数的使用(即使此行代码不会被使用到,如下),也能编译通过,目前没有找到原因。

  1. GrpcClient demoClient(grpc::CreateChannel(target_str, grpc::InsecureChannelCredentials()));
  2. fun(){
  3. demoClient.sendDemo(1);
  4. }

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/知新_RL/article/detail/979312
推荐阅读
相关标签
  

闽ICP备14008679号