找不到 -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 的库的主要内容,如果未能解决你的问题,请参考以下文章