文章目录
-
- 从一个文件说起
- 编译与运行
从一个文件说起
面对一块跑起来的BBBlack板子的时候,如何开始运行自己的第一个程序呢?且听我一步一步的讲起。
首先我们线连接到BBBlack,并且登录。此时处于我所登录的用户目录下,我新建一个目录(文件夹)用于放置代码:
$mkdir code
当然如果你登陆的不是root用户会发现被提示:
mkdir: cannot create directory ‘code’: Permission denied
此时你可以直接获取root权限或是使用sudo的方式运行指令,此处为后续操作的方便,直接获取root权限。方法是先输入su,然后根据提示输入密码:
$ su
Password:
然后再运行上述创建目录指令,即可。创建完成后可以使用ls指令查看目录列表,查看是否有我们新创建的目录code:
# ls
bbb-uEnv.txt boot dev home lib media nfs-uEnv.txt proc run srv tmp var
bin code etc ID.txt lost+found mnt opt root sbin sys usr
此时我们进入到我们新创建的code目录:
# cd code
这样我们就可以创建C文件并且编辑了。那么我们此时如何创建文件呢?很简答,直接输入你要是用的编辑器的名称:vim或是nano,这里不个人更喜欢使用功能更简单的nano。如图:

我们可以看到,窗口的上半部分是一个可以输入文字的编辑器,而下面则是对文件进行一些操作的选项。在编辑器中输入经典的C++的HELLO WORLD代码,然后根据下方选项提示按ctal+o保存文件,此处我保存为hello.cpp:
#include <iostream>
int main(int argc, char const *argv[])
{
using namespace std;
cout << "HELLO WORLD\n";
return 0;
}
编译与运行
那么此时的问题就是:如何编译呢?其实非常简单,这要归功于我们已经在BBBlack里面安装的debian,他已经非常贴心的为我们集成了开源编译器gcc。此处我们可以运行指令gcc -v查看一下:
# gcc -v
Using built-in specs.
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/usr/lib/gcc/arm-linux-gnueabihf/6/lto-wrapper
Target: arm-linux-gnueabihf
Configured with: ../src/configure -v --with-pkgversion='Debian 6.3.0-18' --with-bugurl=file:///usr/share/doc/gcc-6/README.Bugs --enable-languages=c,ada,c++,java,go,d,fortran,objc,obj-c++ --prefix=/usr --program-suffix=-6 --program-prefix=arm-linux-gnueabihf- --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --libdir=/usr/lib --enable-nls --with-sysroot=/ --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --with-default-libstdcxx-abi=new --enable-gnu-unique-object --disable-libitm --disable-libquadmath --enable-plugin --enable-default-pie --with-system-zlib --disable-browser-plugin --enable-java-awt=gtk --enable-gtk-cairo --with-java-home=/usr/lib/jvm/java-1.5.0-gcj-6-armhf/jre --enable-java-home --with-jvm-root-dir=/usr/lib/jvm/java-1.5.0-gcj-6-armhf --with-jvm-jar-dir=/usr/lib/jvm-exports/java-1.5.0-gcj-6-armhf --with-arch-directory=arm --with-ecj-jar=/usr/share/java/eclipse-ecj.jar --with-target-system-zlib --enable-objc-gc=auto --enable-multiarch --disable-sjlj-exceptions --with-arch=armv7-a --with-fpu=vfpv3-d16 --with-float=hard --with-mode=thumb --enable-checking=release --build=arm-linux-gnueabihf --host=arm-linux-gnueabihf --target=arm-linux-gnueabihf
Thread model: posix
gcc version 6.3.0 20170516 (Debian 6.3.0-18)
我们使用gcc对刚刚完成的代码进行编译,由于例程简单,此处我们直接编译获取可执行文件。由于我们使用的是C++,所以采用g++指令。 至于gcc更复杂的用法,可以详询搜索引擎:
# g++ -o hello hello.cpp
等待一段时间后运行完成,但是并没有返回什么结果,我们此时可以采用上面提到的ls指令查看一下文件的变化:
#ls
hello hello.cpp
我们发现多了一个文件hello,这个就是我们要的可执行文件。我们试着运行它:
这就是我们想要的结果了。