美文网首页
iOS高级强化--003:编译与链接

iOS高级强化--003:编译与链接

作者: 帅驼驼 | 来源:发表于2021-02-22 10:17 被阅读0次

    生成Mach-O可执行文件,中间会经过目标文件,即.o文件

    ⽣成.o目标文件的过程:

    • 将代码汇编化
    • 将符号进行归类;此时地址还没有虚拟化(没有生成虚拟内存地址)。对于外部导入符号,它的调用地址无法得知,需要将其放到重定位符号表中
    • 生成一个或多个.o目标文件
    • 此时链接器(llvm-ld)并没有被执⾏

    外部导入符号存储的是.m/.o文件中用到的API。例如:NSLog

    ⽣成Mach-O可执行文件的过程:

    • 多个目标文件合并
    • 符号表(包括重定位符号表)合并成一张表
    • 生成一个Mach-O可执行文件

    静态链接:

    • 代码经过编译链接最后分配虚拟内存地址生成可执行文件或动态库

    动态链接:

    • 在运行时,由dyld动态加载

    静态/动态链接

    总结
    • 编译本质:将代码汇编化,并将符号进行归类。外部导入符号,放到重定位符号表。生成一个或多个.o目标文件
    • 链接本质:多个目标文件合并,符号表(包括重定位符号表)合并成一张表,生成一个Mach-O可执行文件

    相关文章

      网友评论

          本文标题:iOS高级强化--003:编译与链接

          本文链接:https://www.haomeiwen.com/subject/xnrxfltx.html