linux 编译链接图

Linux

文章目录

  • Linux
    • 2:Java
    • 3:.NET
    • 5:GCC

编译链接图

  • 源文件通过预处理 得到 纯C文件
    • 找到这个文本文件,然后文本文件的内容替换#,贴在这里
  • 纯C文件通过编译器 得到汇编程序
  • 汇编程序 得到目标文件
  • 链接器通过库文件 和目标文件得到可执行文件
    • 静态库和 自己写的连接在一起
  • 可执行文件系统
    • 由操作系统布置到电路上去,交给CPU去执行
    • 可以到 1G,2G
    • 30G,40G 没有用动态库,全部在可执行文件中
    • QQ 1M都不到,很小
  • 动态
    • .XO
    • .dll
  • 静态
    • .a
    • lib 库文件
    • office bug表格之前有一个生僻字,就会崩
      • 更新到下一个版本,升级,更新
      • 只需要更新一两个库
      • 多个动态库可以多个文件共享
    • 第一个版本只支持一个英雄
  • C++代码的时候,可以写 if语句, else
    • #if,所有带#的操作,都是预处理操作
    • #else
    • #endif
  • 编译
    • gcc test.c -o test.exe
    • ./linux.exe
    • 连接
      • gcc -o lin.exe linux002.c
    • gcc -o lin.o -c linx.c
      • 只汇编,不连接
    • Qtf 编译器做的是源代码:告诉你在第一行
    • 链接器只会告诉你:找不到Qtf
      • cl.exe
      • 相当于GCC,是一个命令行的GCC
    • java c 作为编译器,不做链接,有一个解释器
    • 缓冲区溢出

2:Java

  • 全部是在运行的时候,找class文件
  • 动态库就是 .class文件

3:.NET

VB.net 是Java的流程

然而实际上,.NET上还分了阶级。C#是全能的亲儿子,ASP/VB/F#是能力较弱的亲儿子,其他语言那是干儿子或者过继的。所以,实际中,你可以认为就是在搞C#了。

5:GCC

  • gcc options filename
    • -E 预处理
    • -S 预处理,编译
    • -c 汇编而不链接
    • -o outputname 输出的文件名字
    • -g 要注意每一个二进制码,每一个文件的文件名,以后需要调试
    • -O 开优化,在编译,链接过程进行优化处理
      • 会智能化的优化,如果for循环做同样的事情,那么就只做一次


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部