在防火牆後執行 go get
或是 go install
從 github.com 取得套件時,發現 go 會使用 git://
去存取。因為網路管制的關係,無法連到 TCP 22 埠,所以就連線失敗無法取得套件。
使用下面的命令設定 git 針對特定目標的連線方式後,就可以順利取得套件了:
git config --global url."https://github.com/".insteadOf git@github.com:
An apple a day keeps the doctors away.
在防火牆後執行 go get
或是 go install
從 github.com 取得套件時,發現 go 會使用 git://
去存取。因為網路管制的關係,無法連到 TCP 22 埠,所以就連線失敗無法取得套件。
使用下面的命令設定 git 針對特定目標的連線方式後,就可以順利取得套件了:
git config --global url."https://github.com/".insteadOf git@github.com:
本來以為是憑證的問題,後來發現原來是連線方法的問題。
可能是因為 https_proxy
被設定為 https://proxy...
的型式,導致 rustup 使用 TLS 去連 proxy 伺服器,但 proxy 並不會進行 TLS 連線,所以就連線失敗。
把 https_proxy
環境變數中的 https 改成 http 就可以了。
錯誤的訊息長下面這樣子:
info: syncing channel updates for 'stable-x86_64-unknown-linux-gnu'
error: could not download file from 'https://static.rust-lang.org/dist/channel-rust-stable.toml.sha256' to '/.../.rustup/tmp/d0y3dwu_7bx2v1ub_file'
info: caused by: error during download
info: caused by: [35] SSL connect error (error:140770FC:SSL routines:SSL23_GET_SERVER_HELLO:unknown protocol)
在編譯時 (嚴格說來是前處理的階段) 除了使用 -I
指定額外的標頭檔資料夾路徑之外,還有 -iquote
,
-isystem
, -idirafter
可以使用。
利用 -iquote
指定的資料夾路徑,只會在使用 #include "..."
(quote form) 型式的引入中被參考,對使用 #include <...>
型式的引入沒有作用。
使用 -I
, -isystem
, -idirafter
這三種參數指定的資料夾路徑,則會對 #include "..."
與 #include <...>
型式的引入參考皆有影響。
透過 -isystem
指定的資料夾路徑下的標頭檔會被視為 system header 來處理,會有一些特殊待遇。
特殊待遇看起來主要是在警告訊息的處理上,被視為 system header 的標頭檔所產生的警告訊息中,除了特別利用 #warning 所產生的之外,其他都會被抑制掉。
在 GCC 的文件中有提到,利用 -isystem
與 -idirafter
引入的標頭檔都會被視為 system header 來處理,不過在 Clang 的文件中則是只有提到 -isystem
的部份。
這些選項在 GCC 跟 Clang 都有支援,行為看起來大致上是一樣的。
在搜尋順序上,目前只看到 GCC 文件有明確的說是以下的順序,不過 Clang 應該是一樣的:
#include "..."
型式) 檔案所在的資料夾路徑#include "..."
型式) -iquote
指定的資料夾路徑-I
指定的資料夾路徑-isystem
指定的資料夾路徑-idirafter
指定的資料夾路徑Reference: