hi3798mv100SDK上DropBear的交叉編譯

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/目錄下。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章