hi3798mv100SDK上DropBear的交叉編譯
Dropbear是一個相對較小的SSH服務器和客戶端。它運行在各種基於POSIX的平臺上。Dropbear是一種開源軟件,以MIT風格的許可證分發。Dropbear對於“嵌入”型Linux(或其他Unix)系統(如無線路由器)特別有用。
而在打造hi3798mv100的ramdisk時,SDK並沒有包含此工具。因此需要手工添加上。
一、下載Dropbear
官方地址:https://matt.ucc.asn.au/dropbear/dropbear-2020.81.tar.bz2
下載下來的源代碼,放入SDK的默認開源代碼目錄下:third_party/open_source/
二、添加Makefile
在source/component/添加目錄dropbear目錄,仿照此目錄下的其他子目錄,添加上相應的Makefile
#===============================================================================
# export variable
#===============================================================================
ifeq ($(CFG_HI_EXPORT_FLAG),)
SDK_DIR ?= $(shell cd $(CURDIR)/../../.. && /bin/pwd)
include $(SDK_DIR)/base.mak
endif
#===============================================================================
# local variable
#===============================================================================
DROPBEAR := dropbear-2020.81
DROPBEAR_DIR := $(HI_OUT_DIR)/obj/source/component/dropbear
INSTALL_DIR = $(DROPBEAR_DIR)/release
TARGETS := dropbear
CFLAGS += $(subst -Werror,,$(CFG_HI_CFLAGS))
#===============================================================================
# rules
#===============================================================================
.PHONY: all clean dropbear
all: $(TARGETS)
$(AT)test -d $(HI_INCLUDE_DIR) || mkdir -p $(HI_INCLUDE_DIR)
clean:
$(AT)rm -rf $(INSTALL_DIR) $(DROPBEAR_DIR)
dropbear: $(DROPBEAR_DIR)/$(DROPBEAR)/tar
$(AT)cd $(DROPBEAR_DIR)/$(DROPBEAR) && make && make install
$(DROPBEAR_DIR)/$(DROPBEAR)/tar:
$(AT)test -d $(INSTALL_DIR) || mkdir -p $(INSTALL_DIR)
$(AT)test -d $(DROPBEAR_DIR)/$(DROPBEAR) || (tar xjf $(OPEN_SOURCE_DIR)/$(DROPBEAR).tar.bz2 -C $(DROPBEAR_DIR); \
cd $(DROPBEAR_DIR)/$(DROPBEAR); \
sh ./configure CC=$(CFG_HI_ARM_TOOLCHAINS_NAME)-gcc CPP=$(CFG_HI_ARM_TOOLCHAINS_NAME)-cpp AR=$(CFG_HI_ARM_TOOLCHAINS_NAME)-ar AS=$(CFG_HI_ARM_TOOLCHAINS_NAME)-as LD=$(CFG_HI_ARM_TOOLCHAINS_NAME)-ld NM=$(CFG_HI_ARM_TOOLCHAINS_NAME)-nm STRIP=$(CFG_HI_ARM_TOOLCHAINS_NAME)-strip OBJDUMP=$(CFG_HI_ARM_TOOLCHAINS_NAME)-objdump RANLIB=$(CFG_HI_ARM_TOOLCHAINS_NAME)-ranlib CFLAGS="$(CFLAGS)" --target=$(CFG_HI_ARM_TOOLCHAINS_NAME) --host=$(CFG_HI_ARM_TOOLCHAINS_NAME) --prefix=$(INSTALL_DIR) --enable-static --with-zlib=`pwd`/../../zlib/release;)
$(AT)touch $@
dropbear默認依賴於zlib,因此需要先編譯一遍zlib(進入source/component/zlib目錄,然後執行make命令),然後進入source/component/dropbear,執行make命令,即可編譯出來。
編譯後的程序位於:out/hi3798cv200/hi3798cv2dmo/obj/source/component/dropbear/release/目錄下。