02 編譯鏈結

2022-09-06 21:03:16 字數 1223 閱讀 4033

c:\program files\microsoft visual studio\vc98\bin

cl.exe是編譯器外殼

c1.dll,

c1xx.dll

,c2.dll

是真正幹活的

link.exe是鏈結器

c:\program files\microsoft visual studio\common\tools\winnt;

c:\program files\microsoft visual studio\common\msdev98\bin;

c:\program files\microsoft visual studio\common\tools;

c:\program files\microsoft visual studio\vc98\bin

環境變數中的path有

vc6.0

編譯器所在的資料夾路徑

虛擬機器開啟cmd,輸入

link

,有相關資訊,安裝了

vs2019

的win10

則沒有,要自己設定環境變數

cl /c /w4 /wx    hello.c

只編譯警告等級4  警告視為錯誤 檔名

cl /c /p hello.c 會產生

.i檔案,可以檢視預處理結果

vc++編譯選項詳解:

.obj coff格式,可以跨語言

win: pe格式

linux: elf格式

命令列裡可以省略.ex字尾

新建bat檔案,裡面可以寫生

:del *obj

del *exe

cl /c /w4  /wx  hello.c

link hello.obj

hello.exe

pause

#include 尖括號代表先找環境變數,按環境變數裡以分號分隔的路徑依次找,找到就停止,沒找到就找原始碼所在目錄。

#include 」stdio.h」雙引號代表優先找原始碼所在目錄,沒找到就繼續找環境變數。

#include 「name」也可出現在函式中,把該檔案裡的文字都複製貼上進來

maincrtstartup 在\vc98\crt\src\crt0.c檔案裡

使用者的2g記憶體空間,前後64kb的記憶體不予分配。前64kb檢測空指標,後64kb用核心互動

變數初始化盡量賦值,否則裡面留下垃圾值,可能無意中修改了垃圾值對應位址裡的資料。

編譯鏈結詳解

因為這相當於在標頭檔案裡定義了const物件。作為例外,int char等可以進行就地初始化,是因為這些變數可以直接被優化為立即數,就和巨集一樣。此外,對於類的const 非static 成員變數,只能在建構函式的初始化列表中初始化,不能在類內部直接賦值,也不能在類外部賦值。而對於static co...

編譯和鏈結

一般來說,無論是c c 首先要把原始檔編譯成中間 檔案,在windows下也就是 obj 檔案,unix下是 o 檔案,即 object file,這個動作叫做編譯 compile 然後再把大量的object file合成執行檔案,這個動作叫作鏈結 link 編譯時,編譯器需要的是語法的正確,函式與...

編譯與鏈結

首先,我們可以將所有東西都放在乙個.cpp檔案內.然後編譯器就將這個.cpp編譯成.obj,obj是什麼東西?就是編譯單元了.乙個程式,可以由乙個編譯單元組成,也可以有多個編譯單元組成.假如你不想讓你的源 變得很難閱讀的話,就請使用多個編譯單元吧.乙個函式不能放到兩個編譯單元裡面,但兩個以上就可以分...