WSL中使用vcpkg安装pcl库出现编译失败的原因

  在wsl使用vcpkg install pcl安装时,出现了BUILD_FAILED失败提示,查看log文件出现如下的错误:

compilation problem, c++: internal compiler error: Killed (program cc1plus)

 

  像是内存不足,所以调整了wsl的内存和swap,首先修改用户目录下的 .wslconfig文件,然后wsl --shutdown后重启wsl

[wsl2]
memory=10GB
swap=10GB

  还是同样的错误。通过top查看发现内存和swap都被使用到接近最大值,这就有点异乎寻常了。

 

最后通过谷歌发现一个类似的问题 https://groups.google.com/g/hoomd-users/c/3FnnVfO3FqA

其中有个解答给了很大的提示

Try make without the -j12. Virtual machines usually don't have enough resources to run parallel builds.

  有可能vcpkg的编译参数启用了多核心,但wsl核数太少导致在编译过程中内存占用异常。继续修改.wslconfig文件,增加核数配置

[wsl2]
memory=10GB
swap=10GB
processors=8

  然后再次shutdown后重启wsl,执行vcpkg install pcl,然后通过htop命令查看,发现8核心CPU跑满,内存占用率仍然较高,但swap基本正常,一直到最后编译成功。

 

  那么wsl默认核心数究竟是多少呢?

  尝试将用户目录中的.wslconfig文件改名,然后将wsl进行shutdown后重启,再次进行htop,发现wsl显示有20个核心,8G内存,2G交换空间(宿主机是14核心,20个逻辑处理器,16G内存)

  所以实际原因不是wsl核数太少,而是核数太多,有可能导致同时并行编译的进程数太多,超过了内存和swap的负荷。

 

  通过修改.wslconfig文件,减少了wsl的核心数,也就抑制了vcpkg进行并行编译的进程数,进而降低了编译时的内存负担。

 

原文链接: https://www.cnblogs.com/csliwei/p/17063341.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍

    WSL中使用vcpkg安装pcl库出现编译失败的原因

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/313338

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年2月16日 下午12:46
下一篇 2023年2月16日 下午12:47

相关推荐