美文网首页
gcc的一些编译规则和原理

gcc的一些编译规则和原理

作者: 小胖_20c7 | 来源:发表于2019-05-29 18:25 被阅读0次
可执行文件的入口函数
1 对于静态链接的可执行文件,程序入口就是ELF文件头标记的entry
2 对于动态链接的可执行文件,程序入口就是.interp段标记的动态链接器地址,执行完动态加载和重定位后,再交给entry
关于.so的执行
1 so文件也是可以执行的,和exe一样,都是通过execve()执行,只是入口函数不一样(entry or .interp)
2 windows也一样,rundll32.exe就是用来执行dll文件的
静态链接和动态链接
1 静态链接,由ld负责,搜索静态路径
2 动态链接,由ld.so负责加载,搜索动态路径
静态搜索路径和动态搜索路径
1 静态搜索路径,详情看man ld
2 动态搜索路径,详情看man ld.so
关于exe的静态链接
1 查找所有依赖的.so是否存在(搜索静态路径)
2 查找命令行中的.so依赖的.so是否存在(搜索动态路径)
2 检查所有.o文件的未定义符号是否存在(在所有.o文件和所有.so中查找)
3 检查所有.so文件的未定义符号是否存在(在所有.o文件和所有.so中查找)
4 合并所有.o文件(即所有代码合并,所有符号表合并,链接时的重定位)
关于静态库的生成
一个温馨小提示,始终将 -l函数库 选项放在编译命令行的最右边
gcc  -llua -lm calllua.c(报错)
gcc calllua.c  -llua  -lm(正确)

相关文章

  • gcc的一些编译规则和原理

    可执行文件的入口函数 关于.so的执行 静态链接和动态链接 静态搜索路径和动态搜索路径 关于exe的静态链接 关于...

  • 编译原理4个步骤

    编译原理 编译原理(把人写的代码,变成,机器可以认识的指令)Linux(gcc)Mac (Clang) 1.预处理...

  • iOS App编译和启动原理

    编译原理: 将编译过程分为前端和后端两部分处理 Clang(编译器前端):GCC的替代品,Clang的编译速度比G...

  • GCC编译过程和原理浅析

    什么是GCC GCC(GNU C Compiler)编译器的作者是Richard Stallman,也是GNU项目...

  • GCC编译器的编译规则

    在使用Gcc编译器的时候,我们必须给出一系列必要的调用参数和文件名称。GCC编译器的调用参数大约有100多个,其中...

  • 关于C和CPP中同名函数的思考

    首先看一段代码: 使用gcc编译: 使用g++编译: 首先解释一下gcc和g++编译报错原因: gcc编译器默认将...

  • Linux下编辑、编译、调试命令总结——gcc和gdb描述

    Linux下编辑、编译、调试命令总结——gcc和gdb描述 GCC gcc是linux系统集成的编译器。在linu...

  • linux CentOS8安装redis

    安装编译工具 安装编译工具# yum install -y gcc gcc-c++检查gcc的版本# gcc --...

  • 【Xcode编译原理】

    GCC编译器 Xcode4之前,Xcode是用GCC编译器来翻译代码的;GCC编译器是开源免费的编译器 GCC :...

  • LLVM和GCC的区别

    GCC: GNU Compiler CollectionGCC属于传统编译器,传统编译器的工作原理基本上都是三段...

网友评论

      本文标题:gcc的一些编译规则和原理

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