問題產生
- 在ubuntu環境下運行C++代碼,工程文件中CMakeLists文件顯示要求cmake的版本最低是3.15,但是我的本地版本是3.11,雖然修改CMakelists文件為3.11也是可以編譯通過,但是潛在的問題是未知的。
查看本地cmake的版本
- cmake --version
錯誤做法
- 卸載原來的cmake?sudo apt-get autoremove cmake
- 卸載會使得使用先前cmake編譯的包文件全部卸載,這是極其危險的
正確做法
- 從官網下載所需要的安裝包?cmake的下載地址
- 使用ubuntu環境,一般下載的文件的名字是 cmake-3.xx.xx-Linux-x86_64.tar.gz
- 將壓縮包移動到/opt/目錄下,/opt里的文件則是安裝系統后用戶自己安裝的其他應用軟件,一般是源碼包的軟件,在當前下載的文件夾下就不可以
- 進入/opt文件夾下,解壓壓縮包 tar -xvzf?cmake-3.xx.xx-Linux-x86_64.tar.gz
- 進入解壓后的文件夾,cd?cmake-3.xx.xx-Linux-x86_64
- 里面會有四個目錄 bin doc man share
- 這個版本是免安裝的,因此沒有./configure 命令或者 ./bootstrap 命令
- 配置~/.bashrc文件 使用命令gedit ~/.bashrc??
- 設置cmake的環境變量?export PATH=/opt/cmake-3.xx.xx-Linux-x86_64/bin:$PATH
- 使用強制方式,建立軟連接?ln -sf /opt/cmake-3.xx.x-Linux-x86_64/bin/* /usr/bin/
- 在使用cmake時實際上就是調用了cmake-3.13.4-Linux-x86_64/bin/路徑下的cmake來執行的,因此將這個bin下的所有文件全部軟連接到/usr/bin/下面,這樣就完成了sudo cmake的升級
- 驗證版本 cmake --version
參考鏈接
- cmake的版本的更新以及和sudo cmake的區別
問題
- 使用這個方式之后,發現在普通用戶下還是之前的舊的版本,但是在root用戶下是最新的版本
- 導致sudo命令不可以使用,即使安裝了也沒有用。權限很高的命令,只可以通過切換root用戶的方式進行使用,使用命令 su root