文章目錄
-
- 從一個檔案說起
- 編譯與運作
從一個檔案說起
面對一塊跑起來的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,這個就是我們要的可執行檔案。我們試着運作它:
這就是我們想要的結果了。