日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > linux >内容正文

linux

如何把Linux工具里的“军刀”BusyBox移植到RT-Thread Smart?

發(fā)布時(shí)間:2023/12/20 linux 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 如何把Linux工具里的“军刀”BusyBox移植到RT-Thread Smart? 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

RT-Thread Smart 系列連載

序號內(nèi)容
1《當(dāng)“樹莓派”遇上RT-Thread Smart——應(yīng)用編程入門》
2《RT-Thread Smart和樹莓派:wget & cURL網(wǎng)絡(luò)客戶端》
3《如何把Linux工具里的“軍刀”BusyBox移植到RT-Thread Smart?》
4sdl圖形類應(yīng)用
5

dropbear及ssh server應(yīng)用

BusyBox 是一個(gè)集成了數(shù)百個(gè)常用Linux/Unix命令和工具的軟件。BusyBox 包含了一些簡單的工具,例如ls、cat和echo等等,還包含了一些更大、更復(fù)雜的工具,例grep、find、mount以及telnet。有些人將 BusyBox 稱為 Linux 工具里的瑞士軍刀。簡單的說BusyBox就好像是個(gè)大工具箱,它集成壓縮了 Linux 的許多工具和命令,也包含了 Android 系統(tǒng)的自帶的shell。

這篇文章將介紹把BusyBox移植到RT-Thread Smart下。

準(zhǔn)備工作

busybox-1.32.0為例,下載源碼包:

1$?mkdir?-p?userapps/gnu-apps/busybox 2$?wget?https://busybox.net/downloads/busybox-1.32.0.tar.bz2

移植腳本

與上篇文章有些許不同的是,busybox自帶Makefile,所以需要給Makefile里面的一些變量替換成交叉編譯環(huán)境變量,下面會通過一個(gè)patch文件實(shí)現(xiàn)。

首先還是創(chuàng)建一份簡單的build.sh腳本:

1#!/bin/sh23APP_NAME="busybox"4VERSION="1.32.0"5APP_DIR=${APP_NAME}-${VERSION}67#?userapps?is?ROOTDIR8ROOTDIR=${PWD}/../..9 10#?set?env 11export?RTT_EXEC_PATH=${ROOTDIR}/../tools/gnu_gcc/arm-linux-musleabi_for_x86_64-pc-linux-gnu/bin 12export?PATH=$PATH:$RTT_EXEC_PATH:$RTT_EXEC_PATH/../arm-linux-musleabi/bin 13 14#?get?src 15tar?xjf?${APP_DIR}.tar.bz2 16cd?${APP_DIR} 17 18#?patch?Makefile 19patch?-Np1?-i?../makefile.patch 20 21#?get?default?config 22cp?../def_config?.config 23 24make?V=1

makefile.patch文件如下:

1---?busybox-1.32.0/Makefile.orig????????2020-12-24?12:51:40.752730739?+08002+++?busybox-1.32.0/Makefile?????2020-12-24?12:55:44.162093866?+08003@@?-4,6?+4,21?@@4?EXTRAVERSION?=5?NAME?=?Unnamed67+8+CROSS_COMPILE=?arm-linux-musleabi-9+ 10+PWD?:=?$(shell?pwd) 11+#?userapp?dir 12+ROOTDIR?:=?$(PWD)/../../.. 13+RT_DIR=$(ROOTDIR)/sdk/rt-thread 14+INC_DIR=${ROOTDIR}/sdk/include 15+LIB_DIR=${ROOTDIR}/sdk/lib 16+ 17+CFLAGS?=?-march=armv7-a?-marm?-msoft-float?-D__RTTHREAD__?-Wall?-O2?-n?--static?-I.?-I$(RT_DIR)/include?-I$(RT_DIR)/components/dfs?-I$(RT_DIR)/components/drivers?-I$(RT_DIR)/components/finsh?-I$(RT_DIR)/components/net?-I${INC_DIR} 18+ 19+LDFLAGS?=?-L.?-L${LIB_DIR}?-T?$(ROOTDIR)/linker_scripts/arm/cortex-a/link.lds?-march=armv7-a?-marm?-msoft-float?-L$(RT_DIR)/lib?-Wl,--whole-archive?-lrtthread?-Wl,--no-whole-archive?-n?--static?-Wl,--start-group?-lrtthread?-Wl,--end-group 20+ 21+ 22?#?*DOCUMENTATION* 23?#?To?see?a?list?of?typical?targets?execute?"make?help" 24?#?More?info?can?be?located?in?./README????

Busybox在編譯之前最好通過"make menuconfig"配置一下需要編譯的指令,這里為了方便提供一個(gè)配置好的def_config文件,在上面的build.sh腳本里面會用到。

文件比較長,請將以下鏈接復(fù)制至外部瀏覽器打開,打開后可直接下載文件:

https://gitee.com/rtthread/rt-smart-notes/tree/master/examples/busybox

編譯:

1userapps/gnu-apps/busybox$?ls 2build.sh??busybox-1.32.0.tar.bz2??def_config??makefile.patch 3userapps/gnu-apps/busybox$?sh?build.sh

使用BusyBox

在Linux上使用BusyBox,一般的方式會是建立一個(gè)個(gè)的符號鏈接,例如把ls通過符號鏈接的方式鏈接到busybox,這樣在調(diào)用ls時(shí),實(shí)際上會被調(diào)用到busybox。只是對于main(int argc, char** argv)來說,這個(gè)argv[0]'ls'

當(dāng)然busybox也支持直接調(diào)用busybox,并把命令附加在后面的方式,例如:

1msh?/>?busybox.elf?ls?-l

因?yàn)镽T-Thread及RT-Thread Smart并不支持符號鏈接,所以還只能采用后面的形式。

BusyBox包含有很多個(gè)指令,可以通過執(zhí)行“make menuconfig”來配置需要編譯的指令。

查看busybox當(dāng)前可使用的命令可以使用`--help' 選項(xiàng):

查看具體某個(gè)指令的使用幫助,如 ls 的:

更多指令

為確保一些特定的指令正常運(yùn)行,需要在kernel配置里面打開null、random、zero等設(shè)備;并確保/etc/resolv.com和/etc/hosts文件存在。

1msh?/>?busybox.elf?cat?/etc/resolv.conf 2nameserver?114.114.114.114 3 4msh?/>?busybox.elf?cat?/etc/hosts 5127.0.0.1????localhost

busybox是一套很精簡的工具集,已經(jīng)在rt-smart上驗(yàn)證過的命令包括(但不限于):

  • 歸檔類工具,例如 tar/unzip/bzip2/bunzip2/bzcat/gzip/gunzip/zcat/xz/unxz/xzcat 等;

  • 核心類工具,例如 cat/cp/dd/echo/head/ls/mv/mkdir/pwd/rm/tail/uname/wc 等;

  • 編輯類工具,例如 vi/diff/cmp/awk/sed 等;

  • 網(wǎng)絡(luò)類工具,例如ftpd/tcpsvd/ftpgt/ftpput/tftp/nslookup/telnet/httpd/wget 等


推薦閱讀:

專輯|Linux文章匯總

專輯|程序人生

專輯|C語言

我的知識小密圈

關(guān)注公眾號,后臺回復(fù)「1024」獲取學(xué)習(xí)資料網(wǎng)盤鏈接。

歡迎點(diǎn)贊,關(guān)注,轉(zhuǎn)發(fā),在看,您的每一次鼓勵,我都將銘記于心~

嵌入式Linux

微信掃描二維碼,關(guān)注我的公眾號

?????點(diǎn)擊閱讀原文進(jìn)入RT-Thread官網(wǎng)

總結(jié)

以上是生活随笔為你收集整理的如何把Linux工具里的“军刀”BusyBox移植到RT-Thread Smart?的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。