前言
使用树莓派交叉编译helloworld
安装32位库
由于ubutnu 13.04之后已经没有了ia32-libs这个东西,所以在执行sudo apt-get install ia32-libs 会找不到对应的包。
1 | $ dpkg-query -S libgtk-x11-2.0.so.0 (查寻64位库) |
然后再次查看
$ dpkg-query -S libgtk-x11-2.0.so.0 (查寻64位库)
可以看到多了两个32位的库
1 | libgtk2.0-0:amd64: /usr/lib/x86_64-linux-gnu/libgtk-x11-2.0.so.0 |
然后安装arm下的gcc,deepin的名字和Ubuntu的貌似不一样(我也没用Ubuntu),Ubuntu下貌似是arm-linux-gnueabihf-gcc,下面这两种编译器对浮点运算有不同的处理,反正安装就好(⊙o⊙)…只装一个估计也行。
1 | $ sudo apt-get install gcc-arm-linux-gnueabi |
### 添加环境变量
将tools 相关文件的路径添加到$HOME/.bashrc文件中
$ sudo gedit ~/.bashrc
将这句加入到其中文件的尾部
export PATH=$PATH:$HOME/rpi/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian/bin
然后执行$ source .bashrc
即可。
使用$ arm-linux-gnueabihf-gcc –v
验证是否成功。最后几行大概是这么个东西,就安装成功了。
–build=x86_64-linux-gnu –host=x86_64-linux-gnu –target=arm-linux-gnueabi –program-prefix=arm-linux-gnueabi- –includedir=/usr/arm-linux-gnueabi/include
Thread model: posix
gcc version 6.1.1 20160705 (Debian 6.1.1-9)
在eclipse中选择交叉编译
首先安装C/C++版本的eclipse,然后File->New->c project
这么填是因为我们之前使用的是apt-get安装,执行文件的位置在/usr/bin下可以找到。写好代码之后直接在Project->Build Project进行编译然后在Debug文件夹下即可找到可执行文件。
当然也可以直接和gcc使用差不多的用法来进行编译
arm-linux-gnueabihf-gcc main.c -o main
使用file命令查看生成文件的格式。内容中会有ARM架构的说明。
1 | $file filename |
这个教程似乎不错
在树莓派运行helloworld
在这里得到的文件使用的是nfs在局域网进行交换的方法。给出一篇nfs的博客,只需要看最前面nfs的部分即可。
树莓派上面没有安装nfs,使用sudo apt-get install nfs-common
进行安装nfs,然后进行挂载。当然不用nfs都行,使用git将文件放入git仓库,然后在树莓派进行git clone
即可拿到文件。
然后在树莓派上执行运行可执行文件即可看到hello的输出。$ ./main