解决XCode编译异常clang: error: linker command failed with exit code 1

AI权益加码!Claude Code、Cursor等20+工具免费用! 购周边限时加赠Coding Plan Lite,畅享主流AI工具!学习进阶更高效! 阅读详情
解决XCode编译错误clang: error: linker command failed with exit code 1

今天把XCode4.5.1升级为XCode4.6.1,然后调试接了一台iPhone4,一台iPhone5,(原来只用iPhone4开发)

选择iPhone4可以成功编译;

但iPhone5编译出现以下错误:clang: error: linker command failed with exit code 1 (use -v to see invocation)

网上找了好久解决方法,以下方法我可以编译成功,但我也不是很懂有什么影响,请高手指导。(QQ:274010315)


一、

把 Valid Architectures  的值改为 armv7

过程:

PROJECT --> Build Settings --> Architectures --> Valid Architectures  他的值本来是 armv7 armv7s ,把armv7s 去掉即可

同样的操作

TARGETS -->  Build Settings --> Architectures --> Valid Architectures  做同样的修改

二、

以上修改如果还不行,继续

PROJECT --> Build Settings --> Architectures -->Build Active Architecture Only的值改变No

同样操作

TARGETS --> Build Settings --> Architectures -->Build Active Architecture Only的值改变No


Apple Mach-O Linker Error
是一类错误,错误信息的最后一行,通常如下
Command /Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/clang failed with exit code 1

发生这种错误的原因通常是因为两个子工程中存在同名类造成的链接错误。
比如我发生错误的原因就是因为在两个.m文件中都定义了同样名字的const变量。

虽然给的错误信息不明显,但是点开还是可以发现一些信息,从而定位的。但是信息很多,需要仔细排查,这次就是在众多的信息中发现了那个变量的命名,从而找到这个问题,通常你的变量都会被加一些前后缀显示。

  linker command failed with exit code 1 (use -v to see invocation)这个错误貌似遇见并不止一次,当我想用某个第三方类库的时候(如SBJson),我直接把类库文件copy到工程目录里面,然后一编译就出现这样错误(并不是一定会出这样错误),开始以为是网上下载的类库本身问题,所以重新找类库或者其他方式将它添加进去,只要不出错就行,也一直没有深入了解根本问题,今天在给工程添加一个FMDB(SQLIte第三方类库)文件编译时又出现这种错误,一开始以为工程问题,但是新建工程后还是出现这个问题,经过网上查找,得到了解决办法;


[cpp]  view plain copy
  1. Undefined symbols for architecture i386:  
  2.   "_OBJC_CLASS_$_FMDatabase", referenced from:  
  3.       objc-class-ref in ViewController.o  
  4. ld: symbol(s) not found for architecture i386  
  5. clang: error: linker command failed with exit code 1 (use -v to see invocation)  




在网上得到解决办法是:

在工作左边导航栏Target-->Build Phases-->compile Sources中,第三库库的所有.m文件都添加到里面,然后编译通过了;




添加.m文件



根据对比可以看见 in FMDBTest,FMDBTest的Target里添加进去了了一些.m文件



对于以上错误,根据网友解答我的理解是

我们在使用这些第三方类库文件时直接将其拖拽到工程之中,编译的的时候Xcode也没有自动引用,所以造成这样错误,这就需要我们手动添加。假如我们在工程中新建某个文件就不会出现这样问题;


参考  http://blog.hsin.tw/2012/ios-dev-undefined-symbols-for-architecture-i386/

Xcode Undefined symbols 错误 报错信息 error: Undefined symbol: typeinfo for sdk::IConfig Undefined symbol: vtable for sdk::IConfig 具体信息: Undefined symbols for architecture x86_64: "typeinfo for sdk::IConfig", referenced from: typeinfo for sdk::ConfigImpl in sdk.a(config_impl.o) 阅读详情

相关推荐

解决clang: error: linker command failed with exit code 1 (use -v to see invocation) 指令集问题

“OBJC_CLASS$_xx文件名”, referenced from: linker command failed with exit code 1 (use -v to see invocation) 解决指令集问题 程序编译后,要调用处理器能识别的指令来完成我们设定程序要做的任务。这些指令必须是处理器能够识别并能够执行的。这就引出了两个元素,处理器和处理器对应的指令集合。比如 ARM 处理器 ,指令集合比如 arm7 , arm7s, arm64等等。 我们看下苹果的不同机型(微观上对应.

weixin_33916814的博客 7169

clang: error: linker command failed with exit code 1 (use -v to see invocation)

部分错误的提示: /usr/lib/llvm-3.5/lib/libLLVMSupport.a(MemoryObject.o):(.data.rel.ro._ZTVN4llvm12MemoryObjectE[_ZTVN4llvm12MemoryObjectE]+0x28): undefined reference to `__cxa_pure_virtual' /usr/lib/llvm-3.

ldzm 3868

解决错误clang: error: linker command failed with exit code 1 (use -v to see invocation)

clang: error: linker command failed with exit code 1 (use -v to see invocation) $(inherited) 就是all_load  Xcode-Build Settings中,Other Linker Flags 设置加上 -ObjC,假如,这里面配置有all_load,记得一定要删除这个加上-ObjC,   总...

super_man_ww的博客 1万+

Xcode出现( linker command failed with exit code 1)错误总结

以下文章转自https://www.cnblogs.com/xsyl/p/6085844.html 1,看看是不是有新添加的文件跟之前文件同名 2,错误信息中出现了某个类的名字,去原文件中看看#import了哪些第三方库,把这些库挨个注释排除,找到出错的那个库,然后按照官方提供的步骤重新添加一遍。 3.SVN或git忽略了某些文件,如.o 等文件没能update下来,查看...

weixin_30900589的博客 155

linker command failed with exit code 1 (use -v to see invocation)的异常调试

linker command failed with exit code 1 (use -v to see invocation)的错误调试 情况1、         linker command failed with exit code 1 (use -v to see invocation)这个错误貌似遇见并不止一次,当我想用某个第三方类库的时候(如SBJson),我直接把类

iotjin的专栏 874

ld: 19 duplicate symbols for architecture arm64 clang: error: linker command failed with exit code

1.检查是否在#import头文件的时候,不小心把.h写成了.m。 2.查看被编译的文件中是否有重复的(如果有文件显示红色一般是编译器没有找到的文件)。 进入Target->Build Settings->Compile Sources下,查看是否有异常文件。删除即可 3 .m文件 引用重复 进入Target->Build Settings->...

qq_36724920的博客 710

Unity iOS 出包 libGameAssembly 超 ARM64 分支寻址上限(±128MB)排查与修复

本文记录了Unity iOS IL2CPP构建时出现"ARM64 branch out of range"错误的完整排查与修复过程。问题表现为libGameAssembly.a的代码段超出ARM64分支指令±128MB寻址范围,导致链接失败。 通过分析发现: 错误源于单代码段内距离超限,并非多段跳转问题 超限幅度仅2.6MB,不需大规模重构 传统方案如link.xml调整、优化级别修改均无效 最终解决方案是将IL2CPP Code Generation从"Faster runtime"改为"Faster (

CSDNzhizunbao的博客 352

为什么你的BepInEx插件框架在macOS上总是失败?5个高效解决方案深度解析

BepInEx作为Unity游戏的插件框架和补丁工具,在macOS平台上面临着系统安全机制、编译工具链和运行时环境的独特挑战。本文将为技术开发者和系统管理员提供完整的macOS支持解决方案,从源码编译到插件部署,深入解析12个常见问题的技术细节,并提供经过Apple Silicon验证的最佳实践。 ## 问题诊断:macOS平台常见故障模式 ### 1. 编译阶段:架构不兼容与工具链缺失 在

gitblog_00229的博客 463

3.Linux基础开发⼯具【由浅入深-Linux】

在 Windows 环境中,我们习惯了双击 或 文件并一路点击“下一步”来安装软件。但在 Linux 的世界里,软件的分发和安装理念有着本质的不同。Linux 强调权限控制、模块化和依赖管理。为了帮您构建完整的 Linux 系统管理知识体系,我们可以将 Linux 下安装软件的方式归纳为五大主流阵营。这是 Linux 下最正统、也是日常使用频率最高的方式。它又细分为“在线仓库安装”和“本地包安装”两种场景。1. 在线仓库安装(如同手机自带的 App Store) 操作系统维护着一个庞大的软件云端仓库。通

插花弄玉的博客 459

编译时出现错误 -- clang: error: linker command failed with exit code 1 (use -v to see invocation)

出现这个错误的原因有多种,常见的是因为某些文件的缺失或者是文件的重复导致的。 这类错误查看的关键在于其上一行的文字。 对于文件缺少而导致错误的情况: 例如上图中的示例,其上一行文字为 ld:library not found for -lrxl,可以看出是缺失了某一文件而导致的错误,这行文字中的最后“ -lrxl ”:-l 代表着其前缀是“lib”,连着后面的 rxl,其名称为 libr...

u013410274的专栏 5万+

c++编译器配置错误问题clang: error: linker command failed with exit code 1 (use -v to see invocation)

注意cmake使用中c++编译器选择问题:gcc编译器没有-stdlib 这样命令行选项,LLVM clang编译器支持。 这是因为clang为您提供链接LLVM标准C ++库( libc ++ )或GNU标准C ++库( libstdc ++ ),而gcc只支持 libstdc ++ 。

龙性的腾飞的博客 7063

Vscode报错:clang: error: linker command failed with exit code 1

Vscode报错:clang: error: linker command failed with exit code 1

guhong1995的博客 4939

【Openwrt编译错误】clang: error: linker command failed with exit code 1 (use -v to see invocation)make[5]

链接错误,提示一些内容重复定义。

weixin_58966834的博客 1329

iOS Xcode错误: linker command failed with exit code 1 (use -v to see invocation) 可能错误与处理方法

遇到“linker command failed with exit code 1 (use -v to see invocation)”错误  使用到的第三方的库 .a 文件不存在于本地。 一般解决:找到该库,重新添加引用。 但是没用啊 其实是IOS9适配问题 bitcode是被编译程序的一种中间形式的代码,包含bitcode配置的程序将会在App store上

观察者 2119

Xcode 10升级报错:clang: error: linker command failed with exit code 1(use -v to see invocation)

今早更新了xcode10,原本不更新运行好好的工程就报错了 报错原因是升级以后iOS10 将libstdc++.6.0.9库文件删除,所以只需要下载下来放进去就OK了。 1.下载 libstdc++.6.0.9.tbd  下载地址:https://pan.baidu.com/s/10gZrtGtspgpKT7qSY-bBDg 2.下载下来注意文件名可能不是这个更改文件名为libstdc...

w1035524412的博客 9598

XCode中常用错误解决

No such file or directory 解决方法(可以依次尝试,总有一种能最终解决问题): 方法1.退出Xcode,然后从finder里面进入~/Library/Developer/Xcode/DerivedData 删掉里面所有的内容,然后重启Xcode试试看 方法2.上面的操作也可以直接在Xcode的organize...

weixin_33774883的博客 220

clang: error: linker command failed with exit code 1

之前在 macOS 10.13 上参照官方文档 build 了 LLVM 和 Clang,而在使用 clang++ 编译时有时会遇到如题的问题,具体报错信息如下: Undefined symbols for architecture x86_64: "std::string::compare(char const*) const", referenced from: ge...

daxia665544的博客 4068
上一篇: ios给某段字体加颜色
下一篇: cell的重用原理
nslog1234554321
博客等级 码龄11年 52粉丝 258原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值