前兩天開始倒騰樹莓派,使用ssh連接后,按照《鳥哥私房菜》中學習了一些指令之后想在linux上建立交叉編譯環境繼而能夠為以后為樹莓派編寫高效的較大的程序做准備。自己因為不熟悉Eclipse配置和粗心,所以折騰了好久,所以把流程記錄下來,方便后來之人。
首先,交叉編譯是什么呢?簡單以在PC機上編譯樹莓派上的程序來說,就是利用我們PC,編譯出樹莓派上能夠運行的程序。一般PC是x86的CPU,而樹莓派Arm的。由於PC機的內存和CPU主頻相比於樹莓派還是快得多的,所以編譯也會快很多,節省編譯時間。
那么下面開始介紹如何在Linux下建立咯!
工具准備:
-
樹莓派的官方開發工具在github上可以下載到:https://github.com/raspberrypi/tools。也可以使用git clone 加上述地址就可以通過shell下載到當前工作目錄啦。如果沒有git就裝一個哦。下載之后解壓會在tools文件夾下看到arm-bcm2708文件 夾,進入后能看到如下文件夾:
最下面的兩個我們會用到的,如果是64位的電腦就選擇第四個以x64結尾的文件夾,如果是32位的就選擇第5個咯。進入后會發現bin文件夾,里面都是可執行文件,就是我們要用的交叉編譯工具啦。將這個目錄設置為環境變量,就可以在命令行里面使用指令調用編譯工具啦。
Eclipse 集成開發環境。從Eclipse官網下載Eclipse IDE for C/C++ Developers,現在最新版貌似是mars版。根據自己電腦CPU的位數,在官網上選擇合適32位或者64位的就好。因為Eclipse依賴於 Java,所以如果Linux中自帶Java(JDK或者JRE都可以)的話Eclipse直接解壓后點擊解壓后的文件夾中的Eclipse應該就可以使 用。不過如果是64位的JAVA的話,對應的Eclipse也需要是64位的,否則Eclipse無法啟動哦。如果Linux中沒有Java的話,可以到 Oracle的官網下載,並選擇合適的版本(32位或者64位,JRE和JDK均可,空間余量大的話就JDK吧),安裝或解壓后設置好,使環境變量生效后 就可以啟動Eclipse了。小耗子使用的是OpenSuse Leap42.1,自帶OpenJDK,不用下載可以直接使用Eclipse啦,順便安利一下大蜥蜴。
-
設置Eclipse的工程屬性。
新建工程時選擇Empty Project 並選擇Cross Toolchain:
在后面的提示中輸入交叉編譯工具鏈的前綴與路徑,前綴就是arm-linux-gnueabihf-,記得別打錯哦,
圖片中的是我打錯了的啊!
圖片中的是我打錯了的啊!
圖片中的是我打錯了的啊!
當時打錯了結果總是報錯說在Path中找不到編譯器,弄得小耗子頭疼了半天(→_→)。
建好工程后,右擊工程,選擇properties,在左側欄中選中C/C++ General →Path and Symbols,設置Include文件夾,注意為確保不漏,Assembly、GNU C以及GNU C++這三個都要設置這些路徑哦:
設置庫路徑:
選中左側欄中的C/C++ Build→Settings,進行交叉編譯器設置:
首先可以看到之前在建立工程時的前綴和編譯工具鏈路徑會在這里顯示。前綴千萬不要打錯啊。
查看編譯器工具的設置:

可以看到,在Command下方的All Options中出現了工具鏈的目錄。在編譯時,Eclipse就會調用 前綴 + 相應的工具 (如gcc) 去編譯啦。下方的Compiler、Linker、Assembler的Command分別為g++、g++、as。
配置好以上內容后就可以添加個.cpp的原文件寫個Hello Raspi來測試下啦。Eclipse是自帶Sftp工具可以訪問同一個網絡下樹莓派的文件的哦,可以將編譯好的文件復制到樹莓派中執行哦。詳見參考鏈接3。
注意一點,我在寫Hello World程序測試的時候出現了cout無法被解析索引的編譯錯誤,后來在Indexer的設置里面將文件大小限制調大就解決了,這個問題可能是因為默認包含的文件限制太小導致有些文件沒被包含有關。如果大家遇到可是試着解決。
在配置環境的過程中,參考了很多博客的配置內容,感謝各個博主無私的奉獻。
參考鏈接:
-
http://www.cnblogs.com/emouse/archive/2013/06/07/3124063.html
-
http://my.oschina.net/robeer/blog/208040(這篇是說BBB的交叉編譯環境,同理)
-
http://blog.csdn.net/luyejie8888/article/details/38611293(如何使用Eclipse傳送文件並輸入命令,在windows下沒有太多差別啦
最后安利一下我的微信公眾號: