---
# System prepended metadata

title: Build ladybird

---

# Build ladybird

## Problem

### X prog
```shell
步驟 5：配置 WSL2 的圖形界面支持
Ladybird 是一個圖形化應用程序，因此需要在 WSL2 中設置圖形界面支持。

方法 1：使用 Windows 原生圖形支持（WSLg）
如果你使用的是 Windows 11，WSL2 已內置圖形支持（WSLg）。只需確保 WSL2 和 Windows 系統已更新：
複製
wsl --update
運行 Ladybird 時，應該會自動啟動圖形界面。
方法 2：使用第三方 X 服務器
如果你使用的是 Windows 10 或需要其他圖形支持：

安裝 X 服務器（例如 VcXsrv 或 Xming）。
啟動 X 服務器，並設置 DISPLAY 環境變數：
複製
export DISPLAY=$(cat /etc/resolv.conf | grep nameserver | awk '{print $2}'):0
export LIBGL_ALWAYS_INDIRECT=1
然後再次運行 Ladybird：
複製
./ladybird
注意事項
性能問題：WSL2 的圖形性能可能不如原生 Linux 或虛擬機中的性能。
依賴問題：如果在編譯過程中遇到缺少依賴的問題，請根據錯誤消息安裝相應的庫。
持續更新：Ladybird 是一個活躍開發中的項目，代碼庫可能會頻繁更新。如果遇到問題，請檢查官方文檔或提交 Issue。
如果有具體的錯誤或問題，請提供詳細信息，我可以進一步幫助解決！
```

### jakt, CookieJar.cpp, some libraries, headless-browser 

- [x] q4
- [ ] q1
- [ ] 56 can be ignored
- [ ] 



```csv
問題 1：Jakt 編譯器未找到
複製
Jakt compiler not found at /home/urbaner/ladybird/Build/serenity/Toolchain/Local/jakt/bin/jakt, disabling jakt
原因：Ladybird 項目依賴 Jakt 編譯器，但它在指定的路徑中未找到。

解決方法：

確保 Jakt 已經安裝。

如果尚未安裝，按照以下步驟安裝 Jakt：

複製
git clone https://github.com/SerenityOS/jakt.git
cd jakt
cmake -B Build -S .
cmake --build Build
sudo cp Build/bin/jakt /usr/local/bin/
確保 jakt 在系統路徑中：

複製
jakt --version
清理構建目錄並重新構建：

複製
rm -rf Build
cmake -G Ninja ..
ninja
問題 2：缺少 CookieJar.cpp 源文件
複製
Cannot find source file: /home/urbaner/ladybird/Build/serenity/Userland/Applications/Browser/CookieJar.cpp
原因：Ladybird 的代碼倉庫可能不完整，或者某些文件在最近的更新中被移動或刪除。

解決方法：

確保代碼倉庫是最新的：

複製
git pull origin main
如果問題仍然存在，嘗試將子模組更新到最新版本：

複製
git submodule update --init --recursive
清理構建目錄並重新構建：

複製
rm -rf Build
cmake -G Ninja ..
ninja
如果問題仍未解決，檢查 Ladybird 的官方問題追蹤頁面（如 GitHub Issues），看看是否有相關的問題報告。如果有，可能需要等待官方修復。

問題 3：headless-browser 目標不存在
複製
The dependency target "headless-browser" of target "WebDriver" does not exist.
原因：headless-browser 是 WebDriver 的依賴目標，但它未正確生成。這可能是由於缺少某些依賴或配置錯誤。

解決方法：

確保所有依賴項已正確安裝（例如 Qt6、CMake 等）。

如果你使用的是舊的構建目錄，嘗試清理並重新生成：

複製
rm -rf Build
cmake -G Ninja ..
ninja
如果問題仍然存在，嘗試手動禁用 WebDriver（如果它不是必需的）：
在 CMakeLists.txt 中，添加以下行來禁用 WebDriver：

複製
set(ENABLE_WEBDRIVER OFF)
再次構建：

複製
cmake -G Ninja ..
ninja
問題 4：缺少一些庫和工具
複製
-- Looking for pulse/pulseaudio.h - not found
-- Could NOT find XKB (missing: XKB_LIBRARY XKB_INCLUDE_DIR)
-- Could NOT find WrapVulkanHeaders (missing: Vulkan_INCLUDE_DIR)
原因：系統中缺少一些必要的開發庫，例如 PulseAudio、XKB、Vulkan 等。

解決方法：

安裝缺失的庫：

複製
sudo apt install libpulse-dev libxkbcommon-dev libvulkan-dev
再次構建：

複製
cmake -G Ninja ..
ninja
問題 5：CMake 警告（FetchContent_Populate 已棄用）
複製
Calling FetchContent_Populate(lagom) is deprecated
原因：CMake 警告你使用的 FetchContent_Populate 已被棄用，但這只是警告，應該不會影響構建。

解決方法：如果你想隱藏這些警告，可以在構建時加上 -Wno-dev：

複製
cmake -G Ninja -Wno-dev ..
ninja
問題 6：鏈接器選項不受支持
複製
-- Performing Test LAGOM_LINKER_SUPPORTS_LINKER:--gdb-index - Failed
-- Performing Test LAGOM_LINKER_SUPPORTS_LINKER:-Bsymbolic-non-weak-functions - Failed
原因：鏈接器可能不支持某些選項，但這通常是非致命問題。

解決方法：可以忽略這些錯誤，繼續構建。

總結
按照以下步驟進行排查和修復：

安裝 Jakt 編譯器並確保其在系統路徑中。
確保代碼倉庫和子模組是最新的。
安裝缺少的系統依賴（如 PulseAudio、XKB、Vulkan）。
清理構建目錄並重新構建。
如果問題仍未解決，檢查 Ladybird 的官方問題追蹤頁面以獲取最新資訊。
如果你仍然遇到問題，請提供新的錯誤輸出，我可以幫助進一步排查！

# Add LLVM GPG signing key
sudo wget -O /usr/share/keyrings/llvm-snapshot.gpg.key https://apt.llvm.org/llvm-snapshot.gpg.key

# Optional: Verify the GPG key manually

# Use the key to authorize an entry for apt.llvm.org in apt sources list
echo "deb [signed-by=/usr/share/keyrings/llvm-snapshot.gpg.key] https://apt.llvm.org/$(lsb_release -sc)/ llvm-toolchain-$(lsb_release -sc)-19 main" | sudo tee -a /etc/apt/sources.list.d/llvm.list

# Update apt package list and install clang and associated packages
sudo apt update -y && sudo apt install clang-19 clangd-19 clang-format-19 clang-tidy-19 lld-19 -y
```