一、定義
編譯:
“““
編譯器是一種翻譯程序,它用於將源語言(即用某種程序設計語言寫成的)程序翻譯爲目標語言(即用二進制數表示的僞機器代碼寫成的)程序。後者在windows操作系統平臺下,其文件的擴展名通常爲.obj。該文件通常還要經過進一步的連接,生成可執行文件(機器代碼寫成的程序,文件擴展名爲.exe)。通常有兩種方式進行這種翻譯,一種是編譯,另一種是解釋。後者並不生成可執行文件,只是翻譯一條語句、執行一條語句。這兩種方式相編譯比解釋運行的速度要快得多。
”””
“““
在彙編裏稱link,在C裏叫build,它的作用是生成可執行的exe文件。由於一個程序的源碼可由多個文件組成。這些文件在第二步中分別編譯,生成各自的目標文件(*.obj),這一步的作用便是將這些obj文件,以及程序中需要的其它庫文件(dll除開),統一到一個文件中來,形成單個的exe文件。此exe文件便可以在操作系統下直接運行了。
”””
程序員程序——(編譯)——僞機器代碼——(鏈接)————機器代碼
build文件:連接/生成,描述編譯工具鏈,生成可執行(execute)文件
交叉編譯:在一個平臺上生成另一個平臺上的可執行代碼
bazel:google推出的一款工程編譯工具
編譯的五個過程
詞法分析
語法分析
語義分析與中間代碼產生
優化
目標代碼生成
三、編譯的目的
編譯目標爲不同平臺(32位/64位的Linux/ios/Windows)及不同模式(發佈模式/調試模式/個人測試模式)
舉個例子:將服務器或pc上訓練好的模型,與數據打包,push到手機上,使用編譯好的目標平臺的工具加載並運行模型
四、相關的環境變量
LIBRARY_PATH環境變量用於在程序編譯期間查找動態鏈接庫時指定查找共享庫的路徑,與之相對應的,LD_LIBRARY_PATH是程序運行期間用到的庫。
參考鏈接:
https://blog.csdn.net/sundingh/article/details/78714245