一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術(shù)|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務(wù)器之家 - 編程語言 - C/C++ - C++中的編譯與鏈接

C++中的編譯與鏈接

2022-03-10 14:31一個熱愛學習的深度渣渣 C/C++

這篇文章主要介紹了C++中的編譯與鏈接,編譯型語言SHI c++最大的優(yōu)點,相比于Python這種解釋型語言,C++在編譯階段就進行了許多處理,在執(zhí)行階段便具有高效性,下面我們就來詳細講解該內(nèi)容吧

前言:

C++有個最大的特點,那便是編譯型語言,相比于Python這種解釋型語言,C++在編譯階段就進行了許多處理,在執(zhí)行階段便具有高效性,本篇主要講解C++中的編譯與鏈接

 

一、編譯與鏈接模型

1、一開始的C++是一個簡單的加工模型,如下圖所示:

C++中的編譯與鏈接

這樣會存在一些問題:

  • 無法處理大型程序
  • 加工耗時較長
  • 即使少量修改,也需要全部重新加工

2、為了解決以上問題,引入了分塊處理的方式:

C++中的編譯與鏈接

編譯鏈接模型的好處:

  • 編譯耗資源但一次處理輸入較少
  • 鏈接輸入較多但處理速度快
  • 便于程序修改(只需修改一部分)

在引入分塊處理后,出現(xiàn)了一些常見概念:

①定義與聲明:一個變量在只需在一個文件中定義,其他文件可通過聲明該變量;

②頭文件與源文件:由于聲明的變量、函數(shù)過多,可將聲明放在頭文件中,在源文件中引用頭文件加載這些聲明;

③翻譯單元:源文件 + 相關(guān)頭文件(直接/間接)- 應(yīng)忽略的預處理語句(宏定義不符合條件的);

 

二、編譯與鏈接流程

下面通過一個實際例子,講解程序如何從cpp一步步到可執(zhí)行文件的;

下圖為一個整體流程圖:

C++中的編譯與鏈接

1、預處理階段:將cpp或c的源程序進行處理(頭文件展開等),轉(zhuǎn)換成以i結(jié)尾的翻譯單元文件

g++ -E ./main.cpp -o ./main.i

2、編譯階段:生成編譯后以s為后綴的匯編代碼文件

g++ main.i -S -o main.s

3、匯編階段:將匯編代碼進行匯編生成以o為后綴目標文件

4、鏈接階段:合并多個目標文件,關(guān)聯(lián)聲明與定義,生成可執(zhí)行程序

以上為系統(tǒng)內(nèi)部具體的實現(xiàn)操作,我們在實際運行中可以通過一行命令實現(xiàn)編譯鏈接:

g++ ./main.cpp -o ./main

注意點:在用IDE編譯程序時,往往會有兩種模式:Debug和Release,Debug在開發(fā)中使用,優(yōu)化較少,Release在最終程序編譯使用,優(yōu)化較多;

 

三、總結(jié)

  • C++的編譯與鏈接過程是復雜的,預處理、編譯與鏈接都可能出錯,要細心排除;
  • 編譯可能產(chǎn)生警告、錯誤,都要重視;
  • 我個人的感受,會遇到一些很奇怪的坑,不管從環(huán)境還是依賴庫,這就需要有耐心不斷嘗試,并且總結(jié)經(jīng)驗;

到此這篇關(guān)于C++中的編譯與鏈接的文章就介紹到這了,更多相關(guān)C++ 編譯與鏈接內(nèi)容請搜索服務(wù)器之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持服務(wù)器之家!

原文鏈接:https://blog.csdn.net/weixin_40620310/article/details/121196433

延伸 · 閱讀

精彩推薦
  • C/C++C語言實現(xiàn)電腦關(guān)機程序

    C語言實現(xiàn)電腦關(guān)機程序

    這篇文章主要為大家詳細介紹了C語言實現(xiàn)電腦關(guān)機程序,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下...

    xiaocaidayong8482021-08-20
  • C/C++深入理解goto語句的替代實現(xiàn)方式分析

    深入理解goto語句的替代實現(xiàn)方式分析

    本篇文章是對goto語句的替代實現(xiàn)方式進行了詳細的分析介紹,需要的朋友參考下...

    C語言教程網(wǎng)7342020-12-03
  • C/C++學習C++編程的必備軟件

    學習C++編程的必備軟件

    本文給大家分享的是作者在學習使用C++進行編程的時候所用到的一些常用的軟件,這里推薦給大家...

    謝恩銘10102021-05-08
  • C/C++詳解c語言中的 strcpy和strncpy字符串函數(shù)使用

    詳解c語言中的 strcpy和strncpy字符串函數(shù)使用

    strcpy 和strcnpy函數(shù)是字符串復制函數(shù)。接下來通過本文給大家介紹c語言中的strcpy和strncpy字符串函數(shù)使用,感興趣的朋友跟隨小編要求看看吧...

    spring-go5642021-07-02
  • C/C++c++ 單線程實現(xiàn)同時監(jiān)聽多個端口

    c++ 單線程實現(xiàn)同時監(jiān)聽多個端口

    這篇文章主要介紹了c++ 單線程實現(xiàn)同時監(jiān)聽多個端口的方法,幫助大家更好的理解和學習使用c++,感興趣的朋友可以了解下...

    源之緣11542021-10-27
  • C/C++C語言中炫酷的文件操作實例詳解

    C語言中炫酷的文件操作實例詳解

    內(nèi)存中的數(shù)據(jù)都是暫時的,當程序結(jié)束時,它們都將丟失,為了永久性的保存大量的數(shù)據(jù),C語言提供了對文件的操作,這篇文章主要給大家介紹了關(guān)于C語言中文件...

    針眼_6702022-01-24
  • C/C++C++之重載 重定義與重寫用法詳解

    C++之重載 重定義與重寫用法詳解

    這篇文章主要介紹了C++之重載 重定義與重寫用法詳解,本篇文章通過簡要的案例,講解了該項技術(shù)的了解與使用,以下就是詳細內(nèi)容,需要的朋友可以參考下...

    青山的青6062022-01-04
  • C/C++C/C++經(jīng)典實例之模擬計算器示例代碼

    C/C++經(jīng)典實例之模擬計算器示例代碼

    最近在看到的一個需求,本以為比較簡單,但花了不少時間,所以下面這篇文章主要給大家介紹了關(guān)于C/C++經(jīng)典實例之模擬計算器的相關(guān)資料,文中通過示...

    jia150610152021-06-07
主站蜘蛛池模板: 久久www免费人成_看片高清 | 好 舒服 好 粗 好硬 好爽 | 高清在线一区二区 | 欧美日韩一区二区三区久久 | 亚洲国产在线99视频 | 亚洲spank男男实践网站 | 色婷婷精品 | 欧美日韩一区二区三区在线视频 | 成人网欧美亚洲影视图片 | 国产成人精品日本亚洲网址 | 9l桃色| 日韩 国产 欧美 精品 在线 | 扒开女人屁股眼看个够 | 天天综合五月天 | www青青草原 | 日韩二三区 | 大又大又黄又爽免费毛片 | 亚州人成网在线播放 | 国产欧美综合精品一区二区 | 91香蕉视频在线观看 | 欧美午夜精品久久久久久黑人 | 国产一区二 | 日韩视频一区二区三区 | 末代皇帝无删减版在线观看 | 久久亚洲精品中文字幕60分钟 | 日本视频中文字幕 | 亚洲 欧美 中文 日韩 另类 | 天天干天天爽天天操 | 免费特黄一级欧美大片在线看 | 接吻吃胸摸下面啪啪教程 | 成人在线视频观看 | fulao在线观看的 | 亚洲 欧美 日韩 综合 | 色哟哟在线观看 | 免费观看成年肉动漫网站 | 国产精品露脸国语对白99 | 特大黑人娇小亚洲女mp4 | 精品久久久噜噜噜久久7 | 国产综合视频 | 国产va欧美va在线观看 | 向日葵视频app下载18岁以下勿看 |