靜態編譯的用處
① 易語言中的編譯和靜態編譯有何區別
靜態編譯就是編譯器在編譯可執行文件的時候,將可執行文件需要調用的對應動態鏈接庫(.so)中的部分提取出來,鏈接到可執行文件中去,使可執行文件在運行的時候不依賴於動態鏈接庫。而編譯就是把可執行文件和支持庫一起寫出到外部,在需要的時候直接對其中一個支持庫進行搜索某一條命令.
打個比方.
你家有6個罐子,裡面分別放了1塊,5塊,10塊,20塊,50塊,100塊.
然後你出門的時候要帶每一種錢各一個,所以就從這六個罐子里每個罐子都拿出一張錢.
這就是靜態編譯.
我再打個比方.
你家還是有6個罐子,裡面分別放了1塊,5塊,10塊,20塊,50塊,100塊.
然後你出門的時候,還是想要都帶一種,然後你就不是每個罐子里拿錢了,而是直接把整個罐子都帶在了身上出門.
相比起來,靜態編譯要輕松,小巧了許多了.
lz 手打很累的 採納吧
② 易語言靜態編譯和獨立編譯有什麼區別
靜態編譯是指編譯後的exe文件(可執行文件)包含了所有支持庫文件,只有單獨一個exe文件。
獨立編譯在編譯後也只有單獨一個exe文件,不過會在運行後立即釋放支持庫到Windows的臨時文件夾的子目錄中。
可能的Windows臨時文件存放目錄:
%USERPROFILE%AppData
%USERPROFILE%AppDataLocalTemp
上文的「 %UESRPROFILE% 」是指用戶目錄。輸入到電腦文件(文件資源管理器)的地址欄中可以直接打開,資料來源點此。
③ 配置Linux內核的時候,驅動的靜態編譯和動態編譯有什麼區別
驅動的動態編譯會生成.ko文件,系統啟動後需要載入該驅動後才能使用相應設備。
而靜態編譯則直接編譯進內核,系統啟動的時候會自動載入該驅動。
靜態編譯太多驅動至內核,會導致內核體積過大,啟動時間較長。而動態編譯則比較自由靈活,需要用的時候即載入,不需要的時候即卸載。我以前在EasyARM-iMX280的學習手冊里看到寫得很清楚,你可以去看看的。
④ vs2010為什麼設置了靜態編譯還是需要dll文件才能運行exe
靜態編譯:就是在編譯可執行文件的時候,將可執行文件需要調用的對應動態鏈接庫(.so)中的部分提取出來,鏈接到可執行文件中去,使可執行文件在運行的時候不依賴動態鏈接庫。
編譯方式:
第1種:
設置:
1、項目->配置屬性->常規->MFC的使用:在靜態庫中使用MFC
2、項目 -> 配置屬性->C/C++->代碼生成->運行庫 :選擇 多線程調試(/MTd)。
編譯時,選擇的是debug,win32
然後執行編譯生成方案,在該工程目錄下的debug文件中,找到該.exe文件,即可在其他電腦運行。
第2種:
一般可以配置一下兩項:
1.項目 -> 配置屬性->常規->MFC的使用 :在靜態庫中使用MFC。
2.項目 -> 配置屬性->C/C++->代碼生成->運行庫 :選擇 多線程調試(/MT)。
編譯時,選擇的是release,win32(這個選擇項在工具欄的debug選框中,一般我們使用debug方式)
⑤ 靜態編譯和動態編譯有何不同
靜態編譯就是把庫函數編譯到你的程序里 這樣編譯的好處是 可以適應不同的平台 如果你是用window系統的話不建議用靜態編譯 因為這樣會使你的代碼量增大
動態編譯就是不把庫函數編譯到你的程序里
⑥ 靜態聯編和靜態編譯
聯編就是將模塊或者函數合並在一起生成可執行代碼的處理過程,同時對每個模塊或者函數調用分配內存地址,並且對外部訪問也分配正確的內存地址,它是計算機程序彼此關聯的過程。按照聯編所進行的階段不同,可分為兩種不同的聯編方法:靜態聯編和動態聯編。
靜態聯編是指在編譯階段就將函數實現和函數調用關聯起來,因此靜態聯編也叫早綁定,在編譯階段就必須了解所有的函數或模塊執行所需要檢測的信息,它對函數的選擇是基於指向對象的指針(或者引用)的類型,C語言中,所有的聯編都是靜態聯編,據我所知道的,任何一種編譯器都支持靜態聯編(廢話)。
動態聯編是指在程序執行的時候才將函數實現和函數調用關聯,因此也叫運行時綁定或者晚綁定,動態聯編對函數的選擇不是基於指針或者引用,而是基於對象類型,不同的對象類型將做出不同的編譯結果。C++中一般情況下聯編也是靜態聯編,但是一旦涉及到多態和虛擬函數就必須要使用動態聯編了。下面將介紹一下多態。
多態:字面的含義是具有多種形式或形態。C++多態有兩種形式,動態多態和靜態多態;動態多態是指一般的多態,是通過類繼承和虛函數機制實現的多態;靜態多態是通過模板來實現,因為這種多態實在編譯時而非運行時,所以稱為靜態多態。
什麼是靜態編譯
靜態編譯,就是編譯器在編譯可執行文件的時候,將可執行文件需要調用的對應動態鏈接庫(.so)中的部分提取出來,鏈接到可執行文件中去,使可執行文件在運行的時候不依賴於動態鏈接庫。
編輯本段靜態編譯與動態編譯的區別
動態編譯的可執行文件需要附帶一個的動態鏈接庫,在執行時,需要調用其對應動態鏈接庫中的命令。所以其優點一方面是縮小了執行文件本身的體積,另一方面是加快了編譯速度,節省了系統資源。缺點一是哪怕是很簡單的程序,只用到了鏈接庫中的一兩條命令,也需要附帶一個相對龐大的鏈接庫;二是如果其他計算機上沒有安裝對應的運行庫,則用動態編譯的可執行文件就不能運行。
靜態編譯就是編譯器在編譯可執行文件的時候,將可執行文件需要調用的對應動態鏈接庫(.so)中的部分提取出來,鏈接到可執行文件中去,使可執行文件在運行的時候不依賴於動態鏈接庫。所以其優缺點與動態編譯的可執行文件正好互補。
⑦ 易語言的靜態編譯是什麼意思
1、編譯是把支持庫文件和程序分開來,如果給別人去用,別人卻沒安裝易語言,就要把支持庫文件帶上給那人才能用.
2、靜態編譯就是把支持庫文件打包到程序里去.這樣,如果對方沒裝易語言也照樣可以正常使用和獨立編譯.
3、在易語言中,想把一個易語言源碼程序變成一個可執行的EXE軟體程序,有三種編譯方式:
一、編譯。
這種方式只是把源碼變成EXE文件,不把所用到的支持庫一起打包進程序中。
優點是程序體積小,可以有效地減少某些殺毒軟體的誤報;
缺點是只可以在裝有易語言的機器上使用,在沒有易語言的電腦上會說缺少支持庫。
二、獨立編譯。
在易語言4.X版中,可以把支持庫寫到EXE程序中,方便在沒有易語言的電腦上使用。
缺點是程序體積大,容易誤報。在易語言5.X版中,獨立編譯改為靜態編譯,不再把支持庫整個地打包到程序中,而把用到的命令打包,所以體積有所減小,也減少了誤報。
但是靜態編譯需要使用外部的鏈接器,如果設置不好,則無法編譯。
三、編譯成安裝文件。
這種方式的編譯,可以直接生成安裝文件,方便在其他電腦中進行軟體的安裝。
缺點是不小心就會把源碼也打包進去。
⑧ 靜態編譯的好處
編譯的時候默認都不是靜態編譯,
這樣編譯出來軟體換到氏跡亮其他機器上可能就運行不了了。
比如在ubuntu 16.04 上面編譯的軟體就不能在 ubuntu 20.04 上面運行。
這里主要的問題出在 glibc 這個庫的版本不一致。
靜態編譯的時候,應用程序包州攔含所有的內容殲寬,放在不同的機器上面都能運行。
我們靜態編譯的時候,我們使用 musl-libc 一個小型嵌入式的 libc 庫。
靜態編譯有的軟體可以運行在不同的系統裡面如 ubuntu:16.04 20.04 centos 等系統。
⑨ 易語言靜態編譯和獨立編譯的區別
1、庫文件和程序文件不同,編譯是把支持庫文件和程序分開來,如果給別人去用,別人卻沒安裝易語言,就要把支持庫文件帶上給那人才能用。但是靜態編譯是把支持庫文件打包到程序里去.這樣,如果對方沒裝易語言也照樣可以正常使用和獨立編譯。
⑩ 易語言裡面一般用靜態編譯還是用動態編譯用哪種好! 詳解謝謝 我是個新手越詳細月好! 多謝啦!
我喜歡用靜態編譯,因為會打包為一個EXE文件,非常方便,而且它生成的靜態編譯EXE是仿C++的格式,因此很多殺毒軟體不會查殺,防止了誤報.
但有些支持庫不支持靜態編譯,這時,只好使用動態編譯了,而用動態編譯後,要將所用到的支持庫文件都拷貝到EXE同在的目錄中,最後用INNO SETUP打包發布才行.