树莓派学习笔记——交叉编译

PC机环境 ubuntu 14.04 64位

 

设置交叉工具链

   1. sudo apt-get install build-essential git
 
   2.clone交叉工具链
    在home路径下建立一个文件夹取名为rpi
    mkdir rpi
    进入该目录并执行clone操作
    cd rpi 

    git clone git://github.com/raspberrypi/tools.git

    cd ~/rpi/tools/arm-bcm2708/
 
    克隆完成之后可以通过pull更新tools
    cd ~/rpi/tools
    git pull origin

    该目录中存在4个文件夹,本例使用gcc-linaro-arm-linux-gnueabihf-raspbian 或 gcc-linaro-arm-linux-gnueabihf-raspbian-x64。前者对应32位系统后者对应64位系统。
    arm-bcm2708hardfp-linux-gnueabi  
    gcc-linaro-arm-linux-gnueabihf-raspbian
    arm-bcm2708-linux-gnueabi        
    gcc-linaro-arm-linux-gnueabihf-raspbian-x64
3.加入环境环境变量
    在/.bashrc文件中加入gcc交叉工具链目录。
    sudo gedit ~/.bashrc
    【32位系统】
    export PATH=$PATH:$HOME/rpi/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian/bin
    【64位系统】
    export PATH=$PATH:$HOME/rpi/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian-x64/bin
 
    source .bashrc
 
4.简单测试
    为了测试交叉工具链是否安装成功,可在控制台中输入
    arm-linux-gnueabihf-gcc -v
   是不是出来好多东西,那就对了.

2.简单的例子

 文件名为hello-world.c,该例子仅测试交叉编译是否成功并简单测试了浮点数功能。
  
  1. #include <stdio.h>  
  2. int main(void)  
  3. {  
  4.     float pi = 3.14;      
  5.     printf("Hello World\n");  
  6.     printf("%.2f\n",2*pi);  
 
   【交叉编译——简单指令】
    cd进入hello-world.c所在目录,输入以下指令以生成可执行文件。请注意该可执行文件不能在PC机上运行。
    arm-linux-gnueabihf-gcc hello-world.c -o hello-world
    最终可在hello-world.c的同目录中生成hello-world可执行文件。

    【交叉编译——makefile】
    当然也可在该目录下建立makefile文件,简单的makefile文件如下

  CC=arm-linux-gnueabihf-gcc  

  hello-world:hello-world.o  

  clean:  

   rm -rf hello-world.o hello-world  

    在makefile文件中使用了至少两条隐含规则,CC为默认工具链;*.o文件由同名的*.c文件生成。
    那么在控制台中输入make即可生成可执行文件。

    给树莓派传我编译好的可执行文件:

  scp -r ~/catkin_ws/src/beginner_tutorials/src/hello-world ubuntu@192.168.1.6:/home/ubuntu

   
   【SSH登陆执行】
    登陆之后进入可执行文件所在目录,修改该文件的执行权限。
    sudo chmod 755 hello-world
    ./hello-world
  是不是在树莓派的终端上出现了:

Hello World
6.28

那就ok了

测试完了删除:rm -rf  hello-world (不然看着不舒服)


 

 

 
posted @ 2015-11-30 17:22  知道分子  阅读(698)  评论(0编辑  收藏  举报