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 機器人,結合科技與創意的樂趣。

準備好開始了嗎?
Nuget 下載 16,493,056 | Version: 2025.11 剛發表