目的
初入編程的人辅愿,避免不了環(huán)境配置的問題旭等,由于對相關(guān)概念的模糊句携,所以環(huán)境配置經(jīng)常會走各種彎路。
編程環(huán)境配置是為了方便以下幾個功能:
- 指令調(diào)用愉豺,從命令行(cmd)調(diào)用相應的指令篓吁,比如JDK中的javac,SDK中的adb等蚪拦,一般這些指令文件都是以exe可執(zhí)行文件的格式被放在對應目錄的bin目錄下杖剪,這也就是為什么要在環(huán)境變量Path里面加入類似%JAVA_HOME%/bin這些字段的原因;
- 庫文件位置驰贷,編程總是基于各種基礎(chǔ)的依賴包的盛嘿,但是,比如CoCo2dx之類的括袒,安裝了之后要讓C++能夠在編譯的時候找到這個組件帶著的庫次兆,那要么將其加入到編譯的依賴路徑里面去,要么就是將這些包復制到系統(tǒng)的依賴文件目錄里面去箱熬,還有一種比較常見的例子就是GRADLE_USER_HOME也是一種庫環(huán)境配置类垦;
- 第三方程序引用,很多環(huán)境變量的名字是約定俗稱的城须,比如JAVA_HOME,PYTHON_HOME米苹,CUDA_HOME等等糕伐。很多應用程序需要對應的程序的支持,特別是IDE蘸嘶,會默認去查詢這些環(huán)境變量良瞧,當查詢不到的時候陪汽,可能就會安裝失敗,或者褥蚯,直接遠程給你再下載一個挚冤,比如gradle,這就很糟心了赞庶。
驗證
安裝應用的時候训挡,環(huán)境變量又會分成兩派,自動配置和手動配置歧强。
根據(jù)我的經(jīng)驗澜薄,目前可以通過exe安裝的程序,基本都會提供自動配置的功能了摊册,雖然肤京,指不定會配置在什么地方,可能在系統(tǒng)環(huán)境變量(大部分情況)下面茅特,可能在用戶環(huán)境變量下面忘分,也可能在注冊表里。所以白修,防止無意義的手動配置妒峦,為以后卸載造成垃圾數(shù)據(jù),在手動配置前驗證下熬荆,很有必要舟山。
-v -version --version
類似上面舉例的參數(shù)方式,基本上卤恳,都是通過查看程序版本來驗證是否環(huán)境變量被配置好了累盗,或者程序是否安裝成功。比如java的java -version突琳,maven的mvn -v等等若债。
*note:如果在配置環(huán)境變量前,就開啟了cmd拆融,配置完繼續(xù)通過這個cmd驗證一般也會失敗蠢琳,因為cmd載入的是之前的環(huán)境,需要重啟cmd驗證才能成功镜豹,有些嚴苛的需要重啟才能成功傲须,比如更改注冊系列的。
進階配置
環(huán)境配置說簡單簡單趟脂,說難也難泰讽,比較突出的就比如版本兼容性的問題。
常見的兼容性比如win,linux已卸,centos這些操作系統(tǒng)差別的兼容性佛玄,細化一點的就是x64和x86(32)對于系統(tǒng)位數(shù)的兼容性,雖說一般x64的系統(tǒng)是能兼容x86的程序累澡,但是梦抢,最好還是匹配安裝最安全。
經(jīng)常搞得環(huán)境配置很糟心的是應用程序之間的兼容性愧哟,比如tensflow-gpu版本奥吩,需要CUDA,Cudnn翅雏,python圈驼,顯卡驅(qū)動全部兼容才能成功配置運行,又比如望几,python里的jpype1對python版本和java版本間的兼容性也有要求绩脆。這種情況,就需要去官方文檔查看細致的兼容性匹配表橄抹。
總結(jié)
這些是本人編程以來的一些經(jīng)驗之談靴迫,歡迎交流指正。