如何用clang -emit-llvm编译并保留 "未使用的 "C声明
上下文 我正在为需要大量运行时功能的语言编写编译器.我正在使用LLVM作为后端,因此CodeGen需要所有这些运行时类型(功能,结构等)的类型,而不是使用LLVM API手动定义所有这些类型C中的标题并编译到编译器可以使用LLVMParseBitcodeInContext2的比特码. 问题 我遇到的问题是,clang似乎并没有保留任何函数定义未使用的任何类型声明. clang具有-femit-all-decls的声音,就像它应该解决的那样,但不幸的是,谷歌搜索表明它是错误的,因为它仅影响未使用的定义,而不是声明. . 我可能会想到,如果我只将标题编译到.gch文件中,我可以以相同的方式将其拉入.gch(因为文档说它们使用"相同的"比特码格式"),但是对error: Invalid bitcode signature所以某些东西必须有所不同.也许差异足够小,可以解决? 是否有任何建议或相对容易的解决方法可以在复杂的运行时自动化?如果有人在接近此通用用例中有完
42 2024-04-06
编程技术问答社区
iOS库到BitCode
我最近下载了Xcode 7 beta,Xcode抱怨我的一些C库未被编译到比特码中.我将如何告诉Clang生产与iOS兼容的比特码?我在Stackoverflow上看到了类似的答案,但是我不知道它们是否适用于iOS的生产比特库. 编辑: 我正在使用正确的设置-fembed -bitcode,但是当我尝试存档时,我会收到错误: LD:警告:忽略文件xxxx/xxxx,为存档构建了文件,而不是链接的架构(ARM64). 当我使用-fembed-bitcode-Marker时,我可以存档,但是我会发现错误: 由于XX/XX仅使用比特代码标记构建,因此无法生成完整的比特码捆绑包.该库必须是从启用比特码的Xcode存档构建中生成的. 关于出了什么问题的想法?图书馆正在成功编译,但它不允许我存档.我创建了一个简单的添加功能,并将其制成库,并且得到了相同的症状,因此这不是我正在编译的库. 编辑2: 您必须使用比特码同时构建ARM64和ARMV7版本,然后将其同时使用Lipo.使
22 2024-04-06
编程技术问答社区
如何使clang编译为llvm IR
我希望Clang将我的C/C ++代码编译到LLVM比特代码,而不是二进制可执行文件.我该如何实现? ,如果我有LLVM比特码,我如何将其进一步编译为二进制可执行文件? 我想在编译到二进制可执行文件之前将自己的一些代码添加到LLVM比特码. 解决方案 给定一些C/C ++文件foo.c: > clang -S -emit-llvm foo.c 生产foo.ll这是一个llvm ir文件. -emit-llvm选项也可以直接传递给编译器前端,而不是通过-cc1: 将驱动程序传递给驱动程序. > clang -cc1 foo.c -emit-llvm 用IR产生foo.ll. -cc1添加了一些很酷的选项,例如-ast-print.查看-cc1 --help以获取更多详细信息. 要进一步编译llvm ir以组装,请使用llc工具: > llc foo.ll 用汇编生产foo.s(默认为您运行的机器体系结构). llc是LLVM工具之
14 2024-04-06
编程技术问答社区
iOS MobileVLCKit存档问题
尝试存档我的项目时,我得到了这个错误: ld: bitcode bundle could not be generated because '/Users//MobileVLCKit/MobileVLCKit.framework/MobileVLCKit(VLCEmbeddedDialogProvider.o)' was built without full bitcode. All object files and libraries for bitcode must be generated from Xcode Archive or Install build file '/Users//MobileVLCKit/MobileVLCKit.framework/MobileVLCKit' for architecture arm64 clang: error: linker command failed with exit code 1 (use -v to see invoc
16 2024-03-03
编程技术问答社区
归档期间的比特码编译从未完成
我正在准备一个通过测试飞行来进行临时发行的应用程序.我已经(成功地)踏上了这篇Ray Wenderlich文章中的所有准备步骤( .com/48750/testflight-sdk-tutorial ),我有信心证书,应用ID和配置资料都是正确创建的,并且以适当的工作方式创建.我正在以Xcode存档项目的步骤.我在档案过程中选择了这些设置: 我选择导出: 我选择"为临时部署保存",因为我们的计划是使用测试飞行将应用程序分发给我们的测试人员. i do 相信这是正确的选择(而不是"用于企业部署"): 这是默认设置,我没有更改它的特定理由,尽管我很感谢您可能拥有的任何见解: 再次,这两者的默认选项.默认情况下未选中第一个,默认情况下将检查第二个: 当我到达此屏幕时,旋转器似乎永远是 问题似乎是,一旦到达了它是从比特码中编译的部分,它旋转和旋转,没有表现出完成的迹象.当我构建该应用程序以在连接到MBP的设备上运行时,通常在几秒钟内快速编译.是什么会导致这种不
10 2024-03-03
编程技术问答社区
'无效的比特码版本(Producer: '902.0.39.2_0' Reader: '900.0.37_0')'
我正在使用 xcode 9.0 . 我的豆荚文件: pod 'Alamofire', '~> 4.3' pod 'SwiftyJSON' pod 'AlamofireSwiftyJSON' pod 'KSToastView', '0.5.7' pod 'SDWebImage', '~> 4.0' pod 'NVActivityIndicatorView' pod 'Firebase/Core' pod 'Firebase/Messaging' pod 'CarbonKit' pod 'SBPickerSelector' pod 'SwiftyStoreKit' pod 'Fabric' pod 'Crashlytics' pod 'SAMKeychain', '1.5.2' 我的错误日志: ld:无法在比特代码捆绑包中重新恢复对象文件:'无效的比特代码 版本(制作人:'902.0.39.2_0'读者:'900.0.37_0')',使用liblto 版本
20 2024-03-03
编程技术问答社区
应用程序处理错误。未预期的CFBundleExecutable密钥
我正在尝试使用启用比特码提交给Apple.每次我提交时,我都会收到这封电子邮件. 我们在您最近的" MyAppp"交付中发现了一个或多个问题.要处理您的交付,必须纠正以下问题: 出乎意料的 cfbundleExecutable键 - '/payload/myappp.app.app/base.lproj'的捆绑包不包含可执行的捆绑包.如果此捆绑包有意不包含可执行文件,请考虑从其info.plist中删除 cfbundleexecutable键,并使用 bndl 的cfbundlepackagagagagagagagagagagagagagatype.如果此捆绑包是第三方框架的一部分,请考虑与该框架的开发人员联系以解决此问题. 纠正了这些问题后,您就可以重新装置校正后的二进制文件. 我的应用程序的info.plist有以下内容. 每个POD的可可豆荚都有info.plist at 所有豆荚都在这里. 解决方案 我面临同一问题.最后我得到了解决方案
8 2024-03-03
编程技术问答社区
上传至iTunesConnect时突然出错。ITMS-90635 无效的Mach-O格式/ENABLE_BITCODE
上周,我能够将IPA上传到iTunesConnect上.但是截至今天,我在通过应用程序加载器上传时会遇到以下错误: 错误itms-90635:"无效的MACH-O格式.捆绑中的Mach-O" application.app/frameworks/pspdfkit.framework.framework"与主捆绑中的Mach-O不一致. -O包含ARMV7(机器代码)和ARM64(机器代码),而嵌套的捆绑器Mach-O包含ARMV7(比特码和机器代码)和ARM64(BitCode和Machine Code).验证平台的所有目标是否具有一个Enable_bitcode构建设置的一致值." 我知道这里提出的解决方案:但是,我不知道如何将任何建议的解决方案应用于Xamarin IOS项目.我没有使用任何POD,而是在为PSPDFKIT使用一个绑定库,我已经按照官方文档中所述 https://pspdfkit.com/guides/guides/ios/current/current/
12 2024-03-03
编程技术问答社区
在启用Bitcode的情况下导出时出错(未找到架构armv7的符号)。
我有一个相当古老的项目,将最低部署目标设置为iOS 8.4.出于技术原因,BitCode 必须启用.该项目构建并运行良好.但是,当试图导出存档的构建时,事情出了问题.我正在使用Xcode 8.2.1. 当我使用启用选项Rebuild from bitcode创建一个测试构建(用企业证书签名)时,导出在编译BitCode的舞台上失败. 这是日志的相关部分: "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../lib/clang/8.0.0/lib/darwin/libclang_rt.ios.a" "-o" "/private/var/folders/qy/cgq_nq7x2tx1j3z__7f4yx100000gn/T/WX9bPu/.armv7.out"
14 2024-03-03
编程技术问答社区
在导出归档文件进行特别分发时未能验证比特码--尝试了Xcode 8.3.3和Xcode 9
包含我们框架的应用程序抱怨丢失的比特码在导出临时发行档案时. 我已经浏览了苹果在这方面提供的文档 技术注释TN2432 .文档列出的可能的根本原因与我们的场景不类似. (我们不使用汇编说明或具有错误的信息. 我已经经历了SO 上发布的类似问题 error tim bitcode error已启用(符号未找到架构ARMV7) 是否有可能创建一个通用的通用使用比特码的iOS框架? iOS 9 中的新警告 但是提供的解决方案似乎不起作用. 我尝试在用户定义的构建设置中添加BITCODE_GENERATION_MODE标志.我还尝试在框架目标中的其他C标志中添加-fembed-bitcode -marker&-fembed-bitcode. 我使用建议命令 otool -l -arch arm64 | grep __LLVM 它显示2个片段 segname __llvm segname __llv
10 2024-03-03
编程技术问答社区
xcodebuild 7.3不能启用比特码
我正在为iOS开发一个嵌入式框架.为了制作通用脂肪(使用模拟器和设备切片),我用xcodebuild和lipo命令创建了一个聚合目标,就像许多人一样. . 使用xcode 7.x i必须使用bitcode_generation_mode = bitcode添加用户定义的设置才能启用它,但是自上次Xcode 7.3版本以来,这已经停止工作. 我尝试了我在互联网上发现的所有内容,例如添加OTHER_CFLAGS="-fembed-bitcode",但是任何事情都像以前一样工作... 我在构建日志中看到了这一点: enable_bitcode始终不,无论我做. 自从Xcode 7.3? 以来 解决方案 我昨天遇到了类似的问题.经过一番研究后,从任何XCode目标中的"运行脚本"构建阶段运行xcodebuild时出现的问题似乎与要使用的工具链的明确规范有关,并与Env Variable TOOLCHAINS一起完成./p> 因此,在Apple发布Xcode
54 2023-12-20
编程技术问答社区
由于静态框架(.framework)是在没有完整比特码的情况下建立的,所以无法生成比特码包(在归档时)
我们正在尝试在静态框架中充分启用比特码,但是当我们能够在模拟器或设备上构建框架时,我们在将应用程序集成时会收到以下错误. . ld: bitcode bundle could not be generated because '.framework/p-iOS(PTFWOperationPrepareTransaction.o)' was built without full bitcode. All object files and libraries for bitcode must be generated from Xcode Archive or Install build file '.framework/p-iOS' for architecture armv7 我们已经通过otool -l Versions/A/p-iOS | grep __bitcode验证了比特代码状态,并且似乎正确启用了 . 以下是我们 bitcode 的项目设置, 和以下是
10 2023-12-20
编程技术问答社区
Xcode中的比特码签名失败
我将xcode更新为最后一个版本,现在,当我尝试编译项目时,我会遇到一个错误"无效的比特码签名",Hovewer,我的项目的比特码被禁用.我该如何修复?我应该更改正确签名我的比特码? 我的podfile: source 'https://github.com/CocoaPods/Specs.git' platform :ios, '8.0' use_frameworks! target 'MyProjectName' do pod 'Realm' pod 'CorePlot' pod 'GoogleMaps' end 我已经检查了,一切都很好. 解决方案 我不确定您是否与我相同.我只有在尝试使用iPhone设备进行测试时才有这个问题.事实证明,只有构建活动架构的调试配置设置为否.设置为"是"之后,我可以使用iPhone进行测试. 其他解决方案 我遇到了此错误,但是它只有在为iOS 10.3 iPad构建时才发生(尽管使用了iOS 10.3 iPhon
22 2023-12-20
编程技术问答社区
Xcode 7 当我为一个项目禁用比特码时会发生什么?
我试图了解禁用项目对项目的含义是什么.据我了解,Apple打算将其用于现场优化的某些API更改.但是,我正在使用的许多框架/可可码不使用比特代码,因此我必须将其禁用.我应该尝试解决问题,而不仅仅是禁用比特码吗?启用了用比特码运送二进制的优点是什么? 禁用与Cocoapods或其他第三方库的项目禁用比特码的含义是什么? 解决方案 如果您已禁用了Apple将来不会自动对其进行优化.阅读以下Apple文档的详细信息. 比特码是编译程序的中间表示.应用 您上传到包含比特代码的iTunes Connect将被编译,并且 在App Store上链接.包括比特码将允许苹果 将来重新优化您的应用二进制文件,而无需提交 您的应用程序的新版本到商店. Xcode隐藏在构建时间默认情况下生成的符号,因此 苹果不可读取.仅当您选择在 将您的应用程序上传到iTunes Connect将发送到符号 苹果.您必须包括从Apple接收崩溃报告的符号. 注意:对于iOS应用程序,比特代码是
24 2023-12-20
编程技术问答社区
确定二进制文件是否包含比特码的方法似乎不再有效了
在我搜索一种确定iOS二进制物是否使用比特码构建的方法时,我找到了以下帖子: XCode7 支持的比特码 在这里,建议使用以下方法来确定二进制中是否存在比特码: $ otool -l libName.o | grep __LLVM 但是,我已经在几个二进制文件上尝试过,但没有成功.其中一个是一个库,我知道自从我更改项目上的标志以来,构建错误就消失了.其中另一个是用于文件扩展名的二进制文件,使用存档构建.另一个用于Apple Watch. 我相信上述所有二进制文件都应该有比特码,但是我总是从上述命令中获得任何结果. 有人知道还有其他与最新二进制文件一起使用的方法吗? 我正在使用Xcode 7.2和10.10.5,以防万一很重要. 更新:这是一个应该具有比特码的文件的示例,但上面的命令不会返回任何内容.它是来自测试文件提供商的二进制文件.我通过存档生成了它,并以临时部署部署,并确保Bit代码设置为目标. https://www.dropbox
20 2023-12-20
编程技术问答社区
ld: -bundle和-bitcode_bundle不能一起使用
我正在使用比特码支持(-fembed-bitcode)构建llvm/clang 3.7.由于错误,某些模块无法链接: ld:-bundle和-bitcode_bundle(Xcode设置enable_bitcode = yes) 不能一起使用clang:error:linker命令失败,出口失败 代码1(使用-v查看调用) 完整错误输出: 链接cxx共享模块../../lib/bugpointpasses.dylib cd /卷/transcend/dev/src/llvm_37_ios_any_build/tools/bugpoint-passes 2 cmakefiles/bugpointpass.dir/link.txt -verbose = 1/usr/bin/c ++ -fembed -bitCode -os -os -STD = C ++ 11 -Stdlib = libc ++ -Arch Arm64 -Mios -version -min = 8.0 -
10 2023-12-20
编程技术问答社区
为iOS 9启用位码会将IPA大小增加3倍,这是应用商店上的大小吗?
iOS 9之前,我们的IPA尺寸约为6MB.通过Xcode 7归档和导出IPA后,我们的IPA增加到约17MB.经过进一步调查,我们发现导致大型文件大量跳跃的导出设置中启用"比特码"选项. 我的问题是:如果我们启用此选项,我们的IPA尺寸会在商店中为17MB吗?还是Apple用捆绑包做某事以使其大小与以前大小相同(6MB). 现在没有太多有关比特码的信息,在提交商店之前,我想知道. 6MB和17MB足够差异. 解决方案 比特码是编译程序的中间表示.启用它将增加开发人员正面的构建(IPA). iOS可以在不同的CPU(I386,X86_64,ARM,ARM64等)上运行,如果您想在任何iOS设置上运行程序,则该程序应包含每个平台的对象代码.运行程序时,OS会读取"目录",并寻找与OS CPU相对应的切片.例如,如果您在X86_64上运行,则OS将加载X86_64的对象代码并运行程序. 当前,AppStore上的所有应用都包含用于ARM和ARM64 CPU的对
12 2023-12-20
编程技术问答社区
启用bitcode Xcode 7.1
在构建iOS9的应用程序时,我在Xcode 7.1中遇到了此错误:(...)Myokit(Tlmhub.o)'不包含比特代码.您必须使用启用比特码(Xcode设置enable_bitcode),从供应商获得更新的库或禁用此目标的比特码.用于建筑ARM64 clang:错误:链接器命令因出口代码1失败(使用-V查看调用) 构建模拟应用程序时,它可以工作. 我一直在搜索,找不到启用比特码的选项.有什么想法吗? 解决方案 在项目导航器中,选择您的项目: 然后选择您的项目,单击"构建设置",然后搜索比特码,然后将比特代码设置为YES. 确保单击所有选项,而不是基本选项. 其他解决方案 问题是MyoKit未通过启用比特码来编译.不幸的是,直到SDK支持比特码,您必须将其禁用为您的项目.
38 2023-12-20
编程技术问答社区
Google Analytics libAdIdAccess.a不包含比特码
xcode 7 beta 3刚刚安装了一些"附加组件"(现在版本7.0 beta 3(7a152u)),现在我遇到了编译器错误: ld: '//Vendor/Analytics/GoogleAnalytics/libAdIdAccess.a(TAGActualAdIdAccess.o)' does not contain bitcode. You must rebuild it with bitcode enabled (Xcode setting ENABLE_BITCODE), obtain an updated library from the vendor, or disable bitcode for this target. for architecture armv7 clang: error: linker command failed with exit code 1 (use -v to see invocation) 此Googl
18 2023-12-20
编程技术问答社区
Xcode 7和ENABLE_BITCODE=YES设置不起作用
我在Xcode中的新Enable_bitcode设置周围遵循了几个线程,也尽可能多地尝试了(承认我不是Xcode Pro),但仍然无法将项目编译用于我的测试电话吗? 我的应用程序在模拟器上运行良好,但我无法将其部署到iPhone上进行测试.在后一个我刚刚安装了iOS 9 beta. 现在,这是我收到的错误消息.看来设置不会影响Parse.com Lib,这是我项目的一部分吗? 我该如何将项目部署到手机上?感谢您的建议. Ld /Users/xxxxxx/Library/Developer/Xcode/DerivedData/graffiti- bnmizxueojwiqcbbnsvilljhosrw/Build/Products/Debug-iphoneos/Pods/Parse.framework/Parse normal armv7 cd /Users/xxxxxx/Documents/DigitalTempusDev/graffiti/Pods export
14 2023-12-20
编程技术问答社区