添加自定义的package
添加自定义的package
来源 https://blog.csdn.net/teddy99999/article/details/17537545
参考 https://blog.chaofan.io/archives/how-to-develop-on-openwrt
参考 https://www.cnblogs.com/burnk/p/15806934.html
OpenWrt是一个比较完善的嵌入式Linux开发平台,在无线路由器应用上已有100多个软件包。人们可以在其基础上增加软件包,以扩大其应用范围。OpenWrt在增加软件方面使用极其方便,按照OpenWrt的约定就可以很简单完成。
加入的软件包可以是网上可下载的开源软件或自行开发的软件。為加入软件包需要在package目錄下创建一个目录,以包含软件包的各种信息和与OpenWrt建立联系的文件。然后创建一个Makefile与OpenWrt建立联系,Makefile需要遵循OpenWrt的约定。另外可以創建一個patchs目錄保存patch文件,對下載的源代碼進行適量修改。下面主要介紹Makefile的基本約定。
1、引入文件
OpenWrt使用三个makefile的子文件,分别为:
include $(TOPDIR)/rules.mk
include $(INCLUDE_DIR)/kernel.mk
include $(INCLUDE_DIR)/package.mk
由這些makefile子文件確立軟件包加入OpenWrt的方式和方法。$(TOPDIR)/rules.mk一般在Makefile的開頭,$(INCLUDE_DIR)/kernel.mk文件對於軟件包為內核時不可缺少,$(INCLUDE_DIR)/package.mk一般在軟件包的基本信息完成後再引入。
2、编写软件包的基本信息,这些软件包的信息均以PKG_开头,其意思和作用如下:
PKG_NAME表示软件包名称,将在menuconfig和ipkg可以看到。
PKG_VERSION表示软件版本号。
PKG_RELEASE表示Makefile的版本号
PKG_SOURCE表示源代码的文件名。
PKG_SOURCE_URL表示源代码的下载网站位置。@SF表示在sourceforge网站,@GNU表示在GNU网站,還有@GNOME、@KERNEL。獲取方式可以為:git、svn、cvs、hg、bzr等。有關下載方法可參考$(INCLUDE_DIR)/download.mk和$(SCRIPT_DIR)/download.pl。
PKG_MD5SUM表示源代码文件的效验码。用于核对软件包是否正确下载。
PKG_CAT表示源代码文件的解压方法。包括zcat, bzcat, unzip等。
PKG_BUILD_DIR表示软件包编译目录。它的父目录为$(BUILD_DIR)。如果不指定,默认为$(BUILD_DIR)/$( PKG_NAME)$( PKG_VERSION)。
還有一些有關源代碼的定義。
PKG_SOURCE_SUBDIR
PKG_SOURCE_PROTO
PKG_SOURCE_MIRROR
PKG_MIRROR_MD5SUM
PKG_SOURCE_VERSION
3、编译包定义
用户程序和内核模块的定义不一样。用戶態軟件包使用Package,內核模塊使用KernelPackage。
3.1用户程序编译包定义
用户程序的编译包以Package/开头,然后接着软件名,在Package定义中的软件名可以与软件包名不一样,而且可以多个定义。下面使用$(PKG_NAME)只是做一个标示,并非真正使用$(PKG_NAME)。
Package/$(PKG_NAME)
SECTION表示包的类型,预留。
CATEGORY表示分类,在menuconfig的菜单下将可以找到。
TITLE用于软件包的简短描述
DESCRIPTION用于软件包的详细描述,已放弃使用。如果使用DESCRIPTION將會提示“error DESCRIPTION:= is obsolete, use Package/PKG_NAME/description”。
URL表示软件包的下载位置。
MAINTAINER表示维护者,选项。
DEPENDS表示与其他软件的依赖。即如编译或安装需要其他软件时需要说明。如果存在多個依賴,則每個依賴需用空格分開。依賴前使用+號表示默認顯示,即對象沒有選中時也會顯示,使用@則默認為不顯示,即當依賴對象選中後才顯示。
在用戶態的軟件包中沒有內核模塊的AUTOLOAD參數。如果軟件需要在boot時自動運行,則需要在/etc/init.d增加相應的腳本文件。腳本文件需要START參數,說明在boot時的優先級,如果在boot過程啟動後在關閉,則需要進一步設置STOP參數。如果STOP參數存在,其值必須大於START。腳本文件需要start()和stop()兩個函數,start()是執行程序,stop()是關閉程序。關閉程序一般需要執行killall命令。由/etc/rc.d/S10boot知道,裝載內核模塊的優先級為10,需要使用自己設計的內核模塊的程序其START的值必須大於10. 同樣由/etc/rc.d/S40network知道,使用網絡通信的程序其START的值必須大於40。
Package/$(PKG_NAME)/conffiles
本包安裝的配置文件,一行一個。如果文件結尾使用/,則表示為目錄。用於備份配置文件說明,在sysupgrade命令執行時將會用到。
Package/$(PKG_NAME)/description
软件包的详细描述,取代前面提到的DESCRIPTION详细描述。
Build/Prepare
编译准备方法,对于网上下载的软件包不需要再描述。对于非网上下载或自行开发的软件包必须说明编译准备方法。一般的准备方法为:
define Build/Prepare
mkdir -p $(PKG_BUILD_DIR)
$(CP) ./src/* $(PKG_BUILD_DIR)/
endef
按OpenWrt的习惯,一般把自己设计的程序全部放在src目录下。
Build/Configure
在Automake中需要进行./configure,所以本配置方法主要针对需要配置的软件包而设计,一般自行开发的软件包可以不在这里说明。需要使用本定义的情况,可参考dropbear。
Build/Compile
编译方法,没有特别说明的可以不予以定义。如果不定义将使用默认的编译方法Build/Compile/Default
自行开发的软件包可以考虑使用下面的定义。
define Build/Compile
$(MAKE) -C $(PKG_BUILD_DIR) \
$(TARGET_CONFIGURE_OPTS) CFLAGS="$(TARGET_CFLAGS) -I$(LINUX_DIR)/include"
Endef
Package/$(PKG_NAME)/install
软件包的安装方法,包括一系列拷贝编译好的文件到指定位置。調用時會帶一個參數,就是嵌入系統的鏡像文件系統目錄,因此$(1)表示嵌入系统的镜像目录。一般可以采用下面的方法:
define Package/$(PKG_NAME)/install
$(INSTALL_DIR) $(1)/usr/bin
$(INSTALL_BIN) $(PKG_BUILD_DIR)/ $(PKG_NAME) $(1)/usr/bin/
endef
INSTALL_DIR、INSTALL_BIN在$(TOPDIR)/rules.mk文件定义,所以本Makefile必须引入$(TOPDIR)/rules.mk文件。
INSTALL_DIR :=install -d -m0755 意思創建所屬用戶可讀寫即執行,其他用戶可讀可執行的目錄。
INSTALL_BIN:=install -m0755意思編譯好的文件到鏡像文件目錄。
如果用戶態軟件在boot時要自動運行,則需要在安裝方法說明中增加自動運行的腳本文件安裝和配置文件安裝方法。
例如:
define Package/mountd/install
$(INSTALL_DIR) $(1)/sbin/ $(1)/etc/config/ $(1)/etc/init.d/
$(INSTALL_BIN) $(PKG_BUILD_DIR)/mountd $(1)/sbin/
AUTOLOAD:=$(call AutoLoad, $(PRIORITY),$(AUTOLOAD_MODS))
要把自己的程序加入到openwrt中有两个方法,1)固件是自己编译的,那可以在package目录下下面添加自定义的包
2)固件不是自己编译的话,那可以用openwrt的编译工具链将自己的程序编译成可运行在openwrt上面的可执行程序。
一、添加自定义的package
下面通过我自己做的一个实例来说明。我的程序主要是C语言程序。
1)目录结构图如下图所示
http_upgrade/
├── config
│ └── http_url
├── init.d
│ └── get_route_data
├── Makefile
├── rc.d
│ └── S110http_upgrade
└── src
├── client.c
├── client.h
├── debug.c
├── debug.h
├── http_upgrade.c
├── Makefile
├── safe.c
├── safe.h
├── system_status.c
└── system_status.h
4 directories, 14 files
(可选)config目录主要是放置程序的配置文件
(可选)init.d目录主要是放置自定义的脚本,可以运行程序这些
(可选)rc.d目录主要是放置开机运行程序,我这里是需要将自定义的程序开机启动
(可选)src目录主要是放置源码以及编译源码的makefile文件
(必选)Makefile 这里最关键的就是makefile文件了
2)package下面的makefile详解(我这里写的比较简单,可以参照网上详解和openwrt的源码)
#
# Copyright (C) 2012 OpenWrt.org
#
# This is free software, licensed under the GNU General Public License v2.
# See /LICENSE for more information.
#
include $(TOPDIR)/rules.mk
PKG_NAME:=http_upgrade -------包的名字,在make menuconfig中看到的
PKG_RELEASE:=1
PKG_BUILD_DIR := $(BUILD_DIR)/$(PKG_NAME)
include $(INCLUDE_DIR)/package.mk
define Package/http_upgrade ---------------包的目录
SECTION:=utils
CATEGORY:=Utilities ---------------------------包放到哪个目录下,这里放到Utilities 下
TITLE:=ZK contral x86 remote upgrade firmware ------包的描述
DEPENDS:=+libpthread +jansson +libcurl --------------包需要的依赖库
endef
define Build/Prepare
mkdir -p $(PKG_BUILD_DIR)
$(CP) ./src/* $(PKG_BUILD_DIR)/
endef
define Build/Configure
endef
define Build/Compile
$(MAKE) -C $(PKG_BUILD_DIR) \
CC="$(TARGET_CC)" \
CFLAGS="$(TARGET_CFLAGS) -Wall" \
LDFLAGS="$(TARGET_LDFLAGS)"
endef
define Package/http_upgrade/install --------------安装过程
$(INSTALL_DIR) $(1)/etc/init.d --------------安装目录
$(INSTALL_BIN) ./init.d/* $(1)/etc/init.d -----将包init.d目录下的文件安装到openwrt下的init.d目录下
$(INSTALL_DIR) $(1)/usr/sbin
$(INSTALL_BIN) $(PKG_BUILD_DIR)/http_upgrade $(1)/usr/sbin/ -------将http_upgrade文件安装到openwrt下的/usr/sbin/目录下
$(INSTALL_DIR) $(1)/etc/config
$(INSTALL_DATA) ./config/* $(1)/etc/config --------------------------将包下config目录下面的文件安装到openwrt的/etc/config/目录下
$(INSTALL_DIR) $(1)/etc/rc.d
$(INSTALL_BIN) ./rc.d/* $(1)/etc/rc.d ----------------------------------将包下rc.d目录下面的文件安装到openwrt的/etc/rc.d目录下
endef
$(eval $(call BuildPackage,http_upgrade))
2)src目录下的makefile(这个就是c语言的makefile)
all: http_upgrade
http_upgrade:
$(CC) $(CFLAGS) -o $@ debug.c safe.c system_status.c client.c http_upgrade.c $(LDFLAGS) -lpthread -ljansson -lcurl
clean:
rm -f http_upgrade
将上面的包添加到openwrt编译目录的package目录下面以后,
make menuconfig 就可以看到自定义的包,将它选上,就可以编译出自定义的ipk了
二、使用openwrt的编译工具链生成可执行文件(这个比较麻烦,需要有automake的基础)
这个automake网上教程很多,可以自行百度,我这里要讲的就是怎么用openwrt的工具链来编译
首先在项目目录下新建一个.sh脚本
将automake的步骤都写在脚本中并在脚本中指定编译工具链
#!/bin/sh
rm -rf /tmp/test
#指定编译工具链
export STAGING_DIR=/home/zyw/work/chaos_calmer/staging_dir
export PATH=$STAGING_DIR/toolchain-mipsel_24kec+dsp_gcc-4.8-linaro_uClibc-0.9.33.2/bin:$PATH
export TOOLCHAIN_DIR=$STAGING_DIR/toolchain-mipsel_24kec+dsp_gcc-4.8-linaro_uClibc-0.9.33.2
export LDCFLAGS=$TOOLCHAIN_DIR/lib/
export LD_LIBRARY_PATH=$TOOLCHAIN_DIR/lib/
STAGING_DIR_TMP=${STAGING_DIR}/toolchain-mipsel_24kec+dsp_gcc-4.8-linaro_uClibc-0.9.33.2
CLFS_TARGET=mipsel-openwrt-linux
export CC=${STAGING_DIR_TMP}/bin/${CLFS_TARGET}-gcc
export CXX=${STAGING_DIR_TMP}/bin/${CLFS_TARGET}-c++
export AR=${STAGING_DIR_TMP}/bin/${CLFS_TARGET}-ar
export AS=${STAGING_DIR_TMP}/bin/${CLFS_TARGET}-as
export LD=${STAGING_DIR_TMP}/bin/${CLFS_TARGET}-ld
export NM=${STAGING_DIR_TMP}/bin/${CLFS_TARGET}-nm
export OBJDUMP=${STAGING_DIR_TMP}/bin/${CLFS_TARGET}-objdump
export RANLIB=${STAGING_DIR_TMP}/bin/${CLFS_TARGET}-ranlib
export STRIP=${STAGING_DIR_TMP}/bin/${CLFS_TARGET}-strip
export CC_FOR_TARGET=${STAGING_DIR_TMP}/bin/${CLFS_TARGET}-gcc
export CXX_FOR_TARGET=${STAGING_DIR_TMP}/bin/${CLFS_TARGET}-c++
export AR_FOR_TARGET=${STAGING_DIR_TMP}/bin/${CLFS_TARGET}-ar
export AS_FOR_TARGET=${STAGING_DIR_TMP}/bin/${CLFS_TARGET}-as
export LD_FOR_TARGET=${STAGING_DIR_TMP}/bin/${CLFS_TARGET}-ld
export NM_FOR_TARGET=${STAGING_DIR_TMP}/bin/${CLFS_TARGET}-nm
export OBJDUMP_FOR_TARGET=${STAGING_DIR_TMP}/bin/${CLFS_TARGET}-objdump
export RANLIB_FOR_TARGET=${STAGING_DIR_TMP}/bin/${CLFS_TARGET}-ranlib
export STRIP_FOR_TARGET=${STAGING_DIR_TMP}/bin/${CLFS_TARGET}-strip
#automake
cd /home/zyw/work/http_client
make clean
./autogen.sh
[ $? -ne 0 ] && echo "autogen失败" && exit 1
./configure --host=mipsel-openwrt-linux --prefix=/usr --sysconfdir=/etc/config
make
make DESTDIR=/tmp/test install
通过执行上面的脚本就可以通过openwrt的编译工具链生成可执行文件,拷贝到openwrt路由器上就可以运行了。
********如果编译的时候遇到依赖库不存在,这个时候就需要手动复制到指定目录下
例子:编译的时候提示curl库不存在,解决办法
根据上面指定的工具链是mips还是i386
cd /work/chaos_calmer/build_dir/target-mipsel_24kec+dsp_uClibc-0.9.33.2/curl-7.40.0/ipkg-install/usr 目录下
1)将上面usr下的include目录下的所有文件拷贝到指定目录
cd include
cp -R * /home/zyw/work/chaos_calmer/staging_dir/toolchain-mipsel_24kec+dsp_gcc-4.8-linaro_uClibc-0.9.33.2/include/
cp -R * /home/zyw/chaos_calmer/staging_dir/toolchain-mipsel_24kec+dsp_gcc-4.8-linaro_uClibc-0.9.33.2/usr/include/
2)将上面usr下的lib目录下的所有文件拷贝到指定目录
cd lib
cp -R * /home/zyw/chaos_calmer/staging_dir/toolchain-mipsel_24kec+dsp_gcc-4.8-linaro_uClibc-0.9.33.2/usr/lib
cp -R * /home/zyw/barrier_breaker/staging_dir/toolchain-mipsel_24kec+dsp_gcc-4.8-linaro_uClibc-0.9.33.2/lib
******如果执行的时候提示lib*不存在,解决办法是将对应lib的ipk安装到openwrt路由器上面,如果安装不上,就只能手动复制到/usr/lib目录下。
================
## # The MIT License (MIT) # # Copyright (c) 2015 LSGX # # Permission is hereby granted, free of charge, to any person obtaining a copy # of this software and associated documentation files (the "Software"), to deal # in the Software without restriction, including without limitation the rights # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell # copies of the Software, and to permit persons to whom the Software is # furnished to do so, subject to the following conditions: # # The above copyright notice and this permission notice shall be included in # all copies or substantial portions of the Software. # # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE # SOFTWARE. # ## include $(TOPDIR)/rules.mk include $(INCLUDE_DIR)/kernel.mk PKG_NAME:=mydemo PKG_VERSION:=1.0.1 PKG_RELEASE:=$(AUTORELEASE) PKG_MAINTAINER:=Lsgx <lsgx@live.com> PKG_LICENSE:=MIT PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION) PKG_BUILD_PARALLEL:=1 PKG_BUILD_DEPENDS:= include $(INCLUDE_DIR)/package.mk define Package/$(PKG_NAME) SECTION:=amip-mytest CATEGORY:=Amip SUBMENU:=mytest TITLE:=This is my test demo DEPENDS:= endef define Build/Prepare mkdir -p $(PKG_BUILD_DIR) $(CP) ./src/* $(PKG_BUILD_DIR)/ endef define Package/$(PKG_NAME)/install $(INSTALL_DIR) $(1)/usr/bin $(INSTALL_BIN) $(PKG_BUILD_DIR)/$(PKG_NAME) $(1)/usr/bin/ endef $(eval $(call BuildPackage,mydemo))
# Sources are located relative to Makefile MAKEFILE_DIR := $(shell readlink -f $(dir $(word $(words $(MAKEFILE_LIST)), $(MAKEFILE_LIST)))) # The path of the invoking module vpath %.c $(MAKEFILE_DIR) vpath %.cpp $(MAKEFILE_DIR) # Build flags define CPPFLAGS += -I. -I$(MAKEFILE_DIR) CFLAGS += -fdiagnostics-color -fPIC -export-dynamic CFLAGS += -Wall -Wextra ARFLAGS += crs LDFLAGS += -Wl,--export-dynamic -Wl,-rpath,.:$(MAKEFILE_DIR) LDLIBS += -L. -L$(MAKEFILE_DIR) # Build object files %o: %.c $(CC) -c $(CPPFLAGS) $(CFLAGS) -o $@ $< %.o: %.cpp $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< # Object Sources EXEC = mydemo SRCDIRS = . CSRC += $(wildcard $(SRCDIRS:%=$(MAKEFILE_DIR)/%/*.c)) CSRC := $(strip $(subst $(SRCDIRS:%=$(MAKEFILE_DIR)/%/test_main.c),,$(CSRC))) CXXSRC += $(wildcard $(SRCDIRS:%=$(MAKEFILE_DIR)/%/*.cpp)) CXXSRC := $(strip $(subst $(SRCDIRS:%=$(MAKEFILE_DIR)/%/test_main.cpp),,$(CXXSRC))) COBJ = $(CSRC:$(MAKEFILE_DIR)/%.c=%.o) CXXOBJ = $(CXXSRC:$(MAKEFILE_DIR)/%.cpp=%.o) OBJS = $(COBJ) $(CXXOBJ) default: $(EXEC) $(EXEC): $(OBJS) $(CC) $(LDFLAGS) $^ $(LDLIBS) -o $@ .PHONY: clean clean: $(RM) $(EXEC) $(OBJS)
#include <stdio.h> int main(int argc, char **argv) { puts("Hello, This is my first test demo."); return 0; }
echo "feeds update install ..." ./scripts/feeds update -a ./scripts/feeds install -a echo "make defconfig ..." make defconfig V=s echo "make download ..." make download -j$(expr $(nproc) + 1) || make download -j1
echo "make world ..."
make -j$(expr $(nproc) + 1) V=s || make -j1 V=s
echo "make world ..."
make -j$(expr $(nproc) + 1) LINUX_VERMAGIC:=abf2e0d798db6cc11a74a8215e715cb8 V=s
root@OpenWrt:~# root@OpenWrt:~# cat /etc/opkg/customfeeds.conf # add your custom package feeds here # # src/gz example_feed_name http://www.example.com/path/to/files src/gz lsgx_core http://192.168.195.1:9099/targets/x86/64/packages src/gz lsgx_base http://192.168.195.1:9099/packages/x86_64//base src/gz lsgx_helloworld http://192.168.195.1:9099/packages/x86_64/helloworld src/gz lsgx_luci http://192.168.195.1:9099/packages/x86_64/luci src/gz lsgx_packages http://192.168.195.1:9099/packages/x86_64/packages src/gz lsgx_routing http://192.168.195.1:9099/packages/x86_64/routing src/gz lsgx_telephony http://192.168.195.1:9099/packages/x86_64/telephony src/gz lsgx_amip http://192.168.195.1:9099/packages/x86_64/amip root@OpenWrt:~# root@OpenWrt:~# opkg update Downloading http://192.168.195.1:9099/targets/x86/64/packages/Packages.gz Updated list of available packages in /var/opkg-lists/lsgx_core Downloading http://192.168.195.1:9099/targets/x86/64/packages/Packages.sig Signature check passed. Downloading http://192.168.195.1:9099/packages/x86_64//base/Packages.gz Updated list of available packages in /var/opkg-lists/lsgx_base Downloading http://192.168.195.1:9099/packages/x86_64//base/Packages.sig Signature check passed. Downloading http://192.168.195.1:9099/packages/x86_64/helloworld/Packages.gz Updated list of available packages in /var/opkg-lists/lsgx_helloworld Downloading http://192.168.195.1:9099/packages/x86_64/helloworld/Packages.sig Signature check passed. Downloading http://192.168.195.1:9099/packages/x86_64/luci/Packages.gz Updated list of available packages in /var/opkg-lists/lsgx_luci Downloading http://192.168.195.1:9099/packages/x86_64/luci/Packages.sig Signature check passed. Downloading http://192.168.195.1:9099/packages/x86_64/packages/Packages.gz Updated list of available packages in /var/opkg-lists/lsgx_packages Downloading http://192.168.195.1:9099/packages/x86_64/packages/Packages.sig Signature check passed. Downloading http://192.168.195.1:9099/packages/x86_64/routing/Packages.gz Updated list of available packages in /var/opkg-lists/lsgx_routing Downloading http://192.168.195.1:9099/packages/x86_64/routing/Packages.sig Signature check passed. Downloading http://192.168.195.1:9099/packages/x86_64/telephony/Packages.gz Updated list of available packages in /var/opkg-lists/lsgx_telephony Downloading http://192.168.195.1:9099/packages/x86_64/telephony/Packages.sig Signature check passed. Downloading http://192.168.195.1:9099/packages/x86_64/amip/Packages.gz Updated list of available packages in /var/opkg-lists/lsgx_amip Downloading http://192.168.195.1:9099/packages/x86_64/amip/Packages.sig Signature check passed. root@OpenWrt:~# root@OpenWrt:~# ls -alh /var/opkg-lists/ drwxr-xr-x 2 root root 360 Jan 30 14:22 . drwxrwxrwt 20 root root 580 Jan 30 14:22 .. -rw-r--r-- 1 root root 236 Jan 29 17:50 lsgx_amip -rw-r--r-- 1 root root 151 Jan 29 17:50 lsgx_amip.sig -rw-r--r-- 1 root root 12.8K Jan 29 17:50 lsgx_base -rw-r--r-- 1 root root 151 Jan 29 17:50 lsgx_base.sig -rw-r--r-- 1 root root 16.1K Jan 29 17:50 lsgx_core -rw-r--r-- 1 root root 151 Jan 29 17:50 lsgx_core.sig -rw-r--r-- 1 root root 2.0K Jan 29 17:50 lsgx_helloworld -rw-r--r-- 1 root root 151 Jan 29 17:50 lsgx_helloworld.sig -rw-r--r-- 1 root root 5.4K Jan 29 17:50 lsgx_luci -rw-r--r-- 1 root root 151 Jan 29 17:50 lsgx_luci.sig -rw-r--r-- 1 root root 11.3K Jan 29 17:50 lsgx_packages -rw-r--r-- 1 root root 151 Jan 29 17:51 lsgx_packages.sig -rw-r--r-- 1 root root 21 Jan 29 17:50 lsgx_routing -rw-r--r-- 1 root root 151 Jan 29 17:51 lsgx_routing.sig -rw-r--r-- 1 root root 21 Jan 29 17:50 lsgx_telephony -rw-r--r-- 1 root root 151 Jan 29 17:51 lsgx_telephony.sig root@OpenWrt:~# root@OpenWrt:~# root@OpenWrt:~# opkg install mydemo Installing mydemo (1.0.1-1) to root... Downloading http://192.168.195.1:9099/packages/x86_64/amip/mydemo_1.0.1-1_x86_64.ipk Configuring mydemo. root@OpenWrt:~# root@OpenWrt:~# mydemo Hello, This is my first test demo. root@OpenWrt:~# root@OpenWrt:~# opkg remove mydemo Removing package mydemo from root... root@OpenWrt:~# root@OpenWrt:~# mydemo -ash: mydemo: not found root@OpenWrt:~#
lsgx@DESKTOP-QSH4TMH:~/develop/lede$ lsgx@DESKTOP-QSH4TMH:~/develop/lede$ ./scripts/feeds update amip lsgx@DESKTOP-QSH4TMH:~/develop/lede$ lsgx@DESKTOP-QSH4TMH:~/develop/lede$ ./scripts/feeds install -a -p amip lsgx@DESKTOP-QSH4TMH:~/develop/lede$
lsgx@DESKTOP-QSH4TMH:~/develop/lede$ echo "CONFIG_FEED_amip=y" > .config
lsgx@DESKTOP-QSH4TMH:~/develop/lede$ echo "CONFIG_PACKAGE_mydemo=m" > .config
lsgx@DESKTOP-QSH4TMH:~/develop/lede$
lsgx@DESKTOP-QSH4TMH:~/develop/lede$ make defconfig V=s
lsgx@DESKTOP-QSH4TMH:~/develop/lede$
lsgx@DESKTOP-QSH4TMH:~/develop/lede$ make download -j$(expr $(nproc) + 1) V=s
lsgx@DESKTOP-QSH4TMH:~/develop/lede$
lsgx@DESKTOP-QSH4TMH:~/develop/lede$ make -j$(expr $(nproc) + 1) LINUX_VERMAGIC:=abf2e0d798db6cc11a74a8215e715cb8 V=s
lsgx@DESKTOP-QSH4TMH:~/develop/lede$
lsgx@DESKTOP-QSH4TMH:~/develop/lede$ make package/mydemo/clean V=s lsgx@DESKTOP-QSH4TMH:~/develop/lede$ lsgx@DESKTOP-QSH4TMH:~/develop/lede$ make package/mydemo/compile V=s lsgx@DESKTOP-QSH4TMH:~/develop/lede$ lsgx@DESKTOP-QSH4TMH:~/develop/lede$ make package/index V=s lsgx@DESKTOP-QSH4TMH:~/develop/lede$
lsgx@DESKTOP-QSH4TMH:~/develop/lede$ lsgx@DESKTOP-QSH4TMH:~/develop/lede$ make package/mydemo/clean V=s make[2]: Entering directory '/home/lsgx/develop/lede/scripts/config' make[2]: 'conf' is up to date. make[2]: Leaving directory '/home/lsgx/develop/lede/scripts/config' make[1]: Entering directory '/home/lsgx/develop/lede' make[2]: Entering directory '/home/lsgx/develop/amip/mytest/mydemo' rm -rf /home/lsgx/develop/lede/build_dir/target-x86_64_musl/mydemo-1.0.1 /home/lsgx/develop/lede/scripts/ipkg-remove mydemo /home/lsgx/develop/lede/bin/packages/x86_64/amip/mydemo_1.0.1-1_x86_64.ipk removed '/home/lsgx/develop/lede/bin/packages/x86_64/amip/mydemo_1.0.1-1_x86_64.ipk' rm -f /home/lsgx/develop/lede/staging_dir/target-x86_64_musl/stamp/.mydemo_installed rm -f /home/lsgx/develop/lede/staging_dir/target-x86_64_musl/packages/mydemo.list make[2]: Leaving directory '/home/lsgx/develop/amip/mytest/mydemo' time: package/feeds/amip/mydemo/clean#0.06#1.12#1.15 make[1]: Leaving directory '/home/lsgx/develop/lede' lsgx@DESKTOP-QSH4TMH:~/develop/lede$ lsgx@DESKTOP-QSH4TMH:~/develop/lede$ make package/mydemo/compile V=s make[2]: Entering directory '/home/lsgx/develop/lede/scripts/config' make[2]: 'conf' is up to date. make[2]: Leaving directory '/home/lsgx/develop/lede/scripts/config' make[1]: Entering directory '/home/lsgx/develop/lede' make[2]: Entering directory '/home/lsgx/develop/lede/package/libs/toolchain' echo "libc" >> /home/lsgx/develop/lede/staging_dir/target-x86_64_musl/pkginfo/toolchain.default.install echo "libgcc" >> /home/lsgx/develop/lede/staging_dir/target-x86_64_musl/pkginfo/toolchain.default.install echo "libatomic" >> /home/lsgx/develop/lede/staging_dir/target-x86_64_musl/pkginfo/toolchain.default.install echo "libstdcpp" >> /home/lsgx/develop/lede/staging_dir/target-x86_64_musl/pkginfo/toolchain.default.install echo "libpthread" >> /home/lsgx/develop/lede/staging_dir/target-x86_64_musl/pkginfo/toolchain.default.install echo "librt" >> /home/lsgx/develop/lede/staging_dir/target-x86_64_musl/pkginfo/toolchain.default.install make[2]: Leaving directory '/home/lsgx/develop/lede/package/libs/toolchain' time: package/libs/toolchain/compile#0.07#1.26#1.31 make[2]: Entering directory '/home/lsgx/develop/amip/mytest/mydemo' touch /home/lsgx/develop/lede/build_dir/target-x86_64_musl/mydemo-1.0.1/.prepared_05c1e5b346d86de89ca9335a1e7f3149_6664517399ebbbc92a37c5bb081b5c53_check mkdir -p /home/lsgx/develop/lede/build_dir/target-x86_64_musl/mydemo-1.0.1 cp -fpR ./src/* /home/lsgx/develop/lede/build_dir/target-x86_64_musl/mydemo-1.0.1/ touch /home/lsgx/develop/lede/build_dir/target-x86_64_musl/mydemo-1.0.1/.prepared_05c1e5b346d86de89ca9335a1e7f3149_6664517399ebbbc92a37c5bb081b5c53 rm -f /home/lsgx/develop/lede/build_dir/target-x86_64_musl/mydemo-1.0.1/.configured_* rm -f /home/lsgx/develop/lede/staging_dir/target-x86_64_musl/stamp/.mydemo_installed touch /home/lsgx/develop/lede/build_dir/target-x86_64_musl/mydemo-1.0.1/.configured_68b329da9893e34099c7d8ad5cb9c940 rm -f /home/lsgx/develop/lede/build_dir/target-x86_64_musl/mydemo-1.0.1/.built touch /home/lsgx/develop/lede/build_dir/target-x86_64_musl/mydemo-1.0.1/.built_check make -C /home/lsgx/develop/lede/build_dir/target-x86_64_musl/mydemo-1.0.1 AR="x86_64-openwrt-linux-musl-gcc-ar" AS="x86_64-openwrt-linux-musl-gcc -c -Os -pipe -fno-caller-saves -fno-plt -fhonour-copts -fmacro-prefix-map=/home/lsgx/develop/lede/build_dir/target-x86_64_musl/mydemo-1.0.1=mydemo-1.0.1 -Wformat -Werror=format-security -fstack-protector -D_FORTIFY_SOURCE=1 -Wl,-z,now -Wl,-z,relro" LD=x86_64-openwrt-linux-musl-ld NM="x86_64-openwrt-linux-musl-gcc-nm" CC="x86_64-openwrt-linux-musl-gcc" GCC="x86_64-openwrt-linux-musl-gcc" CXX="x86_64-openwrt-linux-musl-g++" RANLIB="x86_64-openwrt-linux-musl-gcc-ranlib" STRIP=x86_64-openwrt-linux-musl-strip OBJCOPY=x86_64-openwrt-linux-musl-objcopy OBJDUMP=x86_64-openwrt-linux-musl-objdump SIZE=x86_64-openwrt-linux-musl-size CPPFLAGS="-I/home/lsgx/develop/lede/staging_dir/toolchain-x86_64_gcc-11.3.0_musl/usr/include -I/home/lsgx/develop/lede/staging_dir/toolchain-x86_64_gcc-11.3.0_musl/include/fortify -I/home/lsgx/develop/lede/staging_dir/toolchain-x86_64_gcc-11.3.0_musl/include" CFLAGS="-Os -pipe -fno-caller-saves -fno-plt -fhonour-copts -fmacro-prefix-map=/home/lsgx/develop/lede/build_dir/target-x86_64_musl/mydemo-1.0.1=mydemo-1.0.1 -Wformat -Werror=format-security -fstack-protector -D_FORTIFY_SOURCE=1 -Wl,-z,now -Wl,-z,relro" CXXFLAGS="-Os -pipe -fno-caller-saves -fno-plt -fhonour-copts -fmacro-prefix-map=/home/lsgx/develop/lede/build_dir/target-x86_64_musl/mydemo-1.0.1=mydemo-1.0.1 -Wformat -Werror=format-security -fstack-protector -D_FORTIFY_SOURCE=1 -Wl,-z,now -Wl,-z,relro" LDFLAGS="-L/home/lsgx/develop/lede/staging_dir/toolchain-x86_64_gcc-11.3.0_musl/usr/lib -L/home/lsgx/develop/lede/staging_dir/toolchain-x86_64_gcc-11.3.0_musl/lib -znow -zrelro" LDLIBS="" make[3]: Entering directory '/home/lsgx/develop/lede/build_dir/target-x86_64_musl/mydemo-1.0.1' x86_64-openwrt-linux-musl-gcc -Os -pipe -fno-caller-saves -fno-plt -fhonour-copts -fmacro-prefix-map=/home/lsgx/develop/lede/build_dir/target-x86_64_musl/mydemo-1.0.1=mydemo-1.0.1 -Wformat -Werror=format-security -fstack-protector -D_FORTIFY_SOURCE=1 -Wl,-z,now -Wl,-z,relro -I/home/lsgx/develop/lede/staging_dir/toolchain-x86_64_gcc-11.3.0_musl/usr/include -I/home/lsgx/develop/lede/staging_dir/toolchain-x86_64_gcc-11.3.0_musl/include/fortify -I/home/lsgx/develop/lede/staging_dir/toolchain-x86_64_gcc-11.3.0_musl/include -c -o mydemo.o mydemo.c x86_64-openwrt-linux-musl-gcc -L/home/lsgx/develop/lede/staging_dir/toolchain-x86_64_gcc-11.3.0_musl/usr/lib -L/home/lsgx/develop/lede/staging_dir/toolchain-x86_64_gcc-11.3.0_musl/lib -znow -zrelro mydemo.o -o mydemo make[3]: Leaving directory '/home/lsgx/develop/lede/build_dir/target-x86_64_musl/mydemo-1.0.1' touch /home/lsgx/develop/lede/build_dir/target-x86_64_musl/mydemo-1.0.1/.built rm -rf /home/lsgx/develop/lede/build_dir/target-x86_64_musl/mydemo-1.0.1/.pkgdir/mydemo.installed /home/lsgx/develop/lede/build_dir/target-x86_64_musl/mydemo-1.0.1/.pkgdir/mydemo mkdir -p /home/lsgx/develop/lede/build_dir/target-x86_64_musl/mydemo-1.0.1/.pkgdir/mydemo install -d -m0755 /home/lsgx/develop/lede/build_dir/target-x86_64_musl/mydemo-1.0.1/.pkgdir/mydemo/usr/bin install -m0755 /home/lsgx/develop/lede/build_dir/target-x86_64_musl/mydemo-1.0.1/mydemo /home/lsgx/develop/lede/build_dir/target-x86_64_musl/mydemo-1.0.1/.pkgdir/mydemo/usr/bin/ touch /home/lsgx/develop/lede/build_dir/target-x86_64_musl/mydemo-1.0.1/.pkgdir/mydemo.installed mkdir -p /home/lsgx/develop/lede/staging_dir/target-x86_64_musl/root-x86/stamp SHELL= flock /home/lsgx/develop/lede/tmp/.root-copy.flock -c 'cp -fpR /home/lsgx/develop/lede/build_dir/target-x86_64_musl/mydemo-1.0.1/.pkgdir/mydemo/. /home/lsgx/develop/lede/staging_dir/target-x86_64_musl/root-x86/' touch /home/lsgx/develop/lede/staging_dir/target-x86_64_musl/root-x86/stamp/.mydemo_installed mkdir -p /home/lsgx/develop/lede/bin/targets/x86/64/packages /home/lsgx/develop/lede/build_dir/target-x86_64_musl/mydemo-1.0.1/ipkg-x86_64/mydemo/CONTROL /home/lsgx/develop/lede/staging_dir/target-x86_64_musl/pkginfo install -d -m0755 /home/lsgx/develop/lede/build_dir/target-x86_64_musl/mydemo-1.0.1/ipkg-x86_64/mydemo/usr/bin install -m0755 /home/lsgx/develop/lede/build_dir/target-x86_64_musl/mydemo-1.0.1/mydemo /home/lsgx/develop/lede/build_dir/target-x86_64_musl/mydemo-1.0.1/ipkg-x86_64/mydemo/usr/bin/ find /home/lsgx/develop/lede/build_dir/target-x86_64_musl/mydemo-1.0.1/ipkg-x86_64/mydemo -name 'CVS' -o -name '.svn' -o -name '.#*' -o -name '*~'| xargs -r rm -rf export CROSS="x86_64-openwrt-linux-musl-" NO_RENAME=1 ; NM="x86_64-openwrt-linux-musl-nm" STRIP="/home/lsgx/develop/lede/staging_dir/host/bin/sstrip -z" STRIP_KMOD="/home/lsgx/develop/lede/scripts/strip-kmod.sh" PATCHELF="/home/lsgx/develop/lede/staging_dir/host/bin/patchelf" /home/lsgx/develop/lede/scripts/rstrip.sh /home/lsgx/develop/lede/build_dir/target-x86_64_musl/mydemo-1.0.1/ipkg-x86_64/mydemo rstrip.sh: /home/lsgx/develop/lede/build_dir/target-x86_64_musl/mydemo-1.0.1/ipkg-x86_64/mydemo/usr/bin/mydemo: executable (cd /home/lsgx/develop/lede/build_dir/target-x86_64_musl/mydemo-1.0.1/ipkg-x86_64/mydemo/CONTROL; ( echo "$CONTROL"; printf "Description: "; echo "$DESCRIPTION" | sed -e 's,^[[:space:]]*, ,g'; ) > control; chmod 644 control; ( echo "#!/bin/sh"; echo "[ \"\${IPKG_NO_SCRIPT}\" = \"1\" ] && exit 0"; echo "[ -s "\${IPKG_INSTROOT}/lib/functions.sh" ] || exit 0"; echo ". \${IPKG_INSTROOT}/lib/functions.sh"; echo "default_postinst \$0 \$@"; ) > postinst; ( echo "#!/bin/sh"; echo "[ -s "\${IPKG_INSTROOT}/lib/functions.sh" ] || exit 0"; echo ". \${IPKG_INSTROOT}/lib/functions.sh"; echo "default_prerm \$0 \$@"; ) > prerm; chmod 0755 postinst prerm; ) install -d -m0755 /home/lsgx/develop/lede/bin/packages/x86_64/amip /home/lsgx/develop/lede/staging_dir/host/bin/fakeroot /home/lsgx/develop/lede/staging_dir/host/bin/bash /home/lsgx/develop/lede/scripts/ipkg-build -m "" /home/lsgx/develop/lede/build_dir/target-x86_64_musl/mydemo-1.0.1/ipkg-x86_64/mydemo /home/lsgx/develop/lede/bin/packages/x86_64/amip Packaged contents of /home/lsgx/develop/lede/build_dir/target-x86_64_musl/mydemo-1.0.1/ipkg-x86_64/mydemo into /home/lsgx/develop/lede/bin/packages/x86_64/amip/mydemo_1.0.1-1_x86_64.ipk make[2]: Leaving directory '/home/lsgx/develop/amip/mytest/mydemo' time: package/feeds/amip/mydemo/compile#0.23#2.64#2.85 make[1]: Leaving directory '/home/lsgx/develop/lede' lsgx@DESKTOP-QSH4TMH:~/develop/lede$
${workspaceFolder} :表示当前workspace文件夹路径,也即/home/Coding/Test ${workspaceRootFolderName}:表示workspace的文件夹名,也即Test ${file}:文件自身的绝对路径,也即/home/Coding/Test/.vscode/tasks.json ${relativeFile}:文件在workspace中的路径,也即.vscode/tasks.json ${fileBasenameNoExtension}:当前文件的文件名,不带后缀,也即tasks ${fileBasename}:当前文件的文件名,tasks.json ${fileDirname}:文件所在的文件夹路径,也即/home/Coding/Test/.vscode ${fileExtname}:当前文件的后缀,也即.json ${lineNumber}:当前文件光标所在的行号 ${env:PATH}:系统中的环境变量
@echo '===========================' @echo 'version_abbrev : ' $(version_abbrev) @echo '_SINGLE : ' $(_SINGLE) @echo 'CFLAGS : ' $(CFLAGS) @echo 'ARCH : ' $(ARCH) @echo 'ARCH_PACKAGES : ' $(ARCH_PACKAGES) @echo 'BOARD : ' $(BOARD) @echo 'SUBTARGET : ' $(SUBTARGET) @echo 'TARGET_OPTIMIZATION : ' $(TARGET_OPTIMIZATION) @echo 'EXTRA_OPTIMIZATION : ' $(EXTRA_OPTIMIZATION) @echo 'TARGET_SUFFIX : ' $(TARGET_SUFFIX) @echo 'BUILD_SUFFIX : ' $(BUILD_SUFFIX) @echo 'SUBDIR : ' $(SUBDIR) @echo 'BUILD_SUBDIR : ' $(BUILD_SUBDIR) @echo 'SHELL : ' $(SHELL) @echo 'IS_PACKAGE_BUILD : ' $(IS_PACKAGE_BUILD) @echo 'OPTIMIZE_FOR_CPU : ' $(OPTIMIZE_FOR_CPU) @echo 'HOST_FPIC : ' $(HOST_FPIC) @echo 'ARCH_SUFFIX : ' $(ARCH_SUFFIX) @echo 'GCC_ARCH : ' $(GCC_ARCH) @echo 'DL_DIR : ' $(DL_DIR) @echo 'OUTPUT_DIR : ' $(OUTPUT_DIR) @echo 'BIN_DIR : ' $(BIN_DIR) @echo 'INCLUDE_DIR : ' $(INCLUDE_DIR) @echo 'SCRIPT_DIR : ' $(SCRIPT_DIR) @echo 'BUILD_DIR_BASE : ' $(BUILD_DIR_BASE) @echo 'GCCV : ' $(GCCV) @echo 'LIBC : ' $(LIBC) @echo 'LIBCV : ' $(LIBCV) @echo 'REAL_GNU_TARGET_NAME : ' $(REAL_GNU_TARGET_NAME) @echo 'GNU_TARGET_NAME : ' $(GNU_TARGET_NAME) @echo 'DIR_SUFFIX : ' $(DIR_SUFFIX) @echo 'BIN_DIR : ' $(BIN_DIR) @echo 'TARGET_DIR_NAME : ' $(TARGET_DIR_NAME) @echo 'TOOLCHAIN_DIR_NAME : ' $(TOOLCHAIN_DIR_NAME) @echo 'PACKAGE_DIR : ' $(PACKAGE_DIR) @echo 'PACKAGE_DIR_ALL : ' $(PACKAGE_DIR_ALL) @echo 'BUILD_DIR : ' $(BUILD_DIR) @echo 'STAGING_DIR : ' $(STAGING_DIR) @echo 'BUILD_DIR_TOOLCHAIN : ' $(BUILD_DIR_TOOLCHAIN) @echo 'TOOLCHAIN_DIR : ' $(TOOLCHAIN_DIR) @echo 'STAMP_DIR : ' $(STAMP_DIR) @echo 'STAMP_DIR_HOST : ' $(STAMP_DIR_HOST) @echo 'TARGET_ROOTFS_DIR : ' $(TARGET_ROOTFS_DIR) @echo 'TARGET_DIR : ' $(TARGET_DIR) @echo 'STAGING_DIR_ROOT : ' $(STAGING_DIR_ROOT) @echo 'BUILD_LOG_DIR : ' $(BUILD_LOG_DIR) @echo 'PKG_INFO_DIR : ' $(PKG_INFO_DIR) @echo 'BUILD_DIR_HOST : ' $(BUILD_DIR_HOST) @echo 'STAGING_DIR_HOST : ' $(STAGING_DIR_HOST) @echo 'STAGING_DIR_HOSTPKG : ' $(STAGING_DIR_HOSTPKG) @echo 'TARGET_PATH : ' $(TARGET_PATH) @echo 'TARGET_INIT_PATH : ' $(TARGET_INIT_PATH) @echo 'TARGET_CFLAGS : ' $(TARGET_CFLAGS) @echo 'TARGET_CXXFLAGS : ' $(TARGET_CXXFLAGS) @echo 'TARGET_ASFLAGS_DEFAULT : ' $(TARGET_ASFLAGS_DEFAULT) @echo 'TARGET_ASFLAGS : ' $(TARGET_ASFLAGS) @echo 'TARGET_CPPFLAGS : ' $(TARGET_CPPFLAGS) @echo 'TARGET_LDFLAGS : ' $(TARGET_LDFLAGS) @echo 'LIBGCC_S_PATH : ' $(LIBGCC_S_PATH) @echo 'LIBGCC_S : ' $(LIBGCC_S) @echo 'LIBGCC_A : ' $(LIBGCC_A) @echo 'LIBRPC : ' $(LIBRPC) @echo 'LIBRPC_DEPENDS : ' $(LIBRPC_DEPENDS) @echo 'LIB_SUFFIX : ' $(LIB_SUFFIX) @echo 'TARGET_CROSS : ' $(TARGET_CROSS) @echo 'TARGET_PATH_PKG : ' $(TARGET_PATH_PKG) @echo 'HOSTCC : ' $(HOSTCC) @echo 'HOSTCXX : ' $(HOSTCXX) @echo 'HOST_CPPFLAGS : ' $(HOST_CPPFLAGS) @echo 'HOST_CFLAGS : ' $(HOST_CFLAGS) @echo 'HOST_LDFLAGS : ' $(HOST_LDFLAGS) @echo 'TARGET_AR : ' $(TARGET_AR) @echo 'TARGET_RANLIB : ' $(TARGET_RANLIB) @echo 'TARGET_NM : ' $(TARGET_NM) @echo 'BUILD_KEY : ' $(BUILD_KEY) @echo 'TARGET_CC : ' $(TARGET_CC) @echo 'TARGET_CXX : ' $(TARGET_CXX) @echo 'KPATCH : ' $(KPATCH) @echo 'TARGET_CONFIGURE_OPTS : ' $(TARGET_CONFIGURE_OPTS) @echo '==========================='
=========================== version_abbrev : lx-hello _SINGLE : export MAKEFLAGS= CFLAGS : ARCH : mips ARCH_PACKAGES : mips_24kc BOARD : ar71xx SUBTARGET : generic TARGET_OPTIMIZATION : -Os -pipe -mno-branch-likely -mips32r2 -mtune=24kc EXTRA_OPTIMIZATION : -fno-caller-saves TARGET_SUFFIX : musl BUILD_SUFFIX : SUBDIR : package/utils/lx-hello BUILD_SUBDIR : package/utils/lx-hello SHELL : /usr/bin/env bash IS_PACKAGE_BUILD : 1 OPTIMIZE_FOR_CPU : mips HOST_FPIC : -fPIC ARCH_SUFFIX : _24kc GCC_ARCH : DL_DIR : /home/lsgx/develop/lede-17.01.4-Mod/dl OUTPUT_DIR : /home/lsgx/develop/lede-17.01.4-Mod/bin BIN_DIR : /home/lsgx/develop/lede-17.01.4-Mod/bin/targets/ar71xx/generic INCLUDE_DIR : /home/lsgx/develop/lede-17.01.4-Mod/include SCRIPT_DIR : /home/lsgx/develop/lede-17.01.4-Mod/scripts BUILD_DIR_BASE : /home/lsgx/develop/lede-17.01.4-Mod/build_dir GCCV : 7.5.0 LIBC : musl LIBCV : 1.1.24 REAL_GNU_TARGET_NAME : mips-openwrt-linux-musl GNU_TARGET_NAME : mips-openwrt-linux DIR_SUFFIX : _musl-1.1.24 BIN_DIR : /home/lsgx/develop/lede-17.01.4-Mod/bin/targets/ar71xx/generic TARGET_DIR_NAME : target-mips_24kc_musl-1.1.24 TOOLCHAIN_DIR_NAME : toolchain-mips_24kc_gcc-7.5.0_musl-1.1.24 PACKAGE_DIR : /home/lsgx/develop/lede-17.01.4-Mod/bin/targets/ar71xx/generic/packages PACKAGE_DIR_ALL : /home/lsgx/develop/lede-17.01.4-Mod/staging_dir/packages/ar71xx BUILD_DIR : /home/lsgx/develop/lede-17.01.4-Mod/build_dir/target-mips_24kc_musl-1.1.24 STAGING_DIR : /home/lsgx/develop/lede-17.01.4-Mod/staging_dir/target-mips_24kc_musl-1.1.24 BUILD_DIR_TOOLCHAIN : /home/lsgx/develop/lede-17.01.4-Mod/build_dir/toolchain-mips_24kc_gcc-7.5.0_musl-1.1.24 TOOLCHAIN_DIR : /home/lsgx/develop/lede-17.01.4-Mod/staging_dir/toolchain-mips_24kc_gcc-7.5.0_musl-1.1.24 STAMP_DIR : /home/lsgx/develop/lede-17.01.4-Mod/build_dir/target-mips_24kc_musl-1.1.24/stamp STAMP_DIR_HOST : /home/lsgx/develop/lede-17.01.4-Mod/build_dir/target-mips_24kc_musl-1.1.24/host/stamp TARGET_ROOTFS_DIR : /home/lsgx/develop/lede-17.01.4-Mod/build_dir/target-mips_24kc_musl-1.1.24 TARGET_DIR : /home/lsgx/develop/lede-17.01.4-Mod/build_dir/target-mips_24kc_musl-1.1.24/root-ar71xx STAGING_DIR_ROOT : /home/lsgx/develop/lede-17.01.4-Mod/staging_dir/target-mips_24kc_musl-1.1.24/root-ar71xx BUILD_LOG_DIR : /home/lsgx/develop/lede-17.01.4-Mod/logs PKG_INFO_DIR : /home/lsgx/develop/lede-17.01.4-Mod/staging_dir/target-mips_24kc_musl-1.1.24/pkginfo BUILD_DIR_HOST : /home/lsgx/develop/lede-17.01.4-Mod/build_dir/target-mips_24kc_musl-1.1.24/host STAGING_DIR_HOST : /home/lsgx/develop/lede-17.01.4-Mod/staging_dir/host STAGING_DIR_HOSTPKG : /home/lsgx/develop/lede-17.01.4-Mod/staging_dir/target-mips_24kc_musl-1.1.24/host TARGET_PATH : /home/lsgx/develop/lede-17.01.4-Mod/staging_dir/toolchain-mips_24kc_gcc-7.5.0_musl-1.1.24/bin:/home/lsgx/develop/lede-17.01.4-Mod/staging_dir/toolchain-mips_24kc_gcc-7.5.0_musl-1.1.24/bin:/home/lsgx/develop/lede-17.01.4-Mod/staging_dir/host/bin:/home/lsgx/develop/lede-17.01.4-Mod/staging_dir/host/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/home/lsgx/.dotnet/tools TARGET_INIT_PATH : /usr/sbin:/usr/bin:/sbin:/bin TARGET_CFLAGS : -Os -pipe -mno-branch-likely -mips32r2 -mtune=24kc -Wno-implicit-fallthrough -fno-caller-saves -fno-plt -fhonour-copts -Wno-error=unused-but-set-variable -Wno-error=unused-result -msoft-float -mips16 -minterlink-mips16 -iremap/home/lsgx/develop/lede-17.01.4-Mod/build_dir/target-mips_24kc_musl-1.1.24/lx-hello-1.0.1:lx-hello-1.0.1 -Wformat -Werror=format-security -fstack-protector-strong -D_FORTIFY_SOURCE=1 -Wl,-z,now -Wl,-z,relro -I/home/lsgx/develop/lede-17.01.4-Mod/staging_dir/target-mips_24kc_musl-1.1.24/usr/include TARGET_CXXFLAGS : -Os -pipe -mno-branch-likely -mips32r2 -mtune=24kc -Wno-implicit-fallthrough -fno-caller-saves -fno-plt -fhonour-copts -Wno-error=unused-but-set-variable -Wno-error=unused-result -msoft-float -mips16 -minterlink-mips16 -iremap/home/lsgx/develop/lede-17.01.4-Mod/build_dir/target-mips_24kc_musl-1.1.24/lx-hello-1.0.1:lx-hello-1.0.1 -Wformat -Werror=format-security -fstack-protector-strong -D_FORTIFY_SOURCE=1 -Wl,-z,now -Wl,-z,relro -I/home/lsgx/develop/lede-17.01.4-Mod/staging_dir/target-mips_24kc_musl-1.1.24/usr/include TARGET_ASFLAGS_DEFAULT : -Os -pipe -mno-branch-likely -mips32r2 -mtune=24kc -Wno-implicit-fallthrough -fno-caller-saves -fno-plt -fhonour-copts -Wno-error=unused-but-set-variable -Wno-error=unused-result -msoft-float -iremap/home/lsgx/develop/lede-17.01.4-Mod/build_dir/target-mips_24kc_musl-1.1.24/lx-hello-1.0.1:lx-hello-1.0.1 -Wformat -Werror=format-security -fstack-protector-strong -D_FORTIFY_SOURCE=1 -Wl,-z,now -Wl,-z,relro -I/home/lsgx/develop/lede-17.01.4-Mod/staging_dir/target-mips_24kc_musl-1.1.24/usr/include TARGET_ASFLAGS : -Os -pipe -mno-branch-likely -mips32r2 -mtune=24kc -Wno-implicit-fallthrough -fno-caller-saves -fno-plt -fhonour-copts -Wno-error=unused-but-set-variable -Wno-error=unused-result -msoft-float -iremap/home/lsgx/develop/lede-17.01.4-Mod/build_dir/target-mips_24kc_musl-1.1.24/lx-hello-1.0.1:lx-hello-1.0.1 -Wformat -Werror=format-security -fstack-protector-strong -D_FORTIFY_SOURCE=1 -Wl,-z,now -Wl,-z,relro -I/home/lsgx/develop/lede-17.01.4-Mod/staging_dir/target-mips_24kc_musl-1.1.24/usr/include TARGET_CPPFLAGS : -I/home/lsgx/develop/lede-17.01.4-Mod/staging_dir/target-mips_24kc_musl-1.1.24/usr/include -I/home/lsgx/develop/lede-17.01.4-Mod/staging_dir/target-mips_24kc_musl-1.1.24/include -I/home/lsgx/develop/lede-17.01.4-Mod/staging_dir/toolchain-mips_24kc_gcc-7.5.0_musl-1.1.24/usr/include -I/home/lsgx/develop/lede-17.01.4-Mod/staging_dir/toolchain-mips_24kc_gcc-7.5.0_musl-1.1.24/include/fortify -I/home/lsgx/develop/lede-17.01.4-Mod/staging_dir/toolchain-mips_24kc_gcc-7.5.0_musl-1.1.24/include TARGET_LDFLAGS : -L/home/lsgx/develop/lede-17.01.4-Mod/staging_dir/target-mips_24kc_musl-1.1.24/usr/lib -L/home/lsgx/develop/lede-17.01.4-Mod/staging_dir/target-mips_24kc_musl-1.1.24/lib -L/home/lsgx/develop/lede-17.01.4-Mod/staging_dir/toolchain-mips_24kc_gcc-7.5.0_musl-1.1.24/usr/lib -L/home/lsgx/develop/lede-17.01.4-Mod/staging_dir/toolchain-mips_24kc_gcc-7.5.0_musl-1.1.24/lib -znow -zrelro LIBGCC_S_PATH : LIBGCC_S : -L/home/lsgx/develop/lede-17.01.4-Mod/staging_dir/toolchain-mips_24kc_gcc-7.5.0_musl-1.1.24/lib -lgcc_s LIBGCC_A : /home/lsgx/develop/lede-17.01.4-Mod/staging_dir/toolchain-mips_24kc_gcc-7.5.0_musl-1.1.24/lib/gcc/mips-openwrt-linux-musl/7.5.0/libgcc.a LIBRPC : -lrpc LIBRPC_DEPENDS : +librpc LIB_SUFFIX : TARGET_CROSS : mips-openwrt-linux-musl- TARGET_PATH_PKG : /home/lsgx/develop/lede-17.01.4-Mod/staging_dir/target-mips_24kc_musl-1.1.24/host/bin:/home/lsgx/develop/lede-17.01.4-Mod/staging_dir/target-mips_24kc_musl-1.1.24/host/bin:/home/lsgx/develop/lede-17.01.4-Mod/staging_dir/toolchain-mips_24kc_gcc-7.5.0_musl-1.1.24/bin:/home/lsgx/develop/lede-17.01.4-Mod/staging_dir/toolchain-mips_24kc_gcc-7.5.0_musl-1.1.24/bin:/home/lsgx/develop/lede-17.01.4-Mod/staging_dir/host/bin:/home/lsgx/develop/lede-17.01.4-Mod/staging_dir/host/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/home/lsgx/.dotnet/tools HOSTCC : gcc HOSTCXX : g++ HOST_CPPFLAGS : -I/home/lsgx/develop/lede-17.01.4-Mod/staging_dir/host/include -I/home/lsgx/develop/lede-17.01.4-Mod/staging_dir/host/usr/include -I/home/lsgx/develop/lede-17.01.4-Mod/staging_dir/target-mips_24kc_musl-1.1.24/host/include HOST_CFLAGS : -O2 -I/home/lsgx/develop/lede-17.01.4-Mod/staging_dir/host/include -I/home/lsgx/develop/lede-17.01.4-Mod/staging_dir/host/usr/include -I/home/lsgx/develop/lede-17.01.4-Mod/staging_dir/target-mips_24kc_musl-1.1.24/host/include HOST_LDFLAGS : -L/home/lsgx/develop/lede-17.01.4-Mod/staging_dir/host/lib -L/home/lsgx/develop/lede-17.01.4-Mod/staging_dir/host/usr/lib -L/home/lsgx/develop/lede-17.01.4-Mod/staging_dir/target-mips_24kc_musl-1.1.24/host/lib TARGET_AR : mips-openwrt-linux-musl-gcc-ar TARGET_RANLIB : mips-openwrt-linux-musl-gcc-ranlib TARGET_NM : mips-openwrt-linux-musl-gcc-nm BUILD_KEY : /home/lsgx/develop/lede-17.01.4-Mod/key-build TARGET_CC : mips-openwrt-linux-musl-gcc TARGET_CXX : mips-openwrt-linux-musl-g++ KPATCH : /home/lsgx/develop/lede-17.01.4-Mod/scripts/patch-kernel.sh TARGET_CONFIGURE_OPTS : AR=mips-openwrt-linux-musl-gcc-ar AS=mips-openwrt-linux-musl-gcc -c -Os -pipe -mno-branch-likely -mips32r2 -mtune=24kc -Wno-implicit-fallthrough -fno-caller-saves -fno-plt -fhonour-copts -Wno-error=unused-but-set-variable -Wno-error=unused-result -msoft-float -iremap/home/lsgx/develop/lede-17.01.4-Mod/build_dir/target-mips_24kc_musl-1.1.24/lx-hello-1.0.1:lx-hello-1.0.1 -Wformat -Werror=format-security -fstack-protector-strong -D_FORTIFY_SOURCE=1 -Wl,-z,now -Wl,-z,relro -I/home/lsgx/develop/lede-17.01.4-Mod/staging_dir/target-mips_24kc_musl-1.1.24/usr/include LD=mips-openwrt-linux-musl-ld NM=mips-openwrt-linux-musl-gcc-nm CC=mips-openwrt-linux-musl-gcc GCC=mips-openwrt-linux-musl-gcc CXX=mips-openwrt-linux-musl-g++ RANLIB=mips-openwrt-linux-musl-gcc-ranlib STRIP=mips-openwrt-linux-musl-strip OBJCOPY=mips-openwrt-linux-musl-objcopy OBJDUMP=mips-openwrt-linux-musl-objdump SIZE=mips-openwrt-linux-musl-size ===========================
以下是全部:
APP | 名称 | 释义 |
---|---|---|
LuCI ---> Applications | luci-app-accesscontrol | # 访问时间控制 |
LuCI ---> Applications | luci-app-adblock | #ADB 广告过滤 |
LuCI ---> Applications | luci-app-adbyby-plus | # 广告屏蔽大师 Plus + |
LuCI ---> Applications | luci-app-adbyby | # 广告过滤大师(已弃) |
LuCI ---> Applications | luci-app-adkill | # 广告过滤(已弃) |
LuCI ---> Applications | luci-app-advanced-reboot | #Linksys 高级重启 |
LuCI ---> Applications | luci-app-ahcp | # 支持 AHCPd |
LuCI ---> Applications | luci-app-aliddns | # 阿里 DDNS 客户端(已弃,集成至 ddns) |
LuCI ---> Applications | luci-app-amule | #aMule 下载工具 |
LuCI ---> Applications | luci-app-aria2 | # Aria2 下载工具 |
LuCI ---> Applications | luci-app-arpbind | #IP/MAC 绑定 |
LuCI ---> Applications | luci-app-asterisk | # 支持 Asterisk 电话服务器 |
LuCI ---> Applications | luci-app-attendedsysupgrade | # 固件更新升级相关 |
LuCI ---> Applications | luci-app-autoreboot | # 支持计划重启 |
LuCI ---> Applications | luci-app-baidupcs-web | # 百度网盘管理 * |
LuCI ---> Applications | luci-app-bcp38 | #BCP38 网络入口过滤(不确定) |
LuCI ---> Applications | luci-app-birdl-ipv4 | # 对 Birdl-ipv6 的支持 * |
LuCI ---> Applications | luci-app-birdl-ipv6 | # 对 Birdl-ipv4 的支持 * |
LuCI ---> Applications | luci-app-bird4 | #Bird 4(未知)(已弃) |
LuCI ---> Applications | luci-app-bird6 | #Bird 6(未知)(已弃) |
LuCI ---> Applications | luci-app-bmx6 | #BMX6 路由协议 |
LuCI ---> Applications | luci-app-bmx7 | #BMX7 路由协议 |
LuCI ---> Applications | luci-app-caldav | # 联系人(已弃) |
LuCI ---> Applications | luci-app-cifsd | # 网络共享 CIFS/SMB 服务器 * |
LuCI ---> Applications | luci-app-cjdns | # 加密 IPV6 网络相关 |
LuCI ---> Applications | luci-app-clamav | #ClamAV 杀毒软件 |
LuCI ---> Applications | luci-app-commands | #Shell 命令模块 |
LuCI ---> Applications | luci-app-cshark | #CloudShark 捕获工具 |
LuCI ---> Applications | luci-app-ddns | # 动态域名 DNS(集成阿里 DDNS 客户端) |
LuCI ---> Applications | luci-app-diag-core | #core 诊断工具 |
LuCI ---> Applications | luci-app-dnscrypt-proxy | #DNSCrypt 解决 DNS 污染 |
LuCI ---> Applications | luci-app-dnsforwarder | #DNSForwarder 防 DNS 污染 |
LuCI ---> Applications | luci-app-dnspod | #DNSPod |
LuCI ---> Applications | luci-app-docker | #Docker 容器 * |
LuCI ---> Applications | luci-app-dump1090 | # 民航无线频率(不确定) |
LuCI ---> Applications | luci-app-dynapoint | #DynaPoint(未知) |
LuCI ---> Applications | luci-app-e2guardian | #Web 内容过滤器 |
LuCI ---> Applications | luci-app-familycloud | # 家庭云盘 |
LuCI ---> Applications | luci-app-filetransfer | # 文件传输(可 web 安装 ipk 包) |
LuCI ---> Applications | luci-app-firewall | # 添加防火墙 |
LuCI ---> Applications | luci-app-flowoffload | #Turbo ACC 网络加速(集成 FLOW,BBR,NAT,DNS... |
LuCI ---> Applications | luci-app-freifunk-diagnostics | #freifunk 组件 诊断(未知) |
LuCI ---> Applications | luci-app-freifunk-policyrouting | #freifunk 组件 策略路由(未知) |
LuCI ---> Applications | luci-app-freifunk-widgets | #freifunk 组件 索引(未知) |
LuCI ---> Applications | luci-app-frpc | # 内网穿透 Frp |
LuCI ---> Applications | luci-app-fwknopd | #Firewall Knock Operator 服务器 |
LuCI ---> Applications | luci-app-guest-wifi | #WiFi 访客网络 |
LuCI ---> Applications | luci-app-gfwlist | #GFW 域名列表(已弃) |
LuCI ---> Applications | luci-app-haproxy-tcp | #HAProxy 负载均衡 - TCP |
LuCI ---> Applications | luci-app-hd-idle | # 硬盘休眠 |
LuCI ---> Applications | luci-app-hnet | #Homenet Status 家庭网络控制协议 |
LuCI ---> Applications | luci-app-ipsec-virtual**d | #virtual** 服务器 IPSec |
LuCI ---> Applications | luci-app-kodexplorer | #KOD 可道云私人网盘 |
LuCI ---> Applications | luci-app-kooldns | #virtual** 服务器 ddns 替代方案(已弃) |
LuCI ---> Applications | luci-app-koolproxy | #KP 去广告(已弃) |
LuCI ---> Applications | luci-app-lxc | #LXC 容器管理 |
LuCI ---> Applications | luci-app-meshwizard | #网络设置向导 |
LuCI ---> Applications | luci-app-minidlna | # 完全兼容 DLNA / UPnP-AV 客户端的服务器软件 |
LuCI ---> Applications | luci-app-mjpg-streamer | # 兼容 Linux-UVC 的摄像头程序 |
LuCI ---> Applications | luci-app-mtwifi | #MTWiFi 驱动的支持 * |
LuCI ---> Applications | luci-app-mmc-over-gpio | # 添加 SD 卡操作界面(已弃) |
LuCI ---> Applications | luci-app-multiwan | # 多拨虚拟网卡(已弃,移至 syncdial) |
LuCI ---> Applications | luci-app-mwan | #MWAN 负载均衡(已弃) |
LuCI ---> Applications | luci-app-mwan3 | #MWAN3 负载均衡 |
LuCI ---> Applications | luci-app-mwan3helper | #MWAN3 分流助手 |
LuCI ---> Applications | luci-app-n2n_v2 | #N2N 内网穿透 N2N v2 virtual** 服务 |
LuCI ---> Applications | luci-app-netdata | #Netdata 实时监控(图表) * |
LuCI ---> Applications | luci-app-nft-qos | #QOS 流控 Nftables 版 |
LuCI ---> Applications | luci-app-ngrokc | #Ngrok 内网穿透(已弃) |
LuCI ---> Applications | luci-app-nlbwmon | # 网络带宽监视器 |
LuCI ---> Applications | luci-app-noddos | #NodDOS Clients 阻止 DDoS 攻击 |
LuCI ---> Applications | luci-app-nps | # 内网穿透 nps * |
LuCI ---> Applications | luci-app-ntpc | #NTP 时间同步服务器 |
LuCI ---> Applications | luci-app-ocserv | #OpenConnect virtual** 服务 |
LuCI ---> Applications | luci-app-olsr | #OLSR 配置和状态模块 |
LuCI ---> Applications | luci-app-olsr-services | #OLSR 服务器 |
LuCI ---> Applications | luci-app-olsr-viz | #OLSR 可视化 |
LuCI ---> Applications | luci-app-openvirtual** | #Openvirtual** 客户端 |
LuCI ---> Applications | luci-app-openvirtual**-server | # 易于使用的 Openvirtual** 服务器 Web-UI |
LuCI ---> Applications | luci-app-oscam | #OSCAM 服务器(已弃) |
LuCI ---> Applications | luci-app-p910nd | # 打印服务器模块 |
LuCI ---> Applications | luci-app-pagekitec | #Pagekite 内网穿透客户端 |
LuCI ---> Applications | luci-app-polipo | #Polipo 代理 (是一个小型且快速的网页缓存代理) |
LuCI ---> Applications | luci-app-pppoe-relay | #PPPoE NAT 穿透 点对点协议(PPP) |
LuCI ---> Applications | luci-app-p p t p-server | #virtual** 服务器 p p t p |
LuCI ---> Applications | luci-app-privoxy | #Privoxy 网络代理 (带过滤无缓存) |
LuCI ---> Applications | luci-app-qbittorrent | #BT 下载工具(qBittorrent) |
LuCI ---> Applications | luci-app-qos | # 流量服务质量 (QoS) 流控 |
LuCI ---> Applications | luci-app-radicale | #CalDAV/CardDAV 同步工具 |
LuCI ---> Applications | luci-app-ramfree | # 释放内存 |
LuCI ---> Applications | luci-app-rp-pppoe-server | #Roaring Penguin PPPoE Server 服务器 |
LuCI ---> Applications | luci-app-samba | # 网络共享(Samba) |
LuCI ---> Applications | luci-app-samba4 | # 网络共享(Samba4) |
LuCI ---> Applications | luci-app-sfe | #Turbo ACC 网络加速(已弃,移至 flowoffload) |
LuCI ---> Applications | luci-app-s-s | #SS 兲朝上网(已弃) |
LuCI ---> Applications | luci-app-s-s-libes | #SS-libev 服务端 |
LuCI ---> Applications | luci-app-shairplay | # 支持 AirPlay 功能 |
LuCI ---> Applications | luci-app-siitwizard | #SIIT 配置向导 SIIT-Wizzard |
LuCI ---> Applications | luci-app-simple-adblock | # 简单的广告拦截 |
LuCI ---> Applications | luci-app-softethervirtual** | #SoftEther virtual** 服务器 NAT 穿透 * |
LuCI ---> Applications | luci-app-splash | #Client-Splash 是无线 MESH 网络的一个热点认证系统 |
LuCI ---> Applications | luci-app-sqm | # 流量智能队列管理(QOS) |
LuCI ---> Applications | luci-app-squid | #Squid 代理服务器 |
LuCI ---> Applications | luci-app - 乳酸菌饮料 - plus | # 乳酸菌饮料兲朝上网 Plus+ |
LuCI ---> Applications | luci-app - 乳酸菌饮料 - plus ---> Include s-s New Versiong | # 新 SS 代理 |
LuCI ---> Applications | luci-app - 乳酸菌饮料 - plus ---> Include v2 瑞 | #v2 瑞透明代理 |
LuCI ---> Applications | luci-app - 乳酸菌饮料 - plus ---> Include Trojan | #Trojan 代理 * |
LuCI ---> Applications | luci-app - 乳酸菌饮料 - plus ---> Include Kcptun | #Kcptun 代理 |
LuCI ---> Applications | luci-app - 乳酸菌饮料 - plus ---> Include 违禁软件 Server | # 乳酸菌饮料服务器 |
LuCI ---> Applications | luci-app - 乳酸菌饮料 - plus ---> Include 违禁软件 Socks and Tunnel | # 乳酸菌饮料代理 |
LuCI ---> Applications | luci-app - 乳酸菌饮料 - pro | # 乳酸菌饮料 - Pro(已弃) |
LuCI ---> Applications | luci-app - 乳酸菌饮料 server-python | # 违禁软件 Python 服务器 |
LuCI ---> Applications | luci-app-statistics | # 流量监控工具 |
LuCI ---> Applications | luci-app-syncdial | # 多拨虚拟网卡(原 macvlan) |
LuCI ---> Applications | luci-app-tinyproxy | #Tinyproxy 是 HTTP (S) 代理服务器 |
LuCI ---> Applications | luci-app-transmission | #BT 下载工具 |
LuCI ---> Applications | luci-app-travelmate | # 旅行路由器 |
LuCI ---> Applications | luci-app-ttyd | # 网页终端命令行 |
LuCI ---> Applications | luci-app-udpxy | #udpxy 做组播服务器 |
LuCI ---> Applications | luci-app-uhttpd | #uHTTPd Web 服务器 |
LuCI ---> Applications | luci-app-unblockmusic | # 解锁网易云灰色歌曲 |
LuCI ---> Applications | luci-app-unbound | #Unbound DNS 解析器 |
LuCI ---> Applications | luci-app-upnp | # 通用即插即用 UPnP(端口自动转发) |
LuCI ---> Applications | luci-app-usb-printer | #USB 打印服务器 |
LuCI ---> Applications | luci-app-v2 瑞 - server | #v2 瑞 服务器 |
LuCI ---> Applications | luci-app-v2 瑞 - pro | #v2 瑞透明代理(已弃,集成乳酸菌饮料) |
LuCI ---> Applications | luci-app-verysync | # 微力同步 * |
LuCI ---> Applications | luci-app-vlmcsd | #KMS 服务器设置 |
LuCI ---> Applications | luci-app-vnstat | #vnStat 网络监控(图表) |
LuCI ---> Applications | luci-app-virtual**bypass | #virtual** BypassWebUI 绕过 virtual** 设置 |
LuCI ---> Applications | luci-app-vsftpd | #FTP 服务器 |
LuCI ---> Applications | luci-app-watchcat | # 断网检测功能与定时重启 |
LuCI ---> Applications | luci-app-webadmin | #Web 管理页面设置 |
LuCI ---> Applications | luci-app-webshell | # 网页命令行终端(已弃) |
LuCI ---> Applications | luci-app-wifischedule | #WiFi 计划 |
LuCI ---> Applications | luci-app-wireguard | #virtual** 服务器 WireGuard 状态 |
LuCI ---> Applications | luci-app-wirele 违禁软件 egdb | #WiFi 无线 |
LuCI ---> Applications | luci-app-wol | #WOL 网络唤醒 |
LuCI ---> Applications | luci-app-wrtbwmon | # 实时流量监测 |
LuCI ---> Applications | luci-app-xlnetacc | # 迅雷快鸟 |
LuCI ---> Applications | luci-app-zerotier | #ZeroTier 内网穿透 |
支持 iPv6:
1、Extra packages ---> ipv6helper
(选定这个后下面几项自动选择了)
Network ---> odhcp6c
Network ---> odhcpd-ipv6only
LuCI ---> Protocols ---> luci-proto-ipv6
LuCI ---> Protocols ---> luci-proto-ppp
2、打开适用于 VMware 的 VM ToolsUtilities
---> open-vm-tools
How To Install gcc-8 Only on Ubuntu 18.04
https://devicetests.com/install-gcc-8-ubuntu-18-04
https://askubuntu.com/questions/1028601/install-gcc-8-only-on-ubuntu-18-04
Prerequisites
Before starting, ensure that you have a functioning Ubuntu 18.04 system. You should also have superuser (sudo) privileges.
Step 1: Update Your System
Before installing any new software, it’s a good practice to update your system’s package list. Run the following command in your terminal:
sudo apt-get update
This command fetches the latest list of packages from the repositories.
Step 2: Install gcc-8 and g++-8
The next step is to install gcc-8
and its companion g++-8
. Run the following command:
sudo apt-get install gcc-8 g++-8
This command installs both gcc-8
and g++-8
on your system. gcc
is the GNU Compiler Collection, and g++
is the compiler for the C++ programming language.
Step 3: Configure gcc-8 as the Default Compiler
After installing gcc-8
, you need to configure it as the default compiler. This is where update-alternatives
comes in. The update-alternatives
command creates, removes, maintains, and displays information about the symbolic links comprising the Debian alternatives system.
Use the following commands:
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-7 700 --slave /usr/bin/g++ g++ /usr/bin/g++-7
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-8 800 --slave /usr/bin/g++ g++ /usr/bin/g++-8
The --install
option is used to add alternatives to the system. /usr/bin/gcc
is the master link. gcc
is the name of its symlink. /usr/bin/gcc-7
and /usr/bin/gcc-8
are the alternatives being introduced for the master link. The numbers 700
and 800
are the priorities of the alternatives. Higher numbers have higher priority.
The --slave
option is used to link a group of related alternatives such that when the master is changed, the slave is also changed. /usr/bin/g++
is the slave link, and /usr/bin/g++-7
and /usr/bin/g++-8
are the alternatives for the slave link.
Step 4: Verify the Installation
To verify that gcc-8
is the default version, use the following command:
gcc --version
This command displays the version of gcc that is currently being used by your system. If the installation was successful, it should display gcc-8
.
Step 5: Change the Default gcc Version (Optional)
If you want to switch to a different gcc version in the future, use the following command:
sudo update-alternatives --config gcc
This command will display a prompt where you can select the gcc version you want to use.
Conclusion
By following these steps, you can successfully install and configure gcc-8
as the default gcc version on Ubuntu 18.04. This will enable you to compile and run your programs using gcc-8
.
============= End