首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

mac 编译问题解决——building for macOS-x86_64 but attempting to link with file built for xxx

: symbol(s) not found for architecture x86_64 clang: error: linker command failed with exit code 1 (use...-v to see invocation) make[3]: *** [libtvm_runtime.dylib] Error 1 make[2]: *** [CMakeFiles/tvm_runtime.dir...在Mac下,有两套编译工具链,GNU的和Apple(通过Xcode安装)的,GNU的以gcc代表,而Apple的则以clang代表,在这两个核心编译工具周围,又有很多别的小的编译工具。...它帮助编译链接链接时更快地查找和解析符号。当一个程序需要链接静态库时,链接使用ranlib创建的索引来确定静态库中包含的符号,以便正确地链接程序。...在这里我选择执行第二种,具体命令: $ brew uninstall binutils 然后再检查ranlib --version 命令的输出,确认是Apple的工具链后再make clean,重新编译即可

46420
您找到你想要的搜索结果了吗?
是的
没有找到

扒虫篇-Bug日志 Ⅲ

1.一个警告点击后提示:Treating Unicode character as whitespace 对于追求完美的猿来说,解决警告有时也是必须的。...解决办法:关闭其它所有工程,退出 Xcode文件,再重新打开目标工程(注意,只打开这一个工程,不要打开其他的工程),再次Archive ,验证,就没问题啦。...OpenSSL是一个开放源代码的软件库包,应用程序可以使用这个包来进行安全通信,避免窃听,同时确认另一端连接者的身份。这个包广泛被应用在互联网的网页服务上。...Paste_Image.png Other Linker Flags:其他链接标签,当导入的静态库使用了类别,需要设为-ObjC。...ld: symbol(s) not found for architecture x86_64 clang: error: linker command failed with exit code 1

1.2K20

iOS逆向之Mach-O文件

所有的这些加载命令由系统内核加载直接使用,或由动态链接处理。...\n"); return 0;}最后终端执行如下命令:$ clang -c main.c -o main.o目录下会出现一个main.o文件,使用file命令可以验证main.o是否mach-o...还是以main.c例,我们把main.c编译链接可执行文件,命令如下:$ clang -o main.out main.c // .c源文件编译链接成可执行文件上面命令会在目录下生成一个名为main.out...Xcode查看Mach-O类型对于一个XCode的项目,我们可以在Target/Build Settings/Mach-O Type中查看当前项目的类型。...因为需要储存多种架构代码,通用二进制文件通常比单一平台二进制的程序要大。由于两种架构有共同的一些资源,所以并不会达到单一版本的两倍之多。由于执行过程中,只调用一部分代码,运行起来也不需要额外的内存。

10.4K10

如何持续的自我提升

每一次思考都需要我们把记忆能力充分调用: 回忆与 module 相关的知识 回忆搜索引擎技巧 回忆如何通过 Xcode 创建工程、动态库 回忆 APP 构建的每一步的命令 ......项目的整体架构如下图: ? 构建 通过 xcodebuild 命令,可以对 Host 进行构建。 如下,红框部分是 Xcode 执行 链接 Host 时,所调用命令: ?...调试模式 考虑到编译可能通过其它方式进行了信息传递,所以,我们通过给上述命令添加参数 -v 的方式进行调试。 ? image-20917926 很遗憾,新增参数 -v 后,仍然没有得到有效的信息。...但是,我们得到了一个新的知识 clang调用 ld 命令执行链接任务。 调试链接过程 接着,我们再次尝试对 ld 命令添加参数 -v -t 的方式进行调试。...通过 Xcode链接环节,我们可以发现真正执行链接的二进制文件是 ld 通过搜索引擎查找“如何通过二进制文件找到对应的源码” 尝试编译链接(遇到问题,可以通过网络引擎搜索解决) 运行链接,并分析链接的源码执行路径

69530

Ruby 与 clang

笔者在使用 `rbenv`[1] 安装 ruby 时,遇到一个头文件缺失导致无法编译失败的问题。 本文会记录笔者对该问题产生的原因分析,并通过分析 clang 源码的方式提供一个通用的解决方案。...* [apps/app_rand.o] Error 1 make: *** [all] Error 2 从上面的日志中,我们可以发现三个关键: rbenv 最终调用clang 执行编译任务...-apple-ios8.0 main.m -v 各个 tool 的参数: clang -cc1 -triple arm64-apple-ios8.0.0 -o main-a28fc8.o -x objective-c...通过查看 clang::driver::toolchains::Darwin 相关的代码,我们会发现下面的执行逻辑: Compilation 调用 clang::driver::toolchains::.../ 编译 macosx 项目 xcrun -l clang main.m 优化方案:xcrun 根据上面的信息,我们可以尝试使用 xcrun 调用安装命令: ?

1.7K20

clang 源码导读(1): clang 入门

在不同的场景下,clang 可能具有不同的含义: clang driver:编译驱动程序,负责根据简单的参数生成更加负杂的参数 编译前端(在 clang 库实现):专指编译生成中间代码的过程(preprocessor...和 compiler) 实际的编译(在 clang -cc1 中实现):clang -cc1 通过 LLVM 库和其它工具实现了编译前端、后端、汇编等工作 以下面的原始命令例: xcrun --sdk...iphoneos clang -arch arm64 main.m -v clang 先会以 clang driver 模式运行,随后组装 clang -cc1ld 两个命令行,并进行下一步处理...拼写 clang 命令时,需要注意不同参数的优先级,比如,-arch 对架构的优先级高于 -target下面的示例显示最后产出的文件不包含 -target 的 x86_64 架构 ?.../XcodeDefault.xctoolchain/usr/bin/ld 进行链接任务 ?

4.7K20

iOS符号冲突(duplicate symbols)

all_load 链接会加载静态库中所有的Objective-C类和Category(这里和上面一样);当静态库只有Category时-ObjC会失效,需要使用这个flag; -force_load...符号,所以编译运行完的结果是调用了工程中的SSUser类,静态库中的SSUser并没有被链接。...: 2 duplicate symbols for architecture x86_64 clang: error: linker command failed with exit code 1 (use...-v to see invocation) 接下来从尝试技术的角度去解决这个问题: 解决方案1:去掉主工程的SSUser,用静态库里面的SSUser; 不可行,静态库的SSUser没有开放头文件,...test 附1:这为了简化逻辑,这里只有模拟的cpu架构,没有包括armv7/arm64,用 lipo -info LYTestFramework指令可以看到: LYTestFramework

4.4K30

iOS编译原理

这样的好处在于:新增一门语言只需要修改前端,而新增一种CPU架构只需要修改后端即可; 2.LLVM与Clang LLVM是苹果当前使用的编译: LLVM是一套编译基础设施项目,自由软件,以C++...; 2.查看预处理结果 使用xcrun命令,在终端执行预处理操作: xcrun clang -E main.m 终端显示效果如下: # 1 "main.m" # 1 "" 1...; 3.生成目标文件 该阶段是汇编将汇编代码转换为机器代码,并输出目标文件,即.o文件; 使用xcrun命令,生成目标文件: xcrun clang -fmodules -c main.m -o main.o...(Linking) 主要功能:符号解析、重定位、合并目标文件,最终生成可执行文件; 1.使用xcrun命令执行链接,得到可执行文件 xcrun clang main.o -o main 2.使用file...1.符号解析 将每个符号引用和对应的符号定义关联起来; 链接链接多文件时会创建符号表,用于记录所有已经定义和未定义的符号; 出现相同符号,会报错:"ld:dumplicate symbols";

1.5K20

程序一定要从main函数开始运行吗?

编译的编译选项是: -ffunction-sections -fdata-sections 可能很多人都会以为程序都是由main函数开始执行和结束的,但其实不是,在main函数调用之前,为了保证程序可以顺利进行...Linux一般程序的入口是__start函数,程序有两个相关的段: init段:进程的初始化代码,一个程序开始运行时,在main函数调用之前,会先运行.init段中的代码。...fini段:进程终止代码,当main函数正常退出后,glibc会安排执行该段代码。...如何指定程序入口ld链接过程中使用-e参数可以指定程序入口,由于一段简短的printf函数其实都依赖了好多个链接库,我们也不太方便使用链接脚本将目标文件与所有这些依赖库进行链接,所以使用下面这段内嵌汇编的程序来打印一段字符串.../test hello 如何使用自定义链接脚本实现自定义段的功能 在ld链接过程中使用-T参数可以指定链接脚本,通过ld -verbose可以查看默认的链接脚本,原文太长,这里简单截取了一部分: $

1.2K30

【已解决】Framework 框架需要引入工程里面类

: symbol(s) not found for architecture x86_64 clang: error: linker command failed with exit code 1 (use...经过群众大神的指导说是用 runtime,这个通过字符串创建对象,用消息发送调用方法是可行的。但是对于工程写这样的代码确实是不雅观。...一调用就报找不到文件。 群里面大神让我执行下面命令 lipo -info xxx 查看是否支持模拟框架,但是竟然查询不出来。 ?...我切换成模拟,再次打包运行果然可以了。 解决办法 如果Framework 真的需要使用第三方的类,可以托管在 Cocoapods。或者如上面使用 runtime....对于 Framework 编译真机和模拟合并的可以交给 Carthage 完成,对于 之前 Cocoapods 依赖转成 Carthage 托管的还需要研究。

1.1K30

深入剖析 iOS 编译 Clang LLVM

LLVM 核心库提供一个优化,对流行的 CPU 做代码生成支持。lld 是 Clang / LLVM 的内置链接clang 必须调用链接来产生可执行文件。...查看oc的c实现可以使用如下命令 clang -rewrite-objc main.m 查看操作内部命令,可以使用 -### 命令 clang -### main.m -o main 想看清clang...clang 静态分析是通过建立分析引擎和 checkers 所组成的架构,这部分功能可以通过 clang —analyze 命令方式调用。...The Sema Library - 解析调用此库时,会对输入进行语义分析。 对于有效的程序,Sema 解析构造一个 AST。...通过 clang -ccc-print-bindings main.c -o main 来看看 Bind 的结果 可以看到编译选择的是 clang链接选择的是 darwin::Linker,但是在链接时前没有汇编的过程

7.6K20
领券