按照官方的文档来配置基础环境即可,这部分没什么问题。
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