6、在windows系統(tǒng)里面安裝Eclipse IDE和交叉編譯器,編譯生成Linux RT下的動態(tài)鏈接庫

1)????? 首先我們需要在Windows系統(tǒng)里面安裝Java插件(建議使用Java SE 6或更高版本),用戶可以點擊這個鏈接進行下載安裝:https://www.java.com/en/,如圖9-88所示。
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?

?2)????? 安裝用于NI Linux Real-Time Eclipse Edition的C/C++開發(fā)工具(IDE),注意,這個工具是NI專門設(shè)計用于RT系統(tǒng)驅(qū)動編譯的IDE開發(fā)環(huán)境。這個IDE跟LabVIEW版本有關(guān)系:
u 對于LabVIEW 2014至LabVIEW 2016,請安裝適用于NI Linux Real-Time的C/C++開發(fā)版本:Eclipse Edition 2014-2016 。
u 對于LabVIEW 2017到LabVIEW 2020,請安裝用于NI Linux Real-Time的C/C++開發(fā)版本:Eclipse Edition 2017-2018。
因為,后續(xù)我們用來開發(fā)樹莓派的Linux RT版本是LabVIEW 2020社區(qū)版,所以這里選擇的Eclipse版本是2017-2018,下載鏈接如下:https://www.ni.com/en-us/support/downloads/software-products/download.c-c---development-tools.html,在這個頁面里面,選擇2017版本,然后點擊右下角的“下載”按鈕即可,如圖9-89所示。下載安裝之后,重啟一下電腦,在開始菜單的“National Instruments”文件夾里面就多出來了一個Eclipse開發(fā)環(huán)境IDE,如圖9-90所示。


3)????? 啟動用于NI Linux Real-Time的C/C++開發(fā)工具。在彈出來的向?qū)ы撁胬锩?,選擇一個Workspace工作間,比如,這里我們選擇默認的路徑,如圖9-91所示,然后點擊“OK”按鈕。

4)????? 進入Eclipse編輯頁面之后,選擇File>>New>>C Project,如圖9-92所示,然后在彈出來的項目屬性頁面里面,選擇Shared Library里面的空項目,右側(cè)的編譯器工具鏈選擇Cross GCC Toolchain,如圖9-93所示。因為我們只需編譯生成動態(tài)鏈接庫so文件即可。


5)????? 點擊上圖9-93頁面中的“Next”下一步之后,同時勾選Debug和Release,如圖9-94所示,然后點擊下一步繼續(xù)。

6)????? 下一步會提示用戶需要配置Cross GCC交叉編譯器的前綴和路徑,用戶可以參考下面的列表,根據(jù)自己使用的設(shè)備CPU種類和軟件協(xié)議棧版本,選擇合適的NI Linux Real-Time編譯器路徑和前綴。
前綴:
(基于ARM的目標(biāo),2013軟件棧)?arm-none-linux-gnueabi-
(基于ARM的目標(biāo),2014和2017軟件棧)?arm-nilrt-linux-gnueabi-
(基于Intel x64的目標(biāo),2014和2017軟件棧)?x86_64-nilrt-linux-
路徑:
(基于ARM的目標(biāo),2013軟件棧)
\<National Instruments>\Eclipse\toolchain\gcc-4.4-arm\i386\bin
(基于ARM的目標(biāo),2014軟件棧)
\<National Instruments>\Eclipse\14.0\arm\sysroots\i686-nilrtsdk-mingw32\usr\bin\armv7a-vfp-neon-nilrt-linux-gnueabi
(基于ARM的目標(biāo),2017軟件棧)C:\build\17.0\arm\sysroots\i686-nilrtsdk-mingw32\usr\bin\arm-nilrt-linux-gnueabi
(基于Intel x64的目標(biāo),2014軟件棧)
\<National Instruments>\Eclipse\14.0\x64\sysroots\i686-nilrtsdk-mingw32\usr\bin\x86_64-nilrt-linux
(基于Intel x64的目標(biāo),2017軟件棧)
C:\build\17.0\x64\sysroots\i686-nilrtsdk-mingw32\usr\ bin\x86_64-nilrt-linux
?????? ?因為目前我們購買的工業(yè)級樹莓派CM4里面的博通CPU采用的是ARM Cortex-A72架構(gòu),LabVIEW開發(fā)軟件版本是2020,因此,這里我們只能選擇兼容性最高的2017版本。如圖9-95所示。最后點擊“Finish”完成就可以創(chuàng)建一個基于ARM的C項目了,如圖9-96所示。


7)????? 接下來,我們將提前準(zhǔn)備好的Xillybus PCIe C語言源程序和頭文件添加到上面創(chuàng)建的這個工程下。右擊項目名稱,選擇里面“Import”導(dǎo)入選項,如圖9-97所示;在彈出來的選擇對話框里面選擇“File System”文件系統(tǒng),如圖9-98所示;再把我們事先準(zhǔn)備好的C文件和H文件添加進來,如圖9-99所示;添加完成后的項目瀏覽器效果,如圖9-100所示。




8)????? 接下來,還需要對項目進行參數(shù)設(shè)置才能編譯。右擊項目名稱,選擇“Properties”屬性,如圖9-101所示。

9)????? 在彈出來的“Properties”屬性對話框的左窗格中選中“C/C++ Build”,再從“Builder type”編譯器類型下拉菜單中選擇“Internal builder” 內(nèi)部編譯器以進行編譯生成,如圖9-102所示。

10) 先點擊左側(cè)“C/C++ Build ”里面的“Settings”設(shè)置選項卡,再展開中間的“Cross GCC Compiler”編譯器,選擇里面的“Miscellaneous”其他,再在右側(cè)的“Other flags” 其他標(biāo)志文本框中,注意,在現(xiàn)有文本之后添加一個空格,然后輸入以下值之一:
(基于ARM的目標(biāo),2017軟件棧)--?sysroot=C:\build\17.0\arm\sysroots\cortexa9-vfpv3-nilrt-linux-gnueabi
(基于Intel x64的目標(biāo),2017軟件棧)--?sysroot=C:\build\17.0\x64\sysroots\core2-64-nilrt-linux
因為,樹莓派的CPU屬于ARM架構(gòu),所以這里我們需要在圖9-103里面輸入ARM目標(biāo)相關(guān)的編譯路徑。

11) 同樣,左側(cè)的“Settings”設(shè)置選項卡不變,展開中間的“Cross GCC Linker”選項,點擊里面的“Miscellaneous”其他,然后在“Linker flags”鏈接器標(biāo)志文本框中輸入以下值之一:
????????????? (基于ARM的目標(biāo),2017軟件棧)???????????????????????????????
????????????? --?sysroot=C:\build\17.0\arm\sysroots\cortexa9-vfpv3-nilrt-linux-gnueabi
????????????? (基于Intel x64的目標(biāo),2017軟件棧)
????????????? --?sysroot=C:\build\17.0\x64\sysroots\core2-64-nilrt-linu
?
同理,因為樹莓派的CPU屬于ARM架構(gòu),所以這里我們需要選擇ARM架構(gòu)的鏈接器路徑,如圖9-104所示。

12) 在“項目屬性”窗口中導(dǎo)航到C/C++ General>>Paths and Symbols。轉(zhuǎn)到“Symbols” 符號選項卡,然后選擇“Add”添加。輸入符號名稱kNIOSLinux,點擊OK,然后點擊下方的“Apply”應(yīng)用生效一下,如圖9-105.

13) 在“項目屬性”窗口中,選擇C/C++ Build>>Settings,然后轉(zhuǎn)到Cross GCC Compiler>>Miscellaneous部分。勾選“Position Independent Code”位置獨立代碼,如圖9-106所示。

14) 轉(zhuǎn)到“Error Parsers”錯誤解析器選項卡。只要勾選里面的3項:GNU Assembler Error Parser、GNU gmake Error Parser 7.0、GNU Linker Error Parser,如圖9-107所示。

15) 接下來,轉(zhuǎn)到C/C++ Build>>Settings>>Cross GCC Compiler,在里面添加編譯器命令-fvisibility = protected,以指示GCC將符號可見性設(shè)置為protected。點擊 “Apply”應(yīng)用生效一下,然后按下“OK” 關(guān)閉屬性窗口,如圖9-108所示。

16) 最后在菜單欄中選擇Project>>Build Project(項目>>編譯項目),將整個項目編譯生成Linux系統(tǒng)下可以調(diào)用的動態(tài)鏈接so文件,如圖9-109所示。編譯完成后,打開項目根目錄下的Debug文件夾,里面多出來一個后綴為.so的動態(tài)鏈接庫文件,如圖9-110所示,這個文件就是我們接下來用在LabVIEW Linux RT程序里面調(diào)用的庫函數(shù),類似Windows下的DLL文件。

