簡體   English   中英

在多通道 Ubuntu 20.10 下編譯 c++ 時出現間歇性“找不到文件”錯誤

[英]Intermittent “file not found” errors when compiling c++ under multipass Ubuntu 20.10

我正在嘗試使用多通道生成構建環境,源代碼位於主機上。 我的想法是我將源代碼從主機安裝到 VM 中,然后從 VM 內部運行構建。 multipass mount src ubuntu:/home/ubuntu/src )。

我正在嘗試構建的是一個相對較大的 c++ 項目,其中包含許多包含文件。 構建系統是 CMake + ninja 和 clang 8.0。

問題是構建失敗,各種標頭出現“找不到文件”錯誤。 每次“丟失”的文件都是不同的。 我說“丟失”是因為文件實際上都在那里。

這似乎與Linux (WSL) 的 Windows 子系統下的間歇性、隨機“找不到文件”錯誤完全相同,但使用建議的解決方法並沒有幫助(例如,我嘗試在 ninja 中設置 -j1)。

知道什么可能導致這種情況以及是否有解決方法嗎?

我的主機是 macOS Catalina,多通道 VM 實例是 Ubuntu 20.10。 multipass 本身是 1.5.0。

我最終向多通道團隊開放了一個 PR 經過一番調試,我們發現了兩個問題:

  1. macOS Catalina 的默認maxfiles限制為 256,在編譯大型項目時可能會遇到此限制。
  2. libssh 有一個限制, libssh使用它來進行掛載。

要解決此問題,您需要:

  1. 通過例如遵循這個來增加 macOS 中的maxfiles限制
  2. 通過 (1) 在 macOS 中安裝osxfuse ,(2) 在設置 -> 共享中啟用遠程登錄和 (3) 在 VM 中手動掛載文件夾
mkdir <mount_dir>
sshfs <host_user>@<host_ip>:<host_directory> <mount_dir>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM