編譯鏈接指向的文件夾
① C語言編譯連接後生成那麼多文件是什麼
不要把保存目錄設為桌面,應該設置成一個單獨的文件夾
在一開始創建的時候它會問你保存路徑
一項工程有兩種生成文件的方式:
一是DEBUG
這種文件可以方便調試,可以在具體行中設置斷知點,運行時對程序中各種變數進行觀測
二是RELEASE
這種文件只能用來運行,不能用來調試
DEBUG文件夾所佔硬碟存儲空間大,開發過程中一般選擇生成DEBUG文件
RELEASE文件夾佔道用空間小,最終開放版本給用戶時選擇用這種方式生成
② 用VS編譯和C++源文件的時候,源文件和庫文件是如何鏈接到源文件的具體細節
因為我是學習計算機軟體專業的,故可以給你講一下大概意思,我也不敢保證我講得都是正確的。個人講解僅供參考。這個是需要學習《計算機編譯原理》這門課程的。而且《計算機編譯原理》這門課程在軟體專業中幾乎是最抽象的、難於理解的。
首先關於 Visual Studio編譯器(或者是別的 C/C++編譯器)是如何將用戶親自編寫的源程序經過若干步驟之後,最終變成計算機可執行的二進制代碼程序?這裡面經過了如下步驟:
(1)、詞法分析/語法分析。也就是說當編譯器對用戶編寫的源程序進行編譯時,首先檢查你的詞法(或者是語法)是否正確,這是第一步(這里以 C 語言為例,假如將定義一個整型變數 n 的語句 int n ; 誤寫成了:intt n ; 屬於語法錯誤)。如果這一步都沒有通過編譯器的檢查的話,那麼絕對不會進入第二步。繼續返回編輯狀態進行語法檢查。這種錯誤是最容易檢查的。
(2)、語義分析。這類錯誤就要比(1)困難得多。這類錯誤舉例如下(這類錯誤編譯器只是會給出一個警告信息,但是編譯器是會放過這類錯誤的。故需要編程人員具有較豐富的編程經驗)
void main( )
{
int num ; /* 定義一個整型變數 num */
scanf("%d", &num ) ; /* 從鍵盤上輸入一個整數 */
if( num == 10 ) /* 在這個語句中,如果將邏輯判斷等於號 ==,誤寫為數值等於 =(即:if( num = 10 )),那麼該程序的執行結果始終輸出:Correct。因為該邏輯表達式 if( 10 ) 的真值始終為 1。 */
printf( "Correct !\n" ) ; /* 實際上程序的本意是:如果輸入的數值等於 10,則輸出:Correct ! */
else /* 如果輸入的數值不等於 10 的話,則輸出:Error ! */
printf( "Error !\n" ) ;
}
(3)、在(1)和(2)的基礎上進行中間代碼生成(例如:在linux 系統下面生成的 *.o 文件、或者是在 WINDOWS 系統下面生成的 *.obj 文件),這類文件還不是最終的可執行文件。
在此過程中,會應用到各種符號表,以便處理用戶程序中使用的各種常量、變數、以及各種函數,等等。
(4)、在前三個階段的基礎上,最終 VS 編譯器再將中間代碼(*.obj 文件)和其本身提供的庫文件(*.LIB)進行鏈接,最終產生可執行程序(Linux 系統使用的編譯器是:gcc,Linux 系統下面的可執行文件名可以任意,WINDOWS 系統下面的可執行文件名為:*.EXE 文件)。
到此為止,一個用戶編寫的源程序,經過上面若干步驟之後,最終產生了可執行程序,此時就可以在機器上的相應的操作系統上執行了。
③ 文件夾鏈接指向另個文件夾要怎麼實現
或者有相關的文件夾管理軟體能實現此功能的,,介紹一個,網址鏈接也行
④ linux怎麼將一個文件夾鏈接到另一個文件夾上
ln -s bbb的文件目錄 ccc的文件目錄
In的功能是為某一個文件在另外一個位置建立一個同步的鏈接,命令最常用的參數是-s,具體用法是:
ln -s 源文件 目標文件
-s 是 symbolic的意思。
ln的鏈接有軟鏈接和硬鏈接兩種。
軟鏈接就是ln -s ** **,只會在選定的位置上生成一個文件的鏡像,不會佔用磁碟空間。
硬鏈接ln
** **,沒有參數-s,在選定的位置上生成一個和源文件大小相同的文件。
無論是軟鏈接還是硬鏈接,文件都保持同步變化。軟鏈接是可以跨分區的,但是硬鏈接只能在同一分區內。
(4)編譯鏈接指向的文件夾擴展閱讀:
1、目錄不能建立硬鏈接,但可以建立軟鏈接。
ln-s
test_chk test_chk_ln
2、正確的刪除方式(刪除軟鏈接,但不刪除實際數據):
rm -rf ./test_chk_ln
3、錯誤的刪除方式:
rm -rf ./test_chk_ln/ (這樣就會把原來test_chk下的內容刪除)
4、用ls查看一個目錄時,發現有的文件後面有一個@的符號,那就是一個用ln命令生成的文件。用ls
-l命令去查看,就可以看到顯示的link的路徑。
⑤ html超鏈接怎麼指向本地文件夾里的文件
1、既然是本地文件夾,那麼不是在快捷方式上設置顯示方式。而是在你想進入的文件夾設置:查看--詳細資料。
2、快捷方式也不需要那麼復雜。
到這個文件夾下:C:Documents and
⑥ c++中, 編譯鏈接產生的目標文件在哪個目錄下
vs 一般在工程目錄下的debug/release下, 如果是64位系統,根據你選擇編譯位數找一下x86或者x64文件夾下
自己手動通過cl 編譯連接,則會在你指定的位置(默認是當前目錄下)生成obj文件
⑦ 頭文件如何指向定義文件
你得了解編譯的大致過程
首先,編譯是按源文件為單位進行的,一般就是指你的.c文件,先把所有include的頭文件組合起來,預處理,然後編譯成目標文件,每個.c會生成一個中間目標文件,這時已經完成了編譯。注意在編譯過程中可以沒有main。
然後是鏈接,可以理解成找到main之後把只有聲明沒有函數體的符號鏈接到對應的目標文件中,也就是你說的.c編譯出來的文件。一般鏈接時會查找當前存放臨時目標文件的文件夾你自己寫的.c編譯後就在這里,系統環境變數指向的庫文件夾,比如printf你也看不到函數體,但是照樣可以用,那是因為它們被編譯好放到了系統庫中,鏈接時自然可以找到。
現在應該大致明白了吧?
=====================================================
你都沒有寫hello的函數體,系統當然不知道它是做什麼的,編譯後也沒有鏈接目標,哪怕你把hello.c中的void hello (void);改成void hello (void){}也可以啊
=====================================================
你是如何編譯的,編譯hello.c了嗎
=====================================================
你在vc下建一個工程project吧,然後把文件加到工程中,一起編譯,一個一個編譯跟你講要說清楚也很難