聯發科Linkit 7688 (一) 上手及在Mac下搭建OpenWrt交叉編譯環境,C語言編譯Hello,World

2021-02-14 Imagination Tech

淘了一塊聯發科 Linkit 7688 DUO 開發板(99元)。 這是一塊物聯網開發板,基於聯發科 Linkit 7688晶片、同時兼容Arduino. 內置OpenWrt系統、支持Wifi聯網,用於開發智能路由器、智能物體等。

上手過程,記錄一下

開發板做得很精緻:

1, 首先去官網, 學一下入門教程:
7688官網入口如下:
https://labs.mediatek.com/site/znch/developer_tools/mediatek_linkit_smar...

進入「入門」, 教程寫得很詳細: 準備硬體及軟體、開發板上電、登錄WebUI設密碼、設置Wifi, 連入網際網路, 電腦SSH登入。。。

官網寫得很好,過程也不難,這裡不重複了

做完這些步,應該能夠讓 LinkIt 7688開發板連接入WIFI,電腦連入同一個WIFI, 用SSH能登入 7688開發板的OpenWrt系統。

然後,才可以做下面這些步。

2,下載 Linkit 7688的規格書 (Datasheet), 了解一下開發板性能

https://labs.mediatek.com/fileMedia/download/9ef51e98-49b1-489a-b27e-391...

7688晶片為MIPS 580MHz, 64M RAM。 開發板上另提供128M 存儲

晶片支持WIFI 802.11N, USB2.0, 及其它常用接口( 多個GPIO,UART, JTAG等)

3,安裝C語言交叉編譯器,在OpenWrt下開發程序

對OpenWrt的系統級開發還是要用C,因此要安裝 C語言交叉編譯器

交叉編譯器,是一種特殊的gcc編譯器,就是在PC上編譯出MIPS的Linux程序

編譯器包括 多個工具軟體(gcc,gdb,make等), 故稱為工具鏈

安裝C語言工具鏈Toolchain:

在7688官網入口中找到進入 "軟體和工具",找到 "OpenWrt SDK" ,點擊下載 Toolchain. (注意:不是下載SDK,而是Toolchain)

交叉編譯工具鏈目前只支持linux 和 Mac OS, 我的機器是Mac, 所以下載的是 Toolchain (OSX)

下載得到文件: MediaTek_LinkIt_Smart_7688_Openwrt_toolchain_OSX.bz2 約35M

解壓縮出一個目錄 : OpenWrt-Toolchain-ramips-mt7688_gcc-4.8-linaro_uClibc-0.9.33.2.Darwin-x86_64

其中有一個子目錄: toolchain-mipsel_24kec+dsp_gcc-4.8-linaro_uClibc-0.9.33.2 所有交叉編譯的C語言工具( gcc , gdb )就在這個目錄中了

為了方便使用,將這個目錄改個名字為 CC_TOOLS, 複製到 Desktop中。

則此時在Mac中, 工具鏈所在目錄的位置是: ~/Desktop/CC_TOOLS

打開Mac的終端窗口, (LaunchPad --> 其他 --> 終端)

輸命令,進入工具鏈所在目錄

cd Desktop/CC_TOOLS/bin

試了一下,好象交叉編譯器中沒有gcc, 要用g++。 用C++編譯器編譯C語言沒有問題的。

運行一下 g++, 查看版本

./mipsel-openwrt-linux-g++ --version

第一次運行,出錯了,顯示 "readlink: illegal option -- f ... ... "

查了一下, mipsel-openwrt-linux-g++ 調用了 mipsel-openwrt-linux-uclibc-wrapper.sh 這個腳本文件

用文本編譯器(我用的是UltraEdit for Mac) 打開mipsel-openwrt-linux-uclibc-wrapper.sh

找到 REALNAME=`readlink -f $0` 這一行, 修改為 REALNAME=`readlink $0` (即去掉 -f ), 存檔。

重新運行一下 g++, 查看版本

./mipsel-openwrt-linux-g++ --version

則此時正常顯示版本號了,表示交叉編譯器gcc安裝基本正確了

寫一個 Hello, world 程序

#include

int main() {

printf("hello,world\n");

}

存檔為 hello.c , 最好存檔在工具鏈 的 bin了目錄下 (因為沒有設置PATH,放在其它目錄下容易出錯)

編譯一下

./mipsel-openwrt-linux-g++ hello.c -o hello

編譯過程顯示了幾個Warning

mipsel-openwrt-linux-uclibc-g++.bin: warning: environment variable 'STAGING_DIR' not defined

不用管它, 編譯正常生成了 hello 程序文件

將Linkit 7688與Mac連入同一個WIFI

用scp命令將 hello程序文件上傳到 Linkit 7688 板上的 /root 目錄中

scp hello root@192.168.31.140:/root (其中:192.168.31.140 是 Linkit 7688連入WIFI網絡後獲得的IP位址,你自己的具體地址不同,要改一下)

用SSH登錄進入 LinkIt 7688, 運行一下 ./hello

則成功顯示:hello,world

表明C語言編譯OK了。

4, 設置PATH路徑

在Mac中,打開終端窗口,輸入命令,用vi編輯 ~/.profile 文件

vi ~/.profile

在文件末尾加入一句話 (設置CC_TOOLS/bin目錄到PATH中)

export PATH=$PATH:~/Desktop/CC_TOOLS/bin

存檔,退出

關閉終端窗口, 再重新打開終端窗口

輸入命令 echo $PATH 查看一下PATH路徑已包含 CC_TOOLS/bin

設好了,則可以在任何目錄下調用編譯器了, 如上例

mipsel-openwrt-linux-uclibc-g++ -o hello hello.c

5, 安裝7688 SDK開發包

在7688官網入口中找到進入 "軟體和工具",找到 "OpenWrt SDK" ,點擊下載 SDK。 (我下的是SDK (OSX) )

下載得到文件:MediaTek_LinkIt_Smart_7688_Openwrt_sdk_OSX.bz2

解壓縮出一個目錄 : OpenWrt-SDK-ramips-mt7688_gcc-4.8-linaro_uClibc-0.9.33.2.Darwin-x86_64

為了方便使用,將這個目錄改個名字為 7688SDK, 複製到 Desktop中。

則此時在Mac中, SDK所在目錄的位置是: ~/Desktop/7688SDK

設置STAGING_DIR環境變量

在Mac中,打開終端窗口,輸入命令,用vi編輯 ~/.profile 文件

vi ~/.profile

在文件末尾加入一句話

export STAGING_DIR=~/Desktop/7688SDK/staging_dir

存檔,退出

關閉終端窗口, 再重新打開終端窗口

輸入命令 echo $STAGING_DIR 查看一下STAGING_DIR環境變量是否已設置好

設好了,再次編譯hello.c, 將沒有warning

C/C++語言交叉編譯開發環境設好了。

來源:愛程序網

Imagination中文社區

權威發布有關Imagination公司CPU,GPU以及連接IP、無線IP最新資訊,提供有關物聯網、可穿戴、通信、汽車電子、醫療電子等應用信息,每日更新大量信息,讓你緊跟技術發展,歡迎免費註冊。網址:imgtec.eetrend.com

想了解更多信息,關注後反饋給我吧! 

相關焦點

  • OpenWrt入門 | OpenWrt固件編譯環境搭建教程
    multiverse universe #Added by software-propertiesdeb http://mirrors.aliyun.com/ubuntu/ xenial-security universedeb http://mirrors.aliyun.com/ubuntu/ xenial-security multiverse安裝gcc等編譯
  • 《MakerRouter 創客路由教程》4.0 編譯定製:編譯OpenWrt固件
    無意苦爭春,一任群芳妒。零落成泥碾作塵,只有香如故~經過了30餘個章節,經過了被無數學員催著想要知道怎麼編譯的過程。終於教程進入到第四大部分。hoowa從來沒有說過關於編譯OpenWrt很多人都很好奇如何編譯,其實編譯本身是非常簡單的事情,只是它需要積累很多其他的基礎。沒有人可以通過看一本書學會一項技能,看這本書同樣也不能,學會一項技能靠的是自己的努力。
  • Mac搭建C語言練習環境
    這篇文章只是為了快速搭建C語言練習環境的,如果是項目裡使用那麼建議使用其他專業IDE。
  • 【C語言系列】C語言編譯流程分析
    我現在一般都是用gcc,所以自然以GCC編譯hellworld為例,簡單總結如下。hello.c原始碼如下:#include <stdio.h>int main(){ printf(「Hello, world.
  • 入門級的HelloWorld經歷了哪些過程
    在剛剛入門 C 語言的時候,下載的 Microsoft Visual C++ 6.0 ,不是編譯器,它的真實名字叫做集成開發環境。那麼現在來看看,什麼才是編譯器。編譯器和連結器        打開 Microsoft Visual C++ 6.0 安裝目錄下的 VC98 下的 Bin 目錄,裡面的 CL.EXE 是編譯器,LINK.EXE 是連結器。
  • Windows下Go語言安裝及編譯環境搭建
    一、Go語言安裝直接官方下載Go語言windows最新版本即可。
  • Cygwin下ndk standalone版本的交叉編譯環境搭建(Root研究)
    JAVA環境搭建(略)Android環境搭建(略)NDK環境搭建(略)>Windows環境配置Cygwin的方法(建議Windows10環境搭建) 驗證Windows環境編譯Android等的環境是否搭建成功
  • 第1篇 Qt5基礎(一)Qt開發環境的搭建和hello world
    本篇主要講解Qt編程環境的搭建,為了適應大多數讀者的需要,同時避免系統環境的不同而產生不必要的問題,這裡選擇使用Windows 7作為開發平臺。對於使用其他作業系統(例如Linux)的童鞋,可以參照學習。
  • gcc c語言編譯流程
    bianyiyuanli/test001.c:16    return 0;  400559:       b8 00 00 00 00          mov    $0x0,%eax/data/weiqifa/c/bianyiyuanli/test001.c:17}當時大家討論很激烈
  • Golang 交叉編譯如何做?
    說明我們將講解命令各個參數的作用,希望你在閱讀時,將每一項串聯起來,你會發現這就是交叉編譯相關的小知識也就是 Golang 令人心動的特性之一跨平臺編譯一、CGO_ENABLED在標準 go 命令的上下文環境中,交叉編譯意味著程序構建環境的目標計算架構的標識與程序運行環境的目標計算架構的標識不同,或者程序構建環境的目標作業系統的標識與程序運行環境的目標作業系統的標識不同小結:結合案例來說,我們是在宿主機編譯的可執行文件,而在
  • C語言中「hello world」程序的詳解
    首先給大家看一個經典程序「helloword」它是C語言中最簡單的程序但不能因此而小看它幾乎任何一門程式語言的入門都是從這個簡單「hello world」程序開始的首先看第一行代碼main中的函數,一個程序中有且僅有一個主函數,{}中包括的是代碼,C語言中所有的代碼都被包括在大括號裡第三行代碼 printf("hello world");
  • 音視頻開發之旅(33) -交叉編譯android使用的FFmpeg(3.x和4.x)
    x版本)androidStudio中引用使用ffmpeg遇到的問題資料收穫這篇我們來學習實踐ffmpeg的交叉編譯,其中會涉及到ffmpeg的版本、NDK的版本、編譯腳本的編寫、Gradler ABI處理 以及 CMakeLists.txt的針對不同ndk版本腳步的編寫在交叉編譯的時候由於平臺差異性大,需要工具來解決這一問題
  • 久病成良醫,如何解決C編譯中的問題
    /configure --help時,就會出現一些輸出,大致分為如下幾類:其中最後一類的環境變量非常重要,因為它可以通過改變gcc參數影響到編譯的不同階段。這個時候,就得需要了解編譯到底分為幾個階段了, 需要幾個簡單的例子說明.我們都寫過也編譯過最簡單的C程序,功能就是從屏幕上輸出"hello world!"
  • rockchip的yocto編譯環境搭建
    確實yocto其他環境無法比擬的優勢,自己使用建議用buildroot,除非必要,不建議使用yocto。下面就聽我介紹我是如何搭建適配rockchip的yocto環境的。否則可能需要一兩天的構建時間。其實這個時候要進行詳細設置編譯的環境,以及對應編譯鏡像裡面需要的包,但是由於我是屬於環境的初步的搭建,我就直接選擇默認配置,然後進行了一些簡單的編譯了。bitbake core-image-minimal
  • C/C++項目的編譯, Makefile和CMake
    LuaJIT 的 src 目錄下, Makefile有700多行, 其中大部分是在判斷編譯環境和聲明依賴關係.
  • 教你成為全棧工程師(Full Stack Developer) 一-各顯神通總結八大類程式語言的區別 全棧技術
    簡述:C語言是編譯執行的語言,linux下常用的編譯器是gcc,c語言原始碼可以直接被編譯成可執行程序(機器碼),說它是萬物之源是因為其他各種語言都是用C語言寫的,如java、php、python……原始碼:hello_world.c編譯執行:
  • 簡要記錄丨VSCode 搭建基礎 C/C++ 編譯環境
    3.4.1 C++ 編譯環境配置  首先在 C++ 的程序文件夾下,新建一個名為 .vscode 的隱藏文件夾,然後分別新建如下三個文件 1{ 2    "version": "0.2.0", 3
  • 深入淺出iOS編譯
    前言兩年前曾經寫過一篇關於編譯的文章《iOS編譯過程的原理和應用》,這篇文章介紹了iOS編譯相關基礎知識和簡單應用,但也很有多問題都沒有解釋清楚
  • Java代碼的編譯與反編譯
    一、什麼是編譯1、利用編譯程序從源語言編寫的源程序產生目標程序的過程。
  • PWN路由器之環境搭建
    感覺路由器這塊就是固件提取,運行環境修複比較麻煩,其他部分和一般的 pwn 差不多。由於大多數路由器是 mips 架構的,本文就以搭建MIPS運行、調試平臺 為例介紹環境的搭建。其他架構類似。"Adding $1 to br0..." sudo /sbin/brctl addif br0 $1 sleep 3增加權限 chmod a+x /etc/qemu-ifup重啟網絡服務/etc/init.d/networking restart下載與運行qemu的鏡像uclibc交叉編譯工具鏈