Linux下Qt加载GRPC依赖库

项目中客户端与服务端需要使用GRPC通信,服务端使用vsIDE很方便的就能将GRPC的依赖库引入,而Qt却只能LIBS+=来一个个的引入动态库,而难点就在于此。
首先说一下GRPC库,用源码编译生成的,分别生成了静态和动态的,由于GRPC的依赖库非常多,静态库在引用时需要考虑引用顺序(主要是pkbconfig那条路没走通,只能编译过,运行崩溃),所以考虑引用动态库。
直接将pro的代码贴出来

INCLUDEPATH += $$PWD/build/bin/grpc/include
DEPENDPATH += $$PWD/build/bin/grpc/include

LIBS += -L$$PWD/build/bin/grpc/lib -Wl,--as-needed -laddress_sorting -lcares -lcrypto -lgpr -lgrpc \
-lgrpc_authorization_provider -lgrpc_plugin_support -lgrpc_unsecure -lgrpc++ -lgrpc++_alts -lgrpc++_error_details \
-lgrpc++_reflection -lgrpc++_unsecure -lgrpcpp_channelz -lre2 -lssl -lupb -lupb_collections_lib -lupb_json_lib \
-lupb_textformat_lib -lutf8_range_lib -lz
LIBS += -L$$PWD/build/bin/grpc/lib64 -Wl,--as-needed -labsl_bad_any_cast_impl -labsl_bad_optional_access \
-labsl_bad_variant_access -labsl_base -labsl_city -labsl_civil_time -labsl_cord -labsl_cord_internal \
-labsl_cordz_functions -labsl_cordz_handle -labsl_cordz_info -labsl_cordz_sample_token -labsl_crc_cord_state \
-labsl_crc_cpu_detect -labsl_crc_internal -labsl_crc32c -labsl_debugging_internal -labsl_demangle_internal \
-labsl_die_if_null -labsl_examine_stack -labsl_exponential_biased -labsl_failure_signal_handler -labsl_flags \
-labsl_flags_commandlineflag -labsl_flags_commandlineflag_internal -labsl_flags_config -labsl_flags_internal \
-labsl_flags_marshalling -labsl_flags_parse -labsl_flags_private_handle_accessor -labsl_flags_program_name \
-labsl_flags_reflection -labsl_flags_usage -labsl_flags_usage_internal -labsl_graphcycles_internal -labsl_hash \
-labsl_hashtablez_sampler -labsl_int128 -labsl_kernel_timeout_internal -labsl_leak_check -labsl_log_entry -labsl_log_flags \
-labsl_log_globals -labsl_log_initialize -labsl_log_internal_check_op -labsl_log_internal_conditions -labsl_log_internal_format \
-labsl_log_internal_globals -labsl_log_internal_log_sink_set -labsl_log_internal_message -labsl_log_internal_nullguard \
-labsl_log_internal_proto -labsl_log_severity -labsl_log_sink -labsl_low_level_hash -labsl_malloc_internal -labsl_periodic_sampler \
-labsl_random_distributions -labsl_random_internal_distribution_test_util -labsl_random_internal_platform -labsl_random_internal_pool_urbg \
-labsl_random_internal_randen -labsl_random_internal_randen_hwaes -labsl_random_internal_randen_hwaes_impl -labsl_random_internal_randen_slow \
-labsl_random_internal_seed_material -labsl_random_seed_gen_exception -labsl_random_seed_sequences -labsl_raw_hash_set -labsl_raw_logging_internal \
-labsl_scoped_set_env -labsl_spinlock_wait -labsl_stacktrace -labsl_status -labsl_str_format_internal -labsl_strerror \
-labsl_string_view -labsl_strings -labsl_strings_internal -labsl_symbolize -labsl_synchronization -labsl_throw_delegate \
-labsl_time -labsl_time_zone -lprotobuf -lprotobuf-lite -lprotoc -lutf8_range -lutf8_validity

要注意的是/build/bin/grpc/lib和/build/bin/grpc/lib64是我自己的库目录,\ 是换行符,拷贝时请注意。-Wl,–as-needed参数一定要有,否则编译通过,运行崩溃到GRCP服务的BulidAndStart函数内。

-Wl,–as-needed参数是同事指导,否则还在坑里出不来。在此记录一下GRPC动态库引用时的问题,有人需要直接拷贝即可

  • 4
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值