ROS在A(yíng)RM上的編譯
3、編譯源碼
按照教程上說(shuō)的進(jìn)行依賴(lài)包的安裝:
rosdep install --from-paths src --ignore-src --rosdistro groovy -y
然后應該還需要安裝cmake(我之前就已經(jīng)安裝好了,不知道是不是應該在這一步)。我是從官網(wǎng)下載的源碼(http://www.cmake.org/),然后在arm上編譯的。安裝方法參考鏈接(http://hi.baidu.com/phpbooker/item/38ca262ed599d10c73863e05),arm上編譯太慢了,用了將近一個(gè)小時(shí),不知道可不可以在PC上交叉編譯,不做深究了。
接下來(lái)就是最重要的過(guò)程了——編譯。這個(gè)過(guò)程是痛苦而漫長(cháng)的,arm板的主頻慢,編譯一次代碼需要20分鐘左右,而且每次出錯總是在編譯了好長(cháng)時(shí)間之后,各種依賴(lài)的包需要安裝。如果現在進(jìn)行編譯,肯定會(huì )出現一大堆錯誤,可以根據這些錯誤進(jìn)行一步步的處理,基本都是所依賴(lài)的包沒(méi)有安裝。其中最重要的就是boost庫的包。因為ROS中很多的代碼是使用C++寫(xiě)的,都使用了boost靜態(tài)庫,所以必須在arm中的ubuntu系統中安裝boost庫。boost庫是我糾結時(shí)間最長(cháng)的一個(gè)問(wèn)題,我使用了各種各樣的方法進(jìn)行安裝:
(1)直接apt-get安裝
(2)下載源碼在PC機上交叉編譯然后放到arm中
(3)直接下載官方針對arm架構已經(jīng)編譯好的deb包進(jìn)行安裝(https://launchpad.net/ubuntu/+source/boost1.46/1.46.1-7ubuntu3/+build/3060825)
至于boost庫的版本,我也嘗試過(guò)很多,從1.40到1.52,最后還是第三種方法靠譜,前兩種方法安裝完成后在編譯過(guò)程中總是會(huì )報錯說(shuō)找不到boost中的某個(gè)庫。打開(kāi)上面的鏈接,會(huì )有一個(gè)boost庫的列表:

我是把上面的包全部一個(gè)一個(gè)下載安裝了,基本也是相互依賴(lài)的。安裝過(guò)程中可能還是會(huì )有一些其他依賴(lài)的包,都可一使用pip或者easy_install進(jìn)行安裝。
到現在為止,終于可以開(kāi)始編譯、安裝了:
./src/catkin/bin/catkin_make_isolated --install --install-space /opt/ros/groovy
如果一切正常,而是分鐘后就匯編一安裝結束了。
添加環(huán)境路徑:
source /opt/ros/groovy/setup.bash
echo "export ROS_PACKAGE_PATH=~/ros_workspace:$ROS_PACKAGE_PATH" >> ~/.bashrc
echo "export ROS_WORKSPACE=~/ros_workspace" >> ~/.bashrc
. ~/.bashrc
終于安裝完成了,在終端中輸入“roscore”,看一下是否正常運行了。在這一步,我這里出現了一個(gè)錯誤:
what(): locale::facet::_S_create_c_locale name not valid
后來(lái)使用google解決了(http://cruisever.blog.163.com/blog/static/786117572010817112310741/),加入:
export LC_ALL="C"
終于可以正常運行了。進(jìn)行了簡(jiǎn)單的talker和listener的測試,一切正常,雖然運行著(zhù)實(shí)有點(diǎn)慢,但是初步移植應該完成了,后面應該還有更多問(wèn)題等著(zhù)我的。
c++相關(guān)文章:c++教程
評論