找不到 -lDoubleConversion 的库

Posted

技术标签:

【中文标题】找不到 -lDoubleConversion 的库【英文标题】:library not found for -lDoubleConversion 【发布时间】:2018-11-06 19:47:27 【问题描述】:

我尝试在 XCode 上构建,但出现 ld: library not found for -lDoubleConversion 错误。我可以建立react-native run-ios。可以,但是 XCode 无法构建...

ld:警告:找不到选项“-L/Users/xxxxx/Library/Developer/Xcode/DerivedData/xxxxx/Build/Products/Debug-iphonesimulator/DoubleConversion”的目录 ld:警告:找不到选项“-L/Users/xxxxx/Library/Developer/Xcode/DerivedData/xxxxx/Build/Products/Debug-iphonesimulator/Folly”的目录 ld:警告:找不到选项“-L/Users/xxxxx/Library/Developer/Xcode/DerivedData/xxxxx/Build/Products/Debug-iphonesimulator/GTMOAuth2”的目录 ld:警告:找不到选项“-L/Users/xxxxx/Library/Developer/Xcode/DerivedData/xxxxx/Build/Products/Debug-iphonesimulator/GTMSessionFetcher”的目录 ld:警告:找不到选项“-L/Users/xxxxx/Library/Developer/Xcode/DerivedData/xxxxx/Build/Products/Debug-iphonesimulator/Google-Maps-iOS-Utils”的目录 ld:警告:找不到选项“-L/Users/xxxxx/Library/Developer/Xcode/DerivedData/xxxxx/Build/Products/Debug-iphonesimulator/GoogleToolboxForMac”的目录 ld:警告:找不到选项“-L/Users/xxxxx/Library/Developer/Xcode/DerivedData/xxxxx/Build/Products/Debug-iphonesimulator/Protobuf”的目录 ld:警告:找不到选项“-L/Users/xxxxx/Library/Developer/Xcode/DerivedData/xxxxx/Build/Products/Debug-iphonesimulator/React”的目录 ld:警告:找不到选项“-L/Users/xxxxx/Library/Developer/Xcode/DerivedData/xxxxx/Build/Products/Debug-iphonesimulator/glog”的目录 ld:警告:找不到选项“-L/Users/xxxxx/Library/Developer/Xcode/DerivedData/xxxxx/Build/Products/Debug-iphonesimulator/leveldb-library”的目录 ld:警告:找不到选项“-L/Users/xxxxx/Library/Developer/Xcode/DerivedData/xxxxx/Build/Products/Debug-iphonesimulator/nanopb”的目录 ld:警告:找不到选项“-L/Users/xxxxx/Library/Developer/Xcode/DerivedData/xxxxx/Build/Products/Debug-iphonesimulator/react-native-google-maps”的目录 ld:警告:找不到选项“-L/Users/xxxxx/Library/Developer/Xcode/DerivedData/xxxxx/Build/Products/Debug-iphonesimulator/react-native-maps”的目录 ld:警告:找不到选项“-L/Users/xxxxx/Library/Developer/Xcode/DerivedData/xxxxx/Build/Products/Debug-iphonesimulator/yoga”的目录 ld: clang:错误:链接器命令失败,退出代码为 1(使用 -v 查看调用)

【问题讨论】:

【参考方案1】:

对我来说,我解决了只打开MyAppName.xcworkspace 而不是MyAppName.xcodeproj,然后构建。

【讨论】:

对我来说也是如此……但为什么呢? 哇,非常感谢它解决了我的问题。但是,如果您对此修复有所了解会更好。 至于为什么可能是因为您使用的是 cocoapods 并且 pod 仅包含在工作区中,因此从 xcodeproj 构建时不要构建。 对于像我一样刚接触 React Native 的人,你可以找到 。 xcworkspace at [project_name]/ios/.xcworkspace — 在 Xcode 中而不是 *.xcodeproj 中打开它(我花了半个小时来混淆 xcworkspace 和 xcodeproj) 这很奇怪......我在 xcode 中保存了 ios 项目,它总是工作正常......但现在我不得不删除这个项目并再次添加它,它开始工作......无论如何谢谢【参考方案2】:

我在升级到 RN 0.59 后不久就遇到了这个问题。

对我有用的解决方案是删除 ios/build 文件夹,然后执行以下操作:

cd ios

pod install

当我这样做时,我看到一个关于 Folly 的错误,人们建议这样做:

pod deintegrate

pod install

我这样做了,但它仍然会抛出关于 Folly 的错误,所以我删除了 Podfile.lock,因为 pods 保留了与 RN 0.59 不兼容的旧版本 Folly。

注意:我发现有人说不建议删除整个锁定文件。相反,您应该只删除锁定文件中的相关行,即与 Folly 相关的行。我已经删除了锁定文件,但一切正常。

我跑了pod update,它更新了一堆东西并成功完成。

我下次运行 pod install 时,它生成了一个很好的绿色成功安装列表。

然后我又做了react-native run-ios,它在一段时间内第一次工作,除了它产生了红屏死机。

所以我从 iOS 模拟器设备上删除了我的应用程序,然后运行:

rm -rf node_modules

npm install

killall -9 node

killall -9 node 只是为了杀死 Metro Bundler。这是我最喜欢的全面命令。如果你在你的机器上运行了 12 个 node.js API,也许可以改为执行sudo lsof -i :8081 之类的操作,并找到 Metro Bundler(s) 的进程 ID 并通过 PID 杀死它们。例如,如果您看到 Metro Bundler 以 PID 27322 运行,则执行kill -9 27322

然后我在一个独立的终端中运行它:

npm start -- --reset-cache

回到VS Code集成终端:

react-native run-ios

成功了!!!!!!!!!

然后我跑了:

react-native run-android

这可行,但在模拟器设备上卡在了 0%,所以我从模拟器中删除了 APK 并再次运行 react-native run-android

成功了!!!!!!!!!

【讨论】:

热爱热情 在我添加另一个包并执行npm i后它停止工作@【参考方案3】:

当我在终端而不是 XCode 上构建项目时,它发生在我身上,它发生在 CI 和我的笔记本电脑上。

发生这种情况是因为您正在构建项目 app.xcodeproj 而不是工作区 app.xcworkspace

因此,您必须将调用中的参数从 -project app.xcodeproj 更改为 -workspace app.xcworkspace。请注意,参数名称也会发生变化,而不仅仅是值。

现在,一个完整的调用示例。

发件人:

xcodebuild -sdk iphoneos -configuration yourconfig -project app.xcodeproj -scheme yourscheme build -UseModernBuildSystem=YES CODE_SIGN_STYLE=Automatic

收件人:

xcodebuild -sdk iphoneos -configuration yourconfig -workspace app.xcworkspace -scheme yourscheme build -UseModernBuildSystem=YES CODE_SIGN_STYLE=Automatic

【讨论】:

【参考方案4】:

XCode 找不到 lDoubleConversion 库,需要将该库添加到 cocoa pods 文件中。

您可以按照以下步骤轻松完成此操作

1.将库文件添加到您的 podfile 中

pod 'DoubleConversion', :podspec => './../node_modules/react-native/third-party-podspecs/DoubleConversion.podspec'

2.删除Podfile.lock

3.运行 pod install

4.在xcode链接框架和库中添加DoubleConversion.a

5.清理项目并重新构建。

应该可以的。

【讨论】:

在哪里可以找到 DoubleConversion.a 来添加它? 不确定 DoubleConversion.a,但 DoubleConversion 库位于 node_modules/react-native/third-party 中【参考方案5】:

我只是将部署目标从 10 更新到 11.4 并且它工作正常

【讨论】:

【参考方案6】:

经过 3 天的努力,我找到了以下解决方案。

    检查是否需要打开 MyAppName.xcworkspace 而不是 MyAppName.xcodeproj 关闭 Xcode 并尝试将 Pod deintegrate 然后 Pod Install 将构建设置从旧构建系统更改为新构建系统。

对我来说,选项 3 成功了。

【讨论】:

【参考方案7】:

以下步骤对我有用:

    删除 use_frameworks!来自 ios/Podfile。

    target 'AwesomeProject' do
        # use_frameworks!
        ...
    end
    

    在 ios/Podfile 中添加 DoubleConversion pod

    target 'AwesomeProject' do
        # use_frameworks!
        ...
        pod 'DoubleConversion', :podspec => '../node_modules/react-native/third-party-podspecs/DoubleConversion.podspec'
    end
    

    清除豆荚。

    pod deintegrate
    
    pod rm Podfile.lock
    

    重新安装 pod

    pod install --repo-update --verbose
    

    打开 AwesomeProject.xcworkspace 并运行您的应用程序。

希望这对某人有帮助:)

【讨论】:

@RocBoronat 当然,这只是意味着删除该文件。选项 '-r' 不是必需的,因为它只是一个文件,而不是文件夹;根据文件的权限和系统中的用户,您可能需要“-f”。 哦,是的,我明白了。但是你写了pod rm Podfile.lock。也许有人因此而迷路了。【参考方案8】:

在 Podfile 中使用 platform :ios, '10.0' 而不是 platform :ios, '11.0'。

【讨论】:

【参考方案9】:

我用了几个小时尝试了其他所有方法, 有效的是在我的 Podfile 中设置:

platform :ios, '10.0'

Info.plist 中的iOS Deployment Target Version 相同。他们是不同的。

【讨论】:

【参考方案10】:

我对 iOS 构建过程有点陌生,我将分享我的解决方案,希望可以为任何人节省数小时的挫败感。

就我而言,它只是一个陈旧/糟糕的构建。确保您在 Xcode <YOUR_APP>.xcworkspace 中打开了正确的 Xcode 文件夹,在 Xcode 的顶部菜单中,选择 Product -> Clean Build Folder

【讨论】:

【参考方案11】:

有时在/ios 中很容易pod install 然后关闭xcode 并重新打开它并重建。为我工作。

【讨论】:

【参考方案12】:

我的问题是我使用 cocoapods 迁移到 React Native 0.60,并且我忽略了更新我的 Fastlane 构建过程以使用 .xcworkspace 而不是 .xcproj 文件进行构建。

我通过观察我可以使用 Xcode 构建和存档构建但我的 Fastlane 构建失败来缩小范围。菜鸟。

【讨论】:

【参考方案13】:

通过在 xcode 上为方案激活 Find Implicit Dependencies 解决了我项目中的问题。

【讨论】:

【参考方案14】:

对我来说:

将部署目标更改为 11.0, 还将 AppNameTEST 部署目标更改为 11.0

rm -rf node_modules

npm install

pod update

pod install

【讨论】:

【参考方案15】:

尝试检查您的项目是否在真正的 ios 设备上运行良好,因为在我的情况下,此错误仅适用于在模拟器上构建,因为我有带有 m1 pro 芯片的 mac。

要修复它,您需要检查“Build Settings”->“Targets”->“Architectures”->“Excluded Architectures”并确认 arm64 未从项目中排除,如果排除,则应将其删除以运行模拟器在 m1 芯片上。

【讨论】:

以上是关于找不到 -lDoubleConversion 的库的主要内容,如果未能解决你的问题,请参考以下文章

ld:找不到 -lPayPalMobile ios 的库

OSX ld:找不到 -lssl 的库

找不到 -ljschelpers 的库

ld: 找不到 -lnetcdf 的库

ld:找不到 -lstdc++.6 的库 - Xcode 10

Cocoapods:找不到重复的库