Skip to content
This repository was archived by the owner on Sep 26, 2025. It is now read-only.
This repository was archived by the owner on Sep 26, 2025. It is now read-only.

Undefined symbols for architecture x86_64 (glog), w/ use_frameworks!, Hermes #3861

@moriyuu

Description

@moriyuu

🐛 Bug Report

When I build my react-native app with Xcode I get the following error.
I seem to be getting an error about glog in NotificationService, which is Dependencies in myapp.

Undefined symbols for architecture x86_64:
  "google::ErrnoLogMessage::ErrnoLogMessage(char const*, int, int, long long, void (google::LogMessage::*)())", referenced from:
      folly::fibers::StackCache::borrow(unsigned long) in libFlipper-Folly.a(GuardPageAllocator.o)
      folly::fibers::StackCache::StackCache(unsigned long, unsigned long) in libFlipper-Folly.a(GuardPageAllocator.o)
      folly::fibers::StackCache::~StackCache() in libFlipper-Folly.a(GuardPageAllocator.o)
  "google::InitVLOG3__(google::SiteFlag*, int*, char const*, int)", referenced from:
      folly::EventBase::~EventBase() in libFlipper-Folly.a(EventBase.o)
      folly::EventBase::SmoothLoopTime::setTimeInterval(std::__1::chrono::duration<long long, std::__1::ratio<1l, 1000000l> >) in libFlipper-Folly.a(EventBase.o)
      folly::EventBase::loopBody(int, bool) in libFlipper-Folly.a(EventBase.o)
      folly::EventBase::nothingHandledYet() const in libFlipper-Folly.a(EventBase.o)
      folly::EventBase::bumpHandlingTime() in libFlipper-Folly.a(EventBase.o)
      folly::EventBase::terminateLoopSoon() in libFlipper-Folly.a(EventBase.o)
      folly::EventBase::SmoothLoopTime::SmoothLoopTime(std::__1::chrono::duration<long long, std::__1::ratio<1l, 1000000l> >) in libFlipper-Folly.a(EventBase.o)
      ...
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

image

To Reproduce

I have enabled use_frameworks! (dependent library constraints), Hermes and Flipper are also enabled.

Podfile (excerpt) ↓. I have also added some workarounds in reference to other issues.

require_relative '../node_modules/react-native/scripts/react_native_pods'
require_relative '../node_modules/@react-native-community/cli-platform-ios/native_modules'

target_version = '11.0'

platform :ios, target_version

target 'myapp' do
  use_frameworks! :linkage => :static

  config = use_native_modules!

  use_react_native!(
    :path => config[:reactNativePath],
    # to enable hermes on iOS, change `false` to `true` and then install pods
    :hermes_enabled => true
  )

  # Enables Flipper.
  #
  # Note that if you have use_frameworks! enabled, Flipper will not work and
  # you should disable these next few lines.
  # https://github.com/facebook/flipper/blob/2e9ab310bd135e94b806916412d447c0e9ee3de9/react-native/ReactNativeFlipperExample/ios/Podfile#L30
  use_flipper!({ 'Flipper' => '0.150.0', 'Flipper-Folly' => '2.6.10', 'Flipper-DoubleConversion' => '3.2.0', 'Flipper-Glog' => '0.5.0.3', 'Flipper-PeerTalk' => '0.0.4', 'OpenSSL-Universal' => '1.1.1100' })

  # https://fbflipper.com/docs/getting-started/ios-native/
  #
  # If you use `use_frameworks!` in your Podfile,
  # uncomment the below $static_framework array and also
  # the pre_install section.  This will cause Flipper and
  # it's dependencies to be built as a static library and all other pods to
  # be dynamic.
  #
  # NOTE Doing this may lead to a broken build if any of these are also
  #      transitive dependencies of other dependencies and are expected
  #      to be built as frameworks.
  $static_framework = [
    'FlipperKit', 'Flipper', 'Flipper-Folly',
    'CocoaAsyncSocket', 'ComponentKit', 'Flipper-DoubleConversion',
    'Flipper-Glog', 'Flipper-PeerTalk', 'Flipper-RSocket', 'Yoga', 'YogaKit',
    'CocoaLibEvent', 'OpenSSL-Universal', 'boost-for-react-native', 'Flipper-Fmt',
  ]
  pre_install do |installer|
    Pod::Installer::Xcode::TargetValidator.send(:define_method, :verify_no_static_framework_transitive_dependencies) {}
    installer.pod_targets.each do |pod|
      if $static_framework.include?(pod.name)
        def pod.build_type;
          Pod::BuildType.static_library
        end
      end
    end
  end

  post_install do |installer|
    installer.pods_project.targets.each do |target|
      # https://github.com/facebook/react-native/issues/32451#issuecomment-1162994787
      if target.name == "RCT-Folly"
        target.build_configurations.each do |config|
          config.build_settings['HEADER_SEARCH_PATHS'] = "\"$(PODS_TARGET_SRCROOT)\" \"$(PODS_ROOT)/boost\" \"$(PODS_ROOT)/DoubleConversion\" \"$(PODS_ROOT)/libevent/include/\" \"$(PODS_ROOT)/fmt/include\" \"$(PODS_ROOT)/glog\""
          config.build_settings['OTHER_LDFLAGS'] = "\"-Wl,-U,_jump_fcontext\" \"-Wl,-U,_make_fcontext\""
        end
      end
    end

    react_native_post_install(installer)
    __apply_Xcode_12_5_M1_post_install_workaround(installer)
  end
end

install pods and build RN app with xcode.

Environment

M1 pro
Flipper Desktop version: 0.150.0
XCode version: 13.3
react: 17.0.2
react-native: 0.66.3
flipperkit version in Pods: 0.150.0

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions