leeliliang opened a new issue, #1981: URL: https://github.com/apache/incubator-brpc/issues/1981
**Describe the bug (描述bug)** Undefined symbols for architecture arm64: "_CFAbsoluteTimeGetCurrent", referenced from: butil::Time::Now() in libbrpc.a(time_mac.cc.o) butil::Time::NowFromSystemTime() in libbrpc.a(time_mac.cc.o) "_CFAbsoluteTimeGetDayOfWeek", referenced from: butil::Time::Explode(bool, butil::Time::Exploded*) const in libbrpc.a(time_mac.cc.o) "_CFAbsoluteTimeGetGregorianDate", referenced from: butil::Time::Explode(bool, butil::Time::Exploded*) const in libbrpc.a(time_mac.cc.o) "_CFArrayGetTypeID", referenced from: __CFArray const* butil::mac::CFCast<__CFArray const*>(void const* const&) in libbrpc.a(foundation_util.mm.o) __CFArray const* butil::mac::CFCastStrict<__CFArray const*>(void const* const&) in libbrpc.a(foundation_util.mm.o) "_CFBagGetTypeID", referenced from: __CFBag const* butil::mac::CFCast<__CFBag const*>(void const* const&) in libbrpc.a(foundation_util.mm.o) __CFBag const* butil::mac::CFCastStrict<__CFBag const*>(void const* const&) in libbrpc.a(foundation_util.mm.o) "_CFBooleanGetTypeID", referenced from: __CFBoolean const* butil::mac::CFCast<__CFBoolean const*>(void const* const&) in libbrpc.a(foundation_util.mm.o) __CFBoolean const* butil::mac::CFCastStrict<__CFBoolean const*>(void const* const&) in libbrpc.a(foundation_util.mm.o) "_CFBundleGetMainBundle", referenced from: butil::mac::CreatorCodeForApplication() in libbrpc.a(foundation_util.mm.o) "_CFBundleGetPackageInfo", referenced from: butil::mac::CreatorCodeForCFBundleRef(__CFBundle*) in libbrpc.a(foundation_util.mm.o) butil::mac::CreatorCodeForApplication() in libbrpc.a(foundation_util.mm.o) "_CFCopyTypeIDDescription", referenced from: butil::mac::GetValueFromDictionaryErrorMessage(__CFString const*, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, void const*) in libbrpc.a(foundation_util.mm.o) "_CFDataGetTypeID", referenced from: __CFData const* butil::mac::CFCast<__CFData const*>(void const* const&) in libbrpc.a(foundation_util.mm.o) __CFData const* butil::mac::CFCastStrict<__CFData const*>(void const* const&) in libbrpc.a(foundation_util.mm.o) "_CFDateGetTypeID", referenced from: __CFDate const* butil::mac::CFCast<__CFDate const*>(void const* const&) in libbrpc.a(foundation_util.mm.o) __CFDate const* butil::mac::CFCastStrict<__CFDate const*>(void const* const&) in libbrpc.a(foundation_util.mm.o) "_CFDictionaryGetTypeID", referenced from: __CFDictionary const* butil::mac::CFCast<__CFDictionary const*>(void const* const&) in libbrpc.a(foundation_util.mm.o) __CFDictionary const* butil::mac::CFCastStrict<__CFDictionary const*>(void const* const&) in libbrpc.a(foundation_util.mm.o) "_CFDictionaryGetValue", referenced from: operator<<(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, __CFError*) in libbrpc.a(foundation_util.mm.o) "_CFErrorCopyDescription", referenced from: operator<<(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, __CFError*) in libbrpc.a(foundation_util.mm.o) "_CFErrorCopyUserInfo", referenced from: operator<<(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, __CFError*) in libbrpc.a(foundation_util.mm.o) "_CFErrorGetCode", referenced from: operator<<(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, __CFError*) in libbrpc.a(foundation_util.mm.o) "_CFErrorGetDomain", referenced from: operator<<(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, __CFError*) in libbrpc.a(foundation_util.mm.o) "_CFGetTypeID", referenced from: __CFArray const* butil::mac::CFCast<__CFArray const*>(void const* const&) in libbrpc.a(foundation_util.mm.o) __CFArray const* butil::mac::CFCastStrict<__CFArray const*>(void const* const&) in libbrpc.a(foundation_util.mm.o) __CFBag const* butil::mac::CFCast<__CFBag const*>(void const* const&) in libbrpc.a(foundation_util.mm.o) __CFBag const* butil::mac::CFCastStrict<__CFBag const*>(void const* const&) in libbrpc.a(foundation_util.mm.o) __CFBoolean const* butil::mac::CFCast<__CFBoolean const*>(void const* const&) in libbrpc.a(foundation_util.mm.o) __CFBoolean const* butil::mac::CFCastStrict<__CFBoolean const*>(void const* const&) in libbrpc.a(foundation_util.mm.o) __CFData const* butil::mac::CFCast<__CFData const*>(void const* const&) in libbrpc.a(foundation_util.mm.o) ... "_CFGregorianDateGetAbsoluteTime", referenced from: butil::Time::FromExploded(bool, butil::Time::Exploded const&) in libbrpc.a(time_mac.cc.o) "_CFNullGetTypeID", referenced from: __CFNull const* butil::mac::CFCast<__CFNull const*>(void const* const&) in libbrpc.a(foundation_util.mm.o) __CFNull const* butil::mac::CFCastStrict<__CFNull const*>(void const* const&) in libbrpc.a(foundation_util.mm.o) "_CFNumberGetTypeID", referenced from: __CFNumber const* butil::mac::CFCast<__CFNumber const*>(void const* const&) in libbrpc.a(foundation_util.mm.o) __CFNumber const* butil::mac::CFCastStrict<__CFNumber const*>(void const* const&) in libbrpc.a(foundation_util.mm.o) "_CFRelease", referenced from: butil::FilePath::GetHFSDecomposedForm(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&) in libbrpc.a(file_path.cc.o) butil::FilePath::CompareIgnoreCase(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&) in libbrpc.a(file_path.cc.o) butil::SysWideToUTF8(std::__1::basic_string<wchar_t, std::__1::char_traits<wchar_t>, std::__1::allocator<wchar_t> > const&) in libbrpc.a(sys_string_conversions_mac.mm.o) butil::SysUTF8ToWide(butil::BasicStringPiece<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > const&) in libbrpc.a(sys_string_conversions_mac.mm.o) butil::mac::GetValueFromDictionaryErrorMessage(__CFString const*, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, void const*) in libbrpc.a(foundation_util.mm.o) operator<<(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, __CFError*) in libbrpc.a(foundation_util.mm.o) butil::Time::FromExploded(bool, butil::Time::Exploded const&) in libbrpc.a(time_mac.cc.o) ... "_CFSetGetTypeID", referenced from: __CFSet const* butil::mac::CFCast<__CFSet const*>(void const* const&) in libbrpc.a(foundation_util.mm.o) __CFSet const* butil::mac::CFCastStrict<__CFSet const*>(void const* const&) in libbrpc.a(foundation_util.mm.o) "_CFStringCompare", referenced from: butil::FilePath::CompareIgnoreCase(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&) in libbrpc.a(file_path.cc.o) "_CFStringCreateWithBytes", referenced from: butil::SysUTF8ToCFStringRef(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&) in libbrpc.a(sys_string_conversions_mac.mm.o) butil::SysUTF16ToCFStringRef(std::__1::basic_string<unsigned short, butil::string16_char_traits, std::__1::allocator<unsigned short> > const&) in libbrpc.a(sys_string_conversions_mac.mm.o) butil::SysUTF8ToNSString(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&) in libbrpc.a(sys_string_conversions_mac.mm.o) butil::SysUTF16ToNSString(std::__1::basic_string<unsigned short, butil::string16_char_traits, std::__1::allocator<unsigned short> > const&) in libbrpc.a(sys_string_conversions_mac.mm.o) "_CFStringCreateWithBytesNoCopy", referenced from: butil::FilePath::GetHFSDecomposedForm(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&) in libbrpc.a(file_path.cc.o) butil::FilePath::CompareIgnoreCase(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&) in libbrpc.a(file_path.cc.o) butil::SysWideToUTF8(std::__1::basic_string<wchar_t, std::__1::char_traits<wchar_t>, std::__1::allocator<wchar_t> > const&) in libbrpc.a(sys_string_conversions_mac.mm.o) butil::SysUTF8ToWide(butil::BasicStringPiece<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > const&) in libbrpc.a(sys_string_conversions_mac.mm.o) "_CFStringGetBytes", referenced from: butil::SysUTF8ToWide(butil::BasicStringPiece<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > const&) in libbrpc.a(sys_string_conversions_mac.mm.o) std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > butil::(anonymous namespace)::CFStringToSTLStringWithEncodingT<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >(__CFString const*, unsigned int) in libbrpc.a(sys_string_conversions_mac.mm.o) butil::SysCFStringRefToUTF16(__CFString const*) in libbrpc.a(sys_string_conversions_mac.mm.o) "_CFStringGetFileSystemRepresentation", referenced from: butil::FilePath::GetHFSDecomposedForm(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&) in libbrpc.a(file_path.cc.o) "_CFStringGetLength", referenced from: butil::SysUTF8ToWide(butil::BasicStringPiece<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > const&) in libbrpc.a(sys_string_conversions_mac.mm.o) std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > butil::(anonymous namespace)::CFStringToSTLStringWithEncodingT<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >(__CFString const*, unsigned int) in libbrpc.a(sys_string_conversions_mac.mm.o) butil::SysCFStringRefToUTF16(__CFString const*) in libbrpc.a(sys_string_conversions_mac.mm.o) "_CFStringGetMaximumSizeOfFileSystemRepresentation", referenced from: butil::FilePath::GetHFSDecomposedForm(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&) in libbrpc.a(file_path.cc.o) "_CFStringGetTypeID", referenced from: __CFString const* butil::mac::CFCast<__CFString const*>(void const* const&) in libbrpc.a(foundation_util.mm.o) __CFString const* butil::mac::CFCastStrict<__CFString const*>(void const* const&) in libbrpc.a(foundation_util.mm.o) "_CFTimeZoneCopySystem", referenced from: butil::Time::FromExploded(bool, butil::Time::Exploded const&) in libbrpc.a(time_mac.cc.o) butil::Time::Explode(bool, butil::Time::Exploded*) const in libbrpc.a(time_mac.cc.o) "_CFURLGetTypeID", referenced from: __CFURL const* butil::mac::CFCast<__CFURL const*>(void const* const&) in libbrpc.a(foundation_util.mm.o) __CFURL const* butil::mac::CFCastStrict<__CFURL const*>(void const* const&) in libbrpc.a(foundation_util.mm.o) "_CFUUIDGetTypeID", referenced from: __CFUUID const* butil::mac::CFCast<__CFUUID const*>(void const* const&) in libbrpc.a(foundation_util.mm.o) __CFUUID const* butil::mac::CFCastStrict<__CFUUID const*>(void const* const&) in libbrpc.a(foundation_util.mm.o) "_CGColorGetTypeID", referenced from: CGColor* butil::mac::CFCast<CGColor*>(void const* const&) in libbrpc.a(foundation_util.mm.o) CGColor* butil::mac::CFCastStrict<CGColor*>(void const* const&) in libbrpc.a(foundation_util.mm.o) "_CTFontGetTypeID", referenced from: __CTFont const* butil::mac::CFCast<__CTFont const*>(void const* const&) in libbrpc.a(foundation_util.mm.o) "_CTRunGetTypeID", referenced from: __CTRun const* butil::mac::CFCast<__CTRun const*>(void const* const&) in libbrpc.a(foundation_util.mm.o) __CTRun const* butil::mac::CFCastStrict<__CTRun const*>(void const* const&) in libbrpc.a(foundation_util.mm.o) "_NSClassFromString", referenced from: __CTFont const* butil::mac::CFCast<__CTFont const*>(void const* const&) in libbrpc.a(foundation_util.mm.o) "_NSHomeDirectory", referenced from: butil::GetHomeDir() in libbrpc.a(file_util_mac.mm.o) "_NSSearchPathForDirectoriesInDomains", referenced from: butil::mac::GetSearchPathDirectory(NSSearchPathDirectory, unsigned long, butil::FilePath*) in libbrpc.a(foundation_util.mm.o) butil::mac::GetLocalDirectory(NSSearchPathDirectory, butil::FilePath*) in libbrpc.a(foundation_util.mm.o) butil::mac::GetUserDirectory(NSSearchPathDirectory, butil::FilePath*) in libbrpc.a(foundation_util.mm.o) butil::mac::GetUserLibraryPath() in libbrpc.a(foundation_util.mm.o) "_NSTemporaryDirectory", referenced from: butil::GetTempDir(butil::FilePath*) in libbrpc.a(file_util_mac.mm.o) butil::GetHomeDir() in libbrpc.a(file_util_mac.mm.o) "_OBJC_CLASS_$_NSBundle", referenced from: objc-class-ref in libbrpc.a(bundle_locations.mm.o) "_OBJC_CLASS_$_NSObject", referenced from: objc-class-ref in libbrpc.a(platform_thread_mac.mm.o) "_OBJC_CLASS_$_NSString", referenced from: objc-class-ref in libbrpc.a(foundation_util.mm.o) "_OBJC_CLASS_$_NSThread", referenced from: objc-class-ref in libbrpc.a(platform_thread_mac.mm.o) "_SecACLGetTypeID", referenced from: __SecACL* butil::mac::CFCast<__SecACL*>(void const* const&) in libbrpc.a(foundation_util.mm.o) __SecACL* butil::mac::CFCastStrict<__SecACL*>(void const* const&) in libbrpc.a(foundation_util.mm.o) "_SecTrustedApplicationGetTypeID", referenced from: __SecTrustedApplication* butil::mac::CFCast<__SecTrustedApplication*>(void const* const&) in libbrpc.a(foundation_util.mm.o) __SecTrustedApplication* butil::mac::CFCastStrict<__SecTrustedApplication*>(void const* const&) in libbrpc.a(foundation_util.mm.o) "__CFIsObjC", referenced from: __CTFont const* butil::mac::CFCast<__CTFont const*>(void const* const&) in libbrpc.a(foundation_util.mm.o) "JsonDocValue::JsonDocValue(JsonDoc*, rapidjson::GenericValue<rapidjson::UTF8<char>, rapidjson::MemoryPoolAllocator<rapidjson::CrtAllocator> >&, long)", referenced from: RoomProcessor::ReleaseTrtcRoom(JsonDoc&) in room_processor.cpp.o UserMgr::PackageBmcuStreamStopMessage(std::__1::shared_ptr<MixTask>) in user.cpp.o UserMgr::PackageBmcuStreamReadyMessage(std::__1::shared_ptr<MixTask>, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&) in user.cpp.o UserMgr::PackageSaasStreamReadyMessage(std::__1::shared_ptr<MixTask>, std::__1::vector<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::allocator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > >&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >&) in user.cpp.o UserMgr::PackageSaasStreamStopMessage(std::__1::shared_ptr<MixTask>, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&) in user.cpp.o UserOutManager::KickOutUserAtTrtcRoom(std::__1::shared_ptr<User>&, JsonDoc&) in userOut.cpp.o "google::GetAllFlags(std::__1::vector<google::CommandLineFlagInfo, std::__1::allocator<google::CommandLineFlagInfo> >*)", referenced from: brpc::FlagsService::default_method(google::protobuf::RpcController*, brpc::FlagsRequest const*, brpc::FlagsResponse*, google::protobuf::Closure*) in libbrpc.a(flags_service.cpp.o) "google::FlagRegisterer::FlagRegisterer(char const*, char const*, char const*, char const*, void*, void*)", referenced from: __GLOBAL__sub_I_brpcredis.cpp in brpcredis.cpp.o "google::FlagRegisterer::FlagRegisterer<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >(char const*, char const*, char const*, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >*, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >*)", referenced from: __GLOBAL__sub_I_variable.cpp in libbrpc.a(variable.cpp.o) __GLOBAL__sub_I_logging.cc in libbrpc.a(logging.cc.o) __GLOBAL__sub_I_common.cpp in libbrpc.a(common.cpp.o) __GLOBAL__sub_I_trackme.cpp in libbrpc.a(trackme.cpp.o) __GLOBAL__sub_I_span.cpp in libbrpc.a(span.cpp.o) __GLOBAL__sub_I_health_check.cpp in libbrpc.a(health_check.cpp.o) __GLOBAL__sub_I_discovery_naming_service.cpp in libbrpc.a(discovery_naming_service.cpp.o) ... "google::FlagRegisterer::FlagRegisterer<bool>(char const*, char const*, char const*, bool*, bool*)", referenced from: __GLOBAL__sub_I_controller.cpp in libbrpc.a(controller.cpp.o) __GLOBAL__sub_I_redis.cpp in libbrpc.a(redis.cpp.o) __GLOBAL__sub_I_server.cpp in libbrpc.a(server.cpp.o) __GLOBAL__sub_I_variable.cpp in libbrpc.a(variable.cpp.o) __GLOBAL__sub_I_logging.cc in libbrpc.a(logging.cc.o) __GLOBAL__sub_I_input_messenger.cpp in libbrpc.a(input_messenger.cpp.o) __GLOBAL__sub_I_protocol.cpp in libbrpc.a(protocol.cpp.o) ... "google::FlagRegisterer::FlagRegisterer<double>(char const*, char const*, char const*, double*, double*)", referenced from: __GLOBAL__sub_I_circuit_breaker.cpp in libbrpc.a(circuit_breaker.cpp.o) __GLOBAL__sub_I_auto_concurrency_limiter.cpp in libbrpc.a(auto_concurrency_limiter.cpp.o) __GLOBAL__sub_I_locality_aware_load_balancer.cpp in libbrpc.a(locality_aware_load_balancer.cpp.o) "google::FlagRegisterer::FlagRegisterer<int>(char const*, char const*, char const*, int*, int*)", referenced from: __GLOBAL__sub_I_latency_recorder.cpp in libbrpc.a(latency_recorder.cpp.o) __GLOBAL__sub_I_variable.cpp in libbrpc.a(variable.cpp.o) __GLOBAL__sub_I_sampler.cpp in libbrpc.a(sampler.cpp.o) __GLOBAL__sub_I_logging.cc in libbrpc.a(logging.cc.o) __GLOBAL__sub_I_socket_map.cpp in libbrpc.a(socket_map.cpp.o) __GLOBAL__sub_I_socket.cpp in libbrpc.a(socket.cpp.o) __GLOBAL__sub_I_load_balancer.cpp in libbrpc.a(load_balancer.cpp.o) ... "google::FlagRegisterer::FlagRegisterer<long long>(char const*, char const*, char const*, long long*, long long*)", referenced from: __GLOBAL__sub_I_socket.cpp in libbrpc.a(socket.cpp.o) __GLOBAL__sub_I_locality_aware_load_balancer.cpp in libbrpc.a(locality_aware_load_balancer.cpp.o) __GLOBAL__sub_I_cluster_recover_policy.cpp in libbrpc.a(cluster_recover_policy.cpp.o) "google::FlagRegisterer::FlagRegisterer<unsigned long long>(char const*, char const*, char const*, unsigned long long*, unsigned long long*)", referenced from: __GLOBAL__sub_I_protocol.cpp in libbrpc.a(protocol.cpp.o) "google::GetCommandLineOption(char const*, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >*)", referenced from: bvar::dumping_thread(void*) in libbrpc.a(variable.cpp.o) bvar::GFlag::get_value() const in libbrpc.a(gflag.cpp.o) brpc::RpcDumpContext::SaveFlags() in libbrpc.a(rpc_dump.cpp.o) "google::SetCommandLineOption(char const*, char const*)", referenced from: brpc::RpczService::enable(google::protobuf::RpcController*, brpc::RpczRequest const*, brpc::RpczResponse*, google::protobuf::Closure*) in libbrpc.a(rpcz_service.cpp.o) brpc::RpczService::disable(google::protobuf::RpcController*, brpc::RpczRequest const*, brpc::RpczResponse*, google::protobuf::Closure*) in libbrpc.a(rpcz_service.cpp.o) bvar::GFlag::set_value(char const*) in libbrpc.a(gflag.cpp.o) brpc::FlagsService::default_method(google::protobuf::RpcController*, brpc::FlagsRequest const*, brpc::FlagsResponse*, google::protobuf::Closure*) in libbrpc.a(flags_service.cpp.o) "google::RegisterFlagValidator(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const*, bool (*)(char const*, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&))", referenced from: __GLOBAL__sub_I_variable.cpp in libbrpc.a(variable.cpp.o) __GLOBAL__sub_I_logging.cc in libbrpc.a(logging.cc.o) "google::RegisterFlagValidator(bool const*, bool (*)(char const*, bool))", referenced from: __GLOBAL__sub_I_variable.cpp in libbrpc.a(variable.cpp.o) __GLOBAL__sub_I_logging.cc in libbrpc.a(logging.cc.o) __GLOBAL__sub_I_task_group.cpp in libbrpc.a(task_group.cpp.o) brpc::RegisterFlagValidatorOrDie(bool const*, bool (*)(char const*, bool)) in libbrpc.a(reloadable_flags.cpp.o) "google::RegisterFlagValidator(double const*, bool (*)(char const*, double))", referenced from: brpc::RegisterFlagValidatorOrDie(double const*, bool (*)(char const*, double)) in libbrpc.a(reloadable_flags.cpp.o) "google::RegisterFlagValidator(int const*, bool (*)(char const*, int))", referenced from: __GLOBAL__sub_I_latency_recorder.cpp in libbrpc.a(latency_recorder.cpp.o) __GLOBAL__sub_I_variable.cpp in libbrpc.a(variable.cpp.o) __GLOBAL__sub_I_logging.cc in libbrpc.a(logging.cc.o) __GLOBAL__sub_I_mvariable.cpp in libbrpc.a(mvariable.cpp.o) __GLOBAL__sub_I_bthread.cpp in libbrpc.a(bthread.cpp.o) brpc::RegisterFlagValidatorOrDie(int const*, bool (*)(char const*, int)) in libbrpc.a(reloadable_flags.cpp.o) "google::RegisterFlagValidator(long long const*, bool (*)(char const*, long long))", referenced from: brpc::RegisterFlagValidatorOrDie(long long const*, bool (*)(char const*, long long)) in libbrpc.a(reloadable_flags.cpp.o) "google::RegisterFlagValidator(unsigned long long const*, bool (*)(char const*, unsigned long long))", referenced from: brpc::RegisterFlagValidatorOrDie(unsigned long long const*, bool (*)(char const*, unsigned long long)) in libbrpc.a(reloadable_flags.cpp.o) "google::GetCommandLineFlagInfo(char const*, google::CommandLineFlagInfo*)", referenced from: bvar::GFlag::describe(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, bool) const in libbrpc.a(gflag.cpp.o) brpc::FlagsService::set_value_page(brpc::Controller*, google::protobuf::Closure*) in libbrpc.a(flags_service.cpp.o) brpc::FlagsService::default_method(google::protobuf::RpcController*, brpc::FlagsRequest const*, brpc::FlagsResponse*, google::protobuf::Closure*) in libbrpc.a(flags_service.cpp.o) "leveldb::DB::Open(leveldb::Options const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, leveldb::DB**)", referenced from: brpc::SpanDB::Open() in libbrpc.a(span.cpp.o) "leveldb::Status::Status(leveldb::Status::Code, leveldb::Slice const&, leveldb::Slice const&)", referenced from: brpc::SpanDB::Index(brpc::Span const*, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >*) in libbrpc.a(span.cpp.o) brpc::SpanDB::RemoveSpansBefore(long long) in libbrpc.a(span.cpp.o) "leveldb::Options::Options()", referenced from: brpc::SpanDB::Open() in libbrpc.a(span.cpp.o) "leveldb::Status::ToString() const", referenced from: brpc::SpanDB::Open() in libbrpc.a(span.cpp.o) brpc::Span::dump_and_destroy(unsigned long) in libbrpc.a(span.cpp.o) "___CFConstantStringClassReference", referenced from: CFString in libbrpc.a(sys_string_conversions_mac.mm.o) CFString in libbrpc.a(foundation_util.mm.o) CFString in libbrpc.a(foundation_util.mm.o) CFString in libbrpc.a(foundation_util.mm.o) "_kCFAbsoluteTimeIntervalSince1970", referenced from: butil::Time::Now() in libbrpc.a(time_mac.cc.o) butil::Time::FromCFAbsoluteTime(double) in libbrpc.a(time_mac.cc.o) butil::Time::ToCFAbsoluteTime() const in libbrpc.a(time_mac.cc.o) butil::Time::NowFromSystemTime() in libbrpc.a(time_mac.cc.o) butil::Time::FromExploded(bool, butil::Time::Exploded const&) in libbrpc.a(time_mac.cc.o) butil::Time::Explode(bool, butil::Time::Exploded*) const in libbrpc.a(time_mac.cc.o) "_kCFAllocatorDefault", referenced from: butil::SysUTF8ToCFStringRef(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&) in libbrpc.a(sys_string_conversions_mac.mm.o) butil::SysUTF16ToCFStringRef(std::__1::basic_string<unsigned short, butil::string16_char_traits, std::__1::allocator<unsigned short> > const&) in libbrpc.a(sys_string_conversions_mac.mm.o) butil::SysUTF8ToNSString(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&) in libbrpc.a(sys_string_conversions_mac.mm.o) butil::SysUTF16ToNSString(std::__1::basic_string<unsigned short, butil::string16_char_traits, std::__1::allocator<unsigned short> > const&) in libbrpc.a(sys_string_conversions_mac.mm.o) "_kCFAllocatorNull", referenced from: butil::FilePath::GetHFSDecomposedForm(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&) in libbrpc.a(file_path.cc.o) butil::FilePath::CompareIgnoreCase(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&) in libbrpc.a(file_path.cc.o) butil::SysWideToUTF8(std::__1::basic_string<wchar_t, std::__1::char_traits<wchar_t>, std::__1::allocator<wchar_t> > const&) in libbrpc.a(sys_string_conversions_mac.mm.o) butil::SysUTF8ToWide(butil::BasicStringPiece<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > const&) in libbrpc.a(sys_string_conversions_mac.mm.o) "_kCFErrorDescriptionKey", referenced from: operator<<(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, __CFError*) in libbrpc.a(foundation_util.mm.o) "_objc_autorelease", referenced from: butil::mac::CFTypeRefToNSObjectAutorelease(void const*) in libbrpc.a(foundation_util.mm.o) "_objc_opt_class", referenced from: butil::InitThreading() in libbrpc.a(platform_thread_mac.mm.o) "_objc_opt_isKindOfClass", referenced from: __CTFont const* butil::mac::CFCast<__CTFont const*>(void const* const&) in libbrpc.a(foundation_util.mm.o) "_objc_release", referenced from: butil::mac::NSObjectRelease(void*) in libbrpc.a(foundation_util.mm.o) butil::mac::SetOverrideOuterBundle(NSBundle*) in libbrpc.a(bundle_locations.mm.o) butil::mac::SetOverrideFrameworkBundle(NSBundle*) in libbrpc.a(bundle_locations.mm.o) butil::mac::SetOverrideOuterBundlePath(butil::FilePath const&) in libbrpc.a(bundle_locations.mm.o) butil::mac::SetOverrideFrameworkBundlePath(butil::FilePath const&) in libbrpc.a(bundle_locations.mm.o) "_objc_retain", referenced from: butil::mac::NSObjectRetain(void*) in libbrpc.a(foundation_util.mm.o) butil::mac::SetOverrideOuterBundle(NSBundle*) in libbrpc.a(bundle_locations.mm.o) butil::mac::SetOverrideFrameworkBundle(NSBundle*) in libbrpc.a(bundle_locations.mm.o) butil::mac::SetOverrideOuterBundlePath(butil::FilePath const&) in libbrpc.a(bundle_locations.mm.o) butil::mac::SetOverrideFrameworkBundlePath(butil::FilePath const&) in libbrpc.a(bundle_locations.mm.o) ld: symbol(s) not found for architecture arm64 **To Reproduce (复现方法)** cmake -DCMAKE_APPLE_SILICON_PROCESSOR=arm64 -DCMAKE_INSTALL_PREFIX=/brpc/builddir/output .. 编译成功 编写测试程序 link链接libbrpc.a的时候 **Expected behavior (期望行为)** 链接成功 **Versions (各种版本)** 型号名称: MacBook Pro 型号标识符: MacBookPro17,1 芯片: Apple M1 核总数: 8(4性能和4能效) 内存: 16 GB 系统版本: macOS 12.6 (21G115) 内核版本: Darwin 21.6.0 启动宗卷: Macintosh HD OS: Compiler: clang++ brpc: latest protobuf: v3.0.0 **Additional context/screenshots (更多上下文/截图)** -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: dev-unsubscr...@brpc.apache.org.apache.org For queries about this service, please contact Infrastructure at: us...@infra.apache.org --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@brpc.apache.org For additional commands, e-mail: dev-h...@brpc.apache.org