IronPdf.LinuxARM:無法在靜態 TLS 區塊中分配記憶體

This article was translated from English: Does it need improvement?
Translated
View the article in English

使用 LinuxARM 版本的 IronPDF 時,嘗試在 Linux ARM 上動態載入libcef.so時會出現異常訊息。 然後會出現以下異常訊息。

IronSoftware.Exceptions.IronSoftwareDeploymentException: Error while deploying IronPdf Chrome renderer: '/irontest/testIronPdfOnLinuxArm/bin/Debug/net8.0/runtimes/linux-arm64/native/libcef.so: cannot allocate memory in static TLS block'. To learn more about making an engineering support request please visit: . To learn how to solve this issue please read https://ironpdf.com/troubleshooting/error-while-deploying-chrome-dependencies/ [Issue Code IRONPDF-CHROME-DEPLOYMENT-ERROR-LINUX]

問題

在 Linux ARM 上動態載入libcef.so時,您可能會遇到以下錯誤:"無法在靜態 TLS 區塊中分配記憶體"。此錯誤是與 Chromium 嵌入式框架 (CEF) 相關的已知問題。 這是因為新版本的 CEF 需要比 Linux 動態連結器預設分配的更多的線程本機儲存 (TLS) 空間。 這個問題已有詳細記錄,並且會影響 Linux ARM 處理器和 Linux ARM x64 系統,這兩個系統都會遇到執行緒本地儲存 (TLS) 不足的問題,無法使用較新版本的 CEF。 您可以在這裡找到更多資訊和相關討論。

解決方案

解決此異常的方法是,在運行應用程式之前手動設定它,如下所示。

export LD_PRELOAD=/path/to/libcef.so
export LD_PRELOAD=/path/to/libcef.so
SHELL

透過在 C# 進程之前手動設定 LD_PRELOAD,我們強制連結器首先載入libcef.so ,然後再載入其他函式庫,從而確保足夠的 TLS 記憶體分配。 事實證明,這種方法非常有效,可以解決問題,並防止出現TLS allocation錯誤。 您可以放心,這個方案是有效的。

LD_PRELOAD 方法是其他使用者(包括CEF 論壇)推薦的最有效、最簡單的方法。

目前這只是權宜之計,直到 CEF 最終解決 ARM 架構上的這個問題,就像他們透過減少 libxml2 中的 TLS 使用量來解決 x64 架構的問題一樣。然而,CEF 何時解決這個問題還沒有明確的時間表。

Curtis Chau
技術撰稿人

Curtis Chau 擁有電腦科學學士學位(卡爾頓大學),專長於前端開發,精通 Node.js、TypeScript、JavaScript 和 React。Curtis 對製作直覺且美觀的使用者介面充滿熱情,他喜歡使用現代化的架構,並製作結構良好且視覺上吸引人的手冊。

除了開發之外,Curtis 對物聯網 (IoT) 也有濃厚的興趣,他喜歡探索整合硬體與軟體的創新方式。在空閒時間,他喜歡玩遊戲和建立 Discord bots,將他對技術的熱愛與創意結合。

準備好開始了嗎?
Nuget 下載 17,386,124 | 版本: 2026.2 剛剛發布