以下博文演示了在Vitis? 中對 Linux 應用程序開發(fā)的過程中如何使用外部庫。
我將使用由 libxml2 庫所提供的“Parse and validate an XML file with an xmlReader”應用示例來演示本示例,并且和基于 ZCU102 開發(fā)板的 PetaLinux BSP 編譯出來的 Linux 鏡像相關聯(lián)。
創(chuàng)建 Linux 域
要在 Vitis 中開發(fā)嵌入式 Linux 應用,需要在工作空間內創(chuàng)建含 Linux 域的平臺工程。
此平臺工程是根據(jù)所選的硬件規(guī)格文件 (XSA) 創(chuàng)建的,該文件可以是在 Vivado 中生成的定制 XSA,也可以是 Vitis 內的預定義 XSA 文件。
由于本示例是使用 PetaLinux BSP 構建的,因此用于創(chuàng)建平臺的 XSA 文件與用于 PetaLinux 工程的 XSA 文件相同。
此外,目標的啟動組件通常在 PetaLinux中生成(或者也可以使用pre-built中的組件),因此無需選中“Generate boot components”(生成啟動組件)選項。
生成的硬件平臺工程提供了基本 Linux 域,其中所有可選設置均未定義。
此工程足以用于開發(fā)簡單的應用,例如,hello world。
以該域為目標的應用將搭配 Vitis IDE 使用預定義的工具鏈和 sysroot。
編譯好的應用程序可能可以在 Linux 鏡像上正常運行,不出現(xiàn)任何問題,但還請謹記,也可能因為主機上安裝的庫/頭文件與Linux鏡像上的不一致而導致出錯。
預安裝的系統(tǒng)僅提供一些基本庫,因此在編譯我們這個示例的時候,因為缺少這些頭文件和庫,很可能無法編譯成功。
構建 Linux 庫
PetaLinux 提供了根文件系統(tǒng)配置菜單,用于構建庫并將其添加到生成的 Linux 鏡像或分發(fā)版中。如《PetaLinux 工具文檔:參考指南》(UG1144) 中所述,此配置為靜態(tài)菜單,其中提供了賽靈思支持的實用工具和庫。
此外,庫不支持的配方可從現(xiàn)有/已使用的層次或者從其它層次添加到鏡像中。如需獲取進一步的指導信息,請參閱 (UG1144) 中的將現(xiàn)有配方添加到根文件系統(tǒng)中部分。
對于此示例,在鏡像中添加了包含開發(fā)包和調試包在內的 libxml2 庫。
使用 petalinux-build 命令把庫都編譯一下。
生成目標 sysroot
如 (UG1144) 的SDK 生成部分中所述,PetaLinux 提供了 SDK 生成功能,用于構建和部署交叉編譯工具鏈和目標 sysroot 以供應用開發(fā)之用。
在默認目錄內封裝好 sysroot 后,即可在生成的 SDK 文件夾內找到 libxml2 的庫和頭文件。
配置 Linux 域
Vitis 中的 Linux 域配置菜單提供了設置可選 sysroot 目錄的選項。完成配置和構建后,sysroot 將復制到平臺的導出目錄中,以便后續(xù)供以 Linux 域為目標的任何應用使用。
此外,創(chuàng)建的應用將自動使用導出的 sysroot 目錄。
創(chuàng)建 Linux 應用
使用定制 sysroot 配置完 Linux 域,并在 Vitis 中以該 Linux 域為目標創(chuàng)建 Linux 應用工程之后,該應用將自動配置為使用先前導出的 sysroot 路徑。
以上配置設置將自動填充應用工程的 C/C++ 設置,用來設置編譯器的“Include Paths (-I)”(包含路徑)選項和 sysroot (--sysroot) 選項以及連接器的庫搜索路徑 (-L)。由該工具配置的編譯器和連接器設置均可在軟件平臺配置的選項中找到。
有些庫文件,例如:libxml2 ,或是include 目錄中需要包含的額外的分層文件夾等,要配置額外的搜索路徑來查找這些頭文件。在此示例中,需將 /usr/include 內的 libxml2 文件夾添加到工程設置中。
最后,在工程配置選項中,需通過庫選項 (-l) 選中將在應用中使用的所有庫。
現(xiàn)在 Linux 應用工程已正確配置了所需要的第三方庫,因此可成功構建該工程。
結論
Vitis IDE 支持以開箱即用方式進行 Linux 應用開發(fā),在此過程中,它會使用預安裝的工具鏈和庫以及為您的目標平臺而創(chuàng)建的默認 Linux 域。
此外,該域可配置為利用可選 sysroot 文件夾來使用第三方庫。該選項能夠與 PetaLinux 的 SDK 生成功能完美搭配,以便將該域配置為使用專為 Linux 鏡像構建的庫,并將這些庫部署在目標平臺上。
審核編輯:湯梓紅
-
嵌入式
+關注
關注
5082文章
19126瀏覽量
305242 -
Linux
+關注
關注
87文章
11304瀏覽量
209521 -
SDK
+關注
關注
3文章
1036瀏覽量
45950 -
Vitis
+關注
關注
0文章
146瀏覽量
7432
發(fā)布評論請先 登錄
相關推薦
評論