linux 编译链接图
生活随笔
收集整理的這篇文章主要介紹了
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循環做同樣的事情,那么就只做一次
總結
以上是生活随笔為你收集整理的linux 编译链接图的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 第六次的服务端课程:JDBC,数据源配置
- 下一篇: linux 其他常用命令