GitHub user cgeffect edited a discussion: 如何链接rocketmq静态库?

系统: linux centos
版本: 5.0.1
-rw-r--r-- 1 xxx algorithm 200M Apr 16 22:11 librocketmq.a
-rwxr-xr-x 1 xxx algorithm  61M Apr 16 22:11 librocketmq.so
已经编译出了librocketmq.a, 还有libproto.a和libopencensus_proto.a, 
工程链接只链接librocketmq.a不行, 报了很多absl, grpc, opencensus未定义的符号. 
rocketmq依赖的三方静态库不是直接打包进librocketmq.a的吗? 还需要单独链接吗? 
```
/usr/local/lib/gcc/x86_64-pc-linux-gnu/11.1.0/../../../../x86_64-pc-linux-gnu/bin/ld:
 libmogic_cg.so: undefined reference to 
`opencensus::trace::Span::AddAttribute(absl::lts_20211102::string_view, 
opencensus::trace::AttributeValueRef) const'
/usr/local/lib/gcc/x86_64-pc-linux-gnu/11.1.0/../../../../x86_64-pc-linux-gnu/bin/ld:
 libmogic_cg.so: undefined reference to 
`absl::lts_20211102::FormatTime[abi:cxx11](absl::lts_20211102::string_view, 
absl::lts_20211102::Time, absl::lts_20211102::TimeZone)'
/usr/local/lib/gcc/x86_64-pc-linux-gnu/11.1.0/../../../../x86_64-pc-linux-gnu/bin/ld:
 libmogic_cg.so: undefined reference to 
`grpc::experimental::ExternalCertificateVerifier::~ExternalCertificateVerifier()'
/usr/local/lib/gcc/x86_64-pc-linux-gnu/11.1.0/../../../../x86_64-pc-linux-gnu/bin/ld:
 libmogic_cg.so: undefined reference to 
`absl::lts_20211102::numbers_internal::safe_strto32_base(absl::lts_20211102::string_view,
 int*, int)'
/usr/local/lib/gcc/x86_64-pc-linux-gnu/11.1.0/../../../../x86_64-pc-linux-gnu/bin/ld:
 libmogic_cg.so: undefined reference to 
`absl::lts_20211102::time_internal::cctz::utc_time_zone()'
/usr/local/lib/gcc/x86_64-pc-linux-gnu/11.1.0/../../../../x86_64-pc-linux-gnu/bin/ld:
 libmogic_cg.so: undefined reference to 
`opencensus::stats::ViewDescriptor::set_description(absl::lts_20211102::string_view)'
/usr/local/lib/gcc/x86_64-pc-linux-gnu/11.1.0/../../../../x86_64-pc-linux-gnu/bin/ld:
 libmogic_cg.so: undefined reference to `grpc::Timespec2Timepoint(gpr_timespec)'
/usr/local/lib/gcc/x86_64-pc-linux-gnu/11.1.0/../../../../x86_64-pc-linux-gnu/bin/ld:
 libmogic_cg.so: undefined reference to 
`absl::lts_20211102::ConvertDateTime(long, int, int, int, int, int, 
absl::lts_20211102::TimeZone)'
/usr/local/lib/gcc/x86_64-pc-linux-gnu/11.1.0/../../../../x86_64-pc-linux-gnu/bin/ld:
 libmogic_cg.so: undefined reference to 
`absl::lts_20211102::container_internal::ConvertDeletedToEmptyAndFullToDeleted(absl::lts_20211102::container_internal::ctrl_t*,
 unsigned long)'
/usr/local/lib/gcc/x86_64-pc-linux-gnu/11.1.0/../../../../x86_64-pc-linux-gnu/bin/ld:
 libmogic_cg.so: undefined reference to 
`absl::lts_20211102::hash_internal::MixingHashState::kSeed'
/usr/local/lib/gcc/x86_64-pc-linux-gnu/11.1.0/../../../../x86_64-pc-linux-gnu/bin/ld:
 libmogic_cg.so: undefined reference to 
`opencensus::stats::ViewDescriptor::RegisterForExport() const'
/usr/local/lib/gcc/x86_64-pc-linux-gnu/11.1.0/../../../../x86_64-pc-linux-gnu/bin/ld:
 libmogic_cg.so: undefined reference to 
`opencensus::tags::TagKey::name[abi:cxx11]() const'
/usr/local/lib/gcc/x86_64-pc-linux-gnu/11.1.0/../../../../x86_64-pc-linux-gnu/bin/ld:
 libmogic_cg.so: undefined reference to 
`absl::lts_20211102::ToTimeT(absl::lts_20211102::Time)'
/usr/local/lib/gcc/x86_64-pc-linux-gnu/11.1.0/../../../../x86_64-pc-linux-gnu/bin/ld:
 libmogic_cg.so: undefined reference to 
`google::protobuf::internal::ArenaStringPtr::Set(std::__cxx11::basic_string<char,
 std::char_traits<char>, std::allocator<char> > const*, 
std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > 
const&, google::protobuf::Arena*)'
```

通过ldd 命令查看动态库的依赖, 发现libssl.so.1.1 和libcrypto.so.1.1 依赖的是动态库, 
怎么才能使rocketmq依赖静态库呢?
linux-vdso.so.1 =>  (0x00007fff7db29000)
        libz.so.1 => /lib64/libz.so.1 (0x00007f6fe2850000)
        libdl.so.2 => /lib64/libdl.so.2 (0x00007f6fe264c000)
        librt.so.1 => /lib64/librt.so.1 (0x00007f6fe2444000)
        libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f6fe2228000)
        libssl.so.1.1 => 
/home/xxx/third_party/prebuild/third_party/rocketmq-5.0/source/third_party/openssl/openssl_install/lib/libssl.so.1.1
 (0x00007f6fe5354000)
        libcrypto.so.1.1 => 
/home/xxx/third_party/prebuild/third_party/rocketmq-5.0/source/third_party/openssl/openssl_install/lib/libcrypto.so.1.1
 (0x00007f6fe1f3b000)
        libstdc++.so.6 => /usr/local/lib64/libstdc++.so.6 (0x00007f6fe1b35000)
        libm.so.6 => /lib64/libm.so.6 (0x00007f6fe1833000)
        libgcc_s.so.1 => /usr/local/lib64/libgcc_s.so.1 (0x00007f6fe161b000)
        libc.so.6 => /lib64/libc.so.6 (0x00007f6fe124d000)
        /lib64/ld-linux-x86-64.so.2 (0x00007f6fe51df000)

GitHub link: https://github.com/apache/rocketmq-clients/discussions/729

----
This is an automatically sent email for dev@rocketmq.apache.org.
To unsubscribe, please send an email to: dev-unsubscr...@rocketmq.apache.org

Reply via email to