按照官方的文檔來配置基礎環境即可,這部分沒什么問題。
https://code.visualstudio.com/docs/cpp/config-wsl
配置好環境(c_cpp_properties.json、tasks.json、launch.json)之后,我嘗試用 vscode build uWebsocket 的官方示例 main.cpp,遇到了一系列報錯,記錄如下:
- 報錯一:fatal error: uWS.h: No such file or directory
這是因為:vscode 的 c_cpp_properties.json 配置只是用來代碼提示,build 的時候不會讀這個配置,所以要在 tasks.json 中補充 g++ 的編譯參數,指定在 /usr/include/uWS/ 路徑下查找頭文件 uWS.h。
需要注意:/usr/include/uWS/ 最后的斜杠必須要有。
- /usr/bin/ld: cannot find -luWS -lpthread -lz -lssl
這是因為:tasks.json 中的 args 字段不能包含空格,不同參數必須分開寫。
錯誤的寫法:
正確的寫法:
查問題的過程中用到了一些命令,記錄如下:
g++ 直接打印搜索路徑:
g++ -print-search-dirs
g++ 打印詳細信息:
--verbose
打開/關閉 --verbose 選項,編譯輸出會有所不同
查看 include 搜索路徑:
echo | g++ -v -x c++ -E -
查看 ld 命令搜索路徑
ld --verbose | grep SEARCH
查看庫文件所在路徑,以 libuWS.so 為例
ldconfig -p | grep libuWS
刷新庫文件緩存
sudo ldconfig