天天看點

BeagleBone Black從入門到放棄(二)萬物始于HELLO WORLD

文章目錄

    • 從一個檔案說起
    • 編譯與運作

從一個檔案說起

面對一塊跑起來的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。如圖:

BeagleBone Black從入門到放棄(二)萬物始于HELLO WORLD

我們可以看到,視窗的上半部分是一個可以輸入文字的編輯器,而下面則是對檔案進行一些操作的選項。在編輯器中輸入經典的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,這個就是我們要的可執行檔案。我們試着運作它:

BeagleBone Black從入門到放棄(二)萬物始于HELLO WORLD

這就是我們想要的結果了。