openWrt从源码下载到编译(开发环境搭建)

2023-05-16

更新:最近openwrt  SVN失效了,不过官方有新的教程

https://wiki.openwrt.org/zh-cn/doc/howto/buildroot.exigence

OpenWrt编译系统 – 安装

OpenWrt build system是OpenWrt这个Linux发行版的编译程序。OpenWrt build system 能够在Linux、BSD或者Mac OS X系统上正常工作。但是请注意你必须使用一个对大小写敏感的文件系统。

我们建议您使用一个Linux发行版(例如:Debian)。您可以选择在您的电脑上单独安装一个,或者安装在虚拟机当中。(例如VMware或者Qemu).

Cygwin(Windows)将不会被支持,因为它缺少一个对大小写敏感的文件系统。

旧的Buildroot版本的相关信息请参见: buildroot.exigence.old

:!: 常见问题、性能信息以及一些常见优化请参见: development

环境要求

编译一个可以安装的OpenWrt固件镜像文件(大约8MB大小的),你需要:

  • 一个纯净的OpenWrt编译系统大约需要200MB的空间。
  • 一个包含feeds的OpenWrt编译系统大约需要300MB的空间。
  • 编译feeds中的软件包大约需要2.1GB的空间用于存放下载来的源代码。
  • 构建OpenWrt并生成固件文件需要大约3-4 GB的空间。
  • 编译OpenWrt需要大约1-4 GB的内存。
wip

在Linux上的安装步骤

→在~BSD上的安装步骤 →在Mac OS X上的安装步骤


1. 请使用一个非root用户来完成这些工作!
2. 这里的所有命令都在OpenWrt编译系统的根目录下运行(例如~/openwrt/trunk/
3. 编译系统的绝对路径中不能含有空格!
4. 如果你使用root用户下载了源码,请把你下载来的源码的所有者更改为一个非root用户。(sudo chown -R user:user /openwrt/)
  1. 安装 git以下载OpenWrt源码。安装 编译工具以进行交叉编译:
    
    sudo apt-get update
    sudo apt-get install git-core build-essential libssl-dev libncurses5-dev unzip  
    feeds中的部分软件包可能只能通过 subversion (缩写:  svn)或者 mercurial下载源代码。如果你需要安装这些软件包,你同时也应当安装svn和mercurial:
    
    sudo apt-get install subversion mercurial  
    • 关于编译环境的详细信息请参见: make和 build-essential
    • 关于git的详细信息请参见: git(7)
    • 关于subversion tool的详细信息请参见: svn和 subversion documentation (multiple languages)
  2. 通过 git来下载OpenWrt bleeding edge(trunk版本):( 参见Downloading Sources以获得更多选择):
    
    git clone git://git.openwrt.org/openwrt.git  
    这将会创建'openwrt'这个目录。这个目录将会是OpenWrt的编译主目录。
    OpenWrt的交叉编译工具链也已经被包含在内。
  3. ( 可选)下载并安装所有可用的"feeds"( 参见OpenWrt Feeds以获取更多选择):
    
    cd openwrt
    ./scripts/feeds update -a
    ./scripts/feeds install -a  
  4. 运行下面的命令让OpenWrt编译系统检查你的编译环境中缺失的软件包:
    
    make defconfig
    make prereq
    make menuconfig  
    在这里你讲可以选择你想要编译的软件包。
  5. 然后你就可以开始编译了。参见: build

各操作系统及编译条件对照表

下表所示为linux操作系统各发行版所需要的编译环境条件及软件包对照表:

名称 Debian SUSE Red Hat OS X (via MacPorts) Fedora NetBSD Arch Gentoo
asciidoc asciidoc asciidoc asciidoc asciidoc asciidoc ? asciidoc app-text/asciidoc
GNU Bash bash bash bash bash bash bash bash app-shells/bash
GNU bc bc bc     bc   bc sys-devel/bc
GNU Binutils binutils binutils binutils binutils binutils ? binutils sys-devel/binutils
bzip2 bzip2 bzip2 bzip2 bzip2 bzip2 ? bzip2 app-arch/bzip2
fastjar fastjar fastjar libgcj fastjar libgcj ? fastjar app-arch/fastjar
flex flex flex flex flex flex ? flex sys-devel/flex
git git-core git-core git git-core git ? git dev-vcs/git
GNU C++ Compiler g gcc-c ? gcc sys-devel/gcc      
GNU C Compiler gcc gcc gcc ? gcc ? gcc sys-devel/gcc
getopt util-linux util-linux util-linux getopt util-linux getopt util-linux sys-apps/util-linux
GNU awk gawk gawk gawk gawk gawk ? gawk sys-apps/gawk
gtk2.0-dev libgtk2.0-dev gtk2-devel gtk2-devel gtk2 gtk2-devel ? gtk2 x11-libs/gtk+:2
intltool-update intltool intltool intltool intltool intltool ? intltool dev-util/intltool
jikes jikespg jikes ? jikes ? aur/jikes dev-java/jikes
libz, libz-dev zlib1g-dev zlib-devel zlib-devel zlib zlib-devel ? zlib sys-libs/zlib
Mercurial / hg   mercurial     hg     dev-vcs/mercurial
make make make make gmake make gmake make sys-devel/make
mkisofs genisoimage genisoimage ? ? genisoimage ? cdrkit virtual/cdrtools
ncurses libncurses5-dev ncurses-devel ncurses-devel ncurses ncurses-devel ? ncurses sys-libs/ncurses
openssl/ssl.h libssl-dev libopenssl-devel openssl-devel openssl openssl-devel ? openssl dev-libs/openssl
patch patch patch patch patchutils patch ? patch sys-devel/patch
perl-ExtUtils-MakeMaker perl-modules perl-ExtUtils-MakeMaker perl-ExtUtils-MakeMaker p5-extutils-makemaker perl-ExtUtils-MakeMaker ? perl-extutils-makemaker virtual/perl-ExtUtils-MakeMaker
python2.6-dev python2.6-dev python-devel ? python26 python-devel ? python2 dev-lang/python:2.6
rsync rsync rsync rsync rsync rsync ? rsync net-misc/rsync
ruby ruby ruby ? ruby ruby ? ruby dev-lang/ruby
sdcc sdcc sdcc sdcc sdcc sdcc ? sdcc dev-embedded/sdcc
unzip unzip unzip unzip unzip unzip ? unzip app-arch/unzip
GNU Wget wget wget wget wget wget ? wget net-misc/wget
xgettext gettext gettext-tools gettext gettext gettext ? gettext sys-devel/gettext
xsltproc xsltproc libxslt-tools ? libxslt libxslt ? libxslt dev-libs/libxslt
zlib, zlib-static zlib1g-dev zlib-devel zlib-devel zlib-devel zlib-devel,zlib-static ? zlib sys-libs/zlib

但是,make config并不会检查所有软件包,比如:

Package Prerequisite Debian (8) SUSE Red Hat OSX Fedora NetBSD Arch Gentoo
boost bjam / boost-jam libboost1.55-dev       boost-jam boost dev-util/boost-build
intltool [Perl] XML::Parser libxml-parser-perl   perl-XML-Parser   perl-XML-Parser   intltool dev-perl/XML-Parser
libftdi libusb-config libusb-dev       libusb-devel   libusb dev-libs/libusb-compat
lilo as86,ld86 bin86       dev86   bin86 sys-devel/bin86
lilo bcc bcc       dev86   aur/bcc sys-devel/dev86
lilo uudecode sharutils       sharutils   sharutils app-arch/sharutils
classpath javac, gcj openjdk-7-jdk       java-1.7.0-openjdk-devel   jdk7-openjdk dev-java/oracle-jdk-bin, sys-devel/gcc[gcj], and one (or both) of dev-java/icedtea-bin:7 and dev-java/icedtea:7
mac80211 b43-fwcutter         b43-fwcutter   b43-fwcutter net-wireless/b43-fwcutter
jamvm zip         zip     app-arch/zip

安装编译所需软件包的例子

  • Arch Linux
    
    pacman -S --needed subversion asciidoc bash bc binutils bzip2 fastjar flex git gcc util-linux gawk intltool zlib make cdrkit ncurses openssl patch perl-extutils-makemaker rsync sdcc unzip wget gettext libxslt boost libusb bin86 sharutils b43-fwcutter findutils  
  • Debian 7 Wheezy:
    
    apt-get install libncurses5-dev zlib1g-dev gawk  
  • Fedora 22 - 64Bit :
    
    dnf install -y subversion binutils bzip2 gcc gcc-c++ gawk gettext flex ncurses-devel zlib-devel zlib-static make patch unzip perl-ExtUtils-MakeMaker glibc glibc-devel glibc-static quilt sed sdcc intltool sharutils bison wget openssl-devel  
  • openSUSE 13.2
    
    zypper install asciidoc bash bc binutils bzip2 fastjar flex git-core gcc-c++ gcc util-linux gawk gtk2-devel intltool jikes zlib-devel mercurial make genisoimage ncurses-devel libopenssl-devel patch perl-ExtUtils-MakeMaker python-devel rsync ruby sdcc unzip wget gettext-tools libxslt-tools zlib-devel subversion  
  • Ubuntu 12.04LTS:
    
    sudo apt-get install build-essential subversion git-core libncurses5-dev zlib1g-dev gawk flex quilt libssl-dev xsltproc libxml-parser-perl mercurial bzr ecj cvs unzip  
  • Ubuntu 64bit:
    
    sudo apt-get install build-essential subversion libncurses5-dev zlib1g-dev gawk gcc-multilib flex git-core gettext libssl-dev  
  • Centos x86-64:
    
    yum install subversion binutils bzip2 gcc gcc-c++ gawk gettext flex ncurses-devel zlib-devel make patch unzip perl-ExtUtils-MakeMaker  glibc glibc-devel glibc-static quilt ncurses-lib sed sdcc intltool sharutils bison wget git-core openssl-devel xz  
  • Gentoo:
    
    $ echo \
        app-arch/{bzip2,fastjar,sharutils,unzip,zip} \
        app-text/asciidoc dev-java/{icedtea:7,jikes,oracle-jdk-bin} \
        dev-libs/{libusb-compat,libxslt,openssl} dev-util/intltool \
        dev-vcs/{git,mercurial} net-misc/{rsync,wget} \
        net-wireless/b43-fwcutter sys-apps/{gawk,util-linux} \
        sys-devel/{bc,bin86,binutils,dev86,flex,gcc[gcj],gettext} \
        sys-libs/{ncurses,zlib} virtual/{cdrtools,perl-ExtUtils-MakeMaker} \
        x11-libs/gtk+:2 \
            | sed 's/\s/\n/g' \
                | sort \
                    | sudo tee /etc/portage/sets/openwrt-prerequisites \
                        && sudo emerge -DuvNa '@openwrt-prerequisites'  

已知的不能编译OpenWrt的Linux发行版

  • alpine linux使用musl作为libc的替代品。一些工具无法被编译通过。(例如mtd-utils, e2fsprogs)也许相关的检测代码需要被重写。(gcc -dumpmachine outputs a result where some scripts will fail - tools/sed)

下载源代码的更多选择

GIT

使用以下命令之一可以通过git下载一份你想要的源码:

trunk (主开发分支)

开发版的源码 (trunk)包括了文档以及实验性的 补丁

从官方源下载


git clone git://git.openwrt.org/openwrt.git  

更多额外的软件包在feeds中提供。(例如Luci, packages, routing, management等feed源)。请使用OpenWrt编译系统下载正确的feed源。

15.05分支(Chaos Calmer)

从官方源下载


git clone git://git.openwrt.org/15.05/openwrt.git  

14.07分支(Barrier Breaker)

从官方源下载


git clone git://git.openwrt.org/14.07/openwrt.git  

12.09分支(Attitude Adjustment)

从官方源下载


git clone git://git.openwrt.org/12.09/openwrt.git  

额外的软件包


git clone git://git.openwrt.org/12.09/packages.git  

SVN

参见:Deprecated Buildroot-Installation Howto

:!: 连接我们的SVN服务器可能会导致你的IP被SVN服务器以及我们的论坛禁止访问。与Git相比,使用SVN检出一份完整的代码将会用时更久。OpenWrt开发者建议你们使用Git下载源代码。

--------------------------------------------------------------------------------------------------

以下是旧方法

1、安装编译环境

编译环境安装在ubuntu上,虚拟机或真实系统都可。

root@lhc-vm:mkdir /work
root@lhc-vm:/work# apt-get install subversion build-essential libncurses5-dev zlib1g-dev gawk git ccache gettext libssl-dev xsltproc 

源代码的说明中提到需要安装的包有:
gcc, binutils, bzip2, flex, python, perl, make, grep,  unzip, gawk,  subversion,  openssl-devel

2、下载源码

在 Openwrt 的官方网站 https://openwrt.org 上可以看到目前的最新稳定版为BarrierBreaker 14.07,在自己的虚拟机Ubuntu 系统中创建一个工作目录 

root@zjh-vm:/home/work# mkdir openwrt 


最近貌似SVN下载不好使了,我们还可以用git下载源码,从这里获取不同版本的克隆地址。https://dev.openwrt.org/wiki/GetSource

然后

#git clone git://git.openwrt.org/15.05/openwrt.git

这样就可以代替后面SVN的步骤。


然后使用 svn工具下载最新稳定版的源代码,下载完成后,进入 barrier_breaker目录 

root@zjh-vm:/home/work# cd openwrt 
root@zjh-vm:/home/work/openwrt# svn co svn://svn.openwrt.org/openwrt/branches/barrier_breaker 
root@zjh-vm:/home/work/openwrt# cd barrier_breaker/ 


首先可以执行make help查看一些帮助 

root@zjh-vm:/home/work/openwrt/barrier_breaker# make help 


This is the buildsystem for the OpenWrt Linux distribution. 
 
Please use "make menuconfig" to configure your appreciated 
configuration for the toolchain and firmware. 
 
You need to have installed gcc, binutils, bzip2, flex, python, perl, make, 
find, grep, diff, unzip, gawk, getopt, subversion, libz-dev and libc headers. 
 
Run "./scripts/feeds update -a" to get all the latest package definitions 
defined in feeds.conf / feeds.conf.default respectively 
and "./scripts/feeds install -a" to install symlinks of all of them into 
package/feeds/. 
 
Use "make menuconfig" to configure your image. 
 
Simply running "make" will build your firmware. 
It will download all sources, build the cross-compile toolchain,   
the kernel and all choosen applications. 
 
You can use "scripts/flashing/flash.sh" for remotely updating your embedded 
system via tftp. 
 
The OpenWrt system is documented in docs/. You will need a LaTeX distribution 
and the tex4ht package to build the documentation. Type "make -C docs/" to build it. 
 
To build your own firmware you need to have access to a Linux, BSD or MacOSX system 
(case-sensitive filesystem required). Cygwin will not be supported because of 
the lack of case sensitiveness in the file system. 
 
 
Sunshine! 
  Your OpenWrt Project 
  http://openwrt.org 

执行svn info查看当前下载的源码的修订版本 

root@zjh-vm:/home/work/openwrt/barrier_breaker# svn info 


Path: . 
Working Copy Root Path: /home/work/openwrt/barrier_breaker 
URL: svn://svn.openwrt.org/openwrt/branches/barrier_breaker 
Relative URL: ^/branches/barrier_breaker 
Repository Root: svn://svn.openwrt.org/openwrt 
Repository UUID: 3c298f89-4303-0410-b956-a3cf2f4a3e73 
Revision: 43660 
Node Kind: directory 
Schedule: normal 
Last Changed Author: nbd 
Last Changed Rev: 43618 
Last Changed Date: 2014-12-11 22:39:40 +0800 (四, 11 12 月  2014) 

Openwrt会经常更新源码,可以执行 svn update 更新已下载的源码 

root@zjh-vm:/home/work/openwrt/barrier_breaker# svn update 


Updating '.': 
Restored '.gitignore' 
U        target/linux/generic/patches-3.10/645-bridge_multicast_to_unicast.patch 
U        target/linux/generic/patches-3.10/644-bridge_optimize_netfilter_hooks.patch 
……………………………… 
U        tools/firmware-utils/src/mktplinkfw.c 
U        toolchain/Makefile 
Updated to revision 44071. 

更新Feeds 

root@zjh-vm:/home/work/openwrt/barrier_breaker# ./scripts/feeds update -a 


Updating feed 'packages' from 'https://github.com/openwrt/packages.git;for-14.07' ... 
remote: Counting objects: 123, done. 
remote: Compressing objects: 100% (76/76), done. 
remote: Total 123 (delta 70), reused 92 (delta 39) 
Receiving objects: 100% (123/123), 13.89 KiB | 0 bytes/s, done. 

Resolving deltas: 100% (70/70), completed with 19 local objects. 

From https://github.com/openwrt/packages 
    ad7c25a..71719eb    for-14.07    -> origin/for-14.07 
Updating ad7c25a..71719eb 

使下载的软件包可以出现在make menuconfig配置菜单中 

root@zjh-vm:/home/work/openwrt/barrier_breaker# ./scripts/feeds install <PACKAGENAME> 


 
或者 
root@zjh-vm:/home/work/openwrt/barrier_breaker# ./scripts/feeds install –a 


 
注意:./scripts/feeds 这个脚本只是使软件包可以出现在 make menuconfig 配置菜单中,而并不是真正的安装或者编译
软件。 

3、配置

Openwrt默认不允许使用root用户操作,若要使用root用户操作可以修改 include/prereq-build.mk这个文件 

root@zjh-vm:/home/work/openwrt/barrier_breaker# vi include/prereq-build.mk 


define Require/non-root 
  [ "$$(shell whoami)" != "root" ] 
endef 
$(eval $(call Require,non-root, \ 
  Please do not compile as root. \ 
)) 


这里首先定义了一段检查root用户的代码,然后通过 call函数调用这段代码。我们把调用部分屏蔽即可使用root用户
编译。 将如上内容改为如下内容保存。
define Require/non-root 
  [ "$$(shell whoami)" != "root" ] 
endef 
#$(eval $(call Require,non-root, \ 
  Please do not compile as root. \ 
)) 


注:最新的版本已经取消这个限制了。 

执行make menuconfig打开配置菜单 

root@zjh-vm:/home/work/openwrt/barrier_breaker# make menuconfig 



每个选项前面都有一个[ ]标签,我们可以选择 y,m和n 
  选择 y设置为<*>,表示将软件包编译进固件image 文件; 
  选择 m 设置为<M>,表示软件包会被编译,但不会编译进固件 image 文件。Openwrt 会把设置为 M选项的软件包编译后再制作成一个以 ipk为后缀(.ipk)的文件,然后在设备上通过 opkg 来安装到设
  选择 n 设置为<>,表示不编译该软件包。 
 
配置主要包括4 个部分 
  Target system(目标系统) 
  Package selection(软件包选择) 
  Build system settings(编译系统设置) 
  Kernel modules(内核模块配置) 

我们这里先简单配置一下,具体的以后再讲。 
首先配置目标系统,根据自己的设备选择 SOC 类型,我使用的设备使用是 RT5350,是 Ralink 公司的 SOC,8MB  Flash,32MB SDRAM,从http://wiki.openwrt.org/toh/hame/mpr-a2 这个地址得知我们的设备是openwrt支持的设备


因此Target System 配置如下

 

Target Profile 对应上面列表的mpr-a2 
 
当配置完成并保存配置后,openwrt将根据你的配置创建一个配置文件.config 

4、编译

可以直接执行 make 进行编译 

root@zjh-vm:/home/work/openwrt/barrier_breaker# make 


 
添加make 编译选项 
root@zjh-vm:/home/work/openwrt/barrier_breaker# make -j 3 V=s 


-j:多进程编译,这样编译快些。-j指定的参数一般为你的 CPU核数+1,比如双核CPU就指定为3 V=s:输出编译的详细信息,这样编译出错时,我们才知道错在哪里 
 
编译成功后,会在bin目录下生成固件文件 

其中的 openwrt-ramips-rt305x-mpr-a2-squashfs-sysupgrade.bin就是用来烧写到设备的固件。 

5 、清理工程 

root@zjh-vm:/home/work/openwrt/barrier_breaker# make clean 


删除/home/work/openwrt/barrier_breaker/bin和/ home/work/openwrt/barrier_breaker/ build_dir 这2 个目录 
 
root@zjh-vm:/home/work/openwrt/barrier_breaker# make dirclean 


删除/home/work/openwrt/barrier_breaker/bin、/ home/work/openwrt/barrier_breaker/ build_dir、 
/ home/work/openwrt/barrier_breaker/staging_dir、/ home/work/openwrt/barrier_breaker/staging_di r/toolchain和 
/ home/work/openwrt/barrier_breaker/staging_dir 
 
root@zjh-vm:/home/work/openwrt/barrier_breaker# make distclean 


删除所有编译的或者配置的和下载的 feeds内容以及下载的软件包源码,还有.config配置文件。 

6 、编译/清理单个软件包 
以uci这个软件包为例 

root@zjh-vm:/home/work/openwrt/barrier_breaker# make package/system/uci/compile V=s    编译 
root@zjh-vm:/home/work/openwrt/barrier_breaker# make package/system/uci/clean V=s    清理 



本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

openWrt从源码下载到编译(开发环境搭建) 的相关文章

  • selenium常用API介绍

    selenium常用API介绍 文本的清空与提交 br span class token punctuation span find element by id span class token punctuation span span
  • Beego打包部署到Linux

    Beego打包部署到Linux 打包 打开Terminal 定位到工程的 main go 文件夹目录 使用命令 bee pack be GOOS 61 linux 进行打包 打包成Windows 命令 bee pack be GOOS 61
  • MPV快捷键

    mpv keybindings Location of user defined bindings config mpv input conf Lines starting with are comments Use SHARP to as
  • RedHat 服务器离线安装不匹配软件引起的故障及修复

    转自 xff1a 学习日记 https www learndiary com 2022 02 redhat wrong installed package 这里简述一起在 RedHat 6 5 服务器上错误强制离线安装 CentOS 7 x
  • rancher rke环境清理

    如果删除容器失败情况下 xff0c 可以先停止docker再进行清除 bin bash 杀死所有正在运行的容器 docker kill docker ps a q 删除所有容器 docker rm f docker ps qa 删除所有容器
  • 硬盘安装Debian7(Wheezy)以及初级配置

    引子 xff1a 记得本科二年级的时候开始在Redhat Enterprise 5 下折腾嵌入式 xff0c 然后在开源社区的影响下迷恋fedora和它的激进气质 然后的然后 xff0c 逐渐觉得数学和算法才是王道 xff0c 准备在一个机
  • CMake 的常用命令

    目录 0 CMake常用的命令或函数 xff1a 1 定义项目 project 2 多个目录 add subdirectory 3 常用命令 add executable add library 4 常用命令 改变最终目标文件输出位置 5
  • ❤️geoserver集群部署❤️(geoserver、jms集群部署 + redis、tomcat实现session + nginx负载均衡)

    由于条件原因 xff0c 我是在同一台服务器上利用了三个tomcat配置geoserver集群 xff08 多台服务器配置基本上差不多 xff09 为了后面好区分将三个tomcat分别命名为tomcat geo1 xff0c tomcat
  • ISBN从10位升为13位,执行日期为2007年1月1日

    国际标准化组织 ISO 日前发布了新版的国际标准图书编号标准 ISBN 最新发布的ISO 2108 信息和文件 国际标准图书编号 xff0c 规定新的13位数的国际标准图书编号的执行日期为2007年1月1日 国际标准图书编号 标准对全球的图
  • antd 时间类组件的国际化 locale 设置不生效 解决方案汇总

    antd 时间类组件的国际化 locale 设置不生效 xff0c 踩坑之路和解决办法 问题 如图所示 xff0c antd 时间类组件中英文混合显示 xff1a 初始配置代码如下 xff1a span class token keywor
  • 【CCF 201809-3】元素选择器

    思路 处理每一行 xff1a 每一行都处理为一个结构体 xff0c 包含3个属性 xff1a 级别 xff08 rank xff09 元素名称 xff08 element xff09 id名称 级别 61 点的数量 2 元素名称 amp i
  • 无需上架,接入穿山甲广告和广点通广告 sdk

    我们都知道广告是商业流量变现最重要的方式之一 xff0c 所以基本所有的游戏或者app都会接入广告sdk 而我们都知道穿山甲广告sdk和广点通广告sdk是国内收益相对比较高的 xff0c 但是想接入穿山甲广告sdk 你的游戏或者app必须上
  • JavaScript基础之缓存机制:HTML5离线缓存

    浏览器的缓存机制 xff0c 多种多样 xff0c 离线缓存是其中之一 xff0c 这也是为了更好的用户体验 xff0c 性能优化的重要一步 我们来讲讲这个离线缓存 什么是HTML5离线缓存 xff1f 离线缓存 xff08 Applica
  • IDEA 调试部署 Web-INF/classes下面不生成class文件

    IDEA 调试部署 WEB INF classes下面不生成class文件 原因 xff1a 编译版本 1 8 或者其他版本 xff0c 没有设置 异常 xff1a at javax management remote rmi RMICon
  • Macbook 终端Terminal下如何查看文件生成日期和修改日期

    有时候在用vim命令修改配置文件时 xff0c 不确定是否被修改 xff0c 为了与旧版本比较 xff0c 最好查一下文件生成和修改日期 xff0c 方法如下 xff1a span class pln style margin 0px pa
  • 仿微信地图定位列表

    gitbub源代码链接 xff1a https github com MinLee6 LMMapLocationList 首先按照百度配置要求配置开发环境 1 在AppDelegate mm中设置百度定位的key BOOL applicat
  • FreeBSD zfs安装bhyve跑虚拟机

    FreeBSD zfs文件系统下跑bhyve虚拟机 xff0c 使用简单且稳定高效 xff0c 今天新装一个n3450的小主机 xff08 省电 xff09 xff0c 此简单记录下vm bhyve工具的使用 1 安装 a xff0c 更改
  • vmware下unbuntu虚拟机网络启动后过几分掉线原因

    我vmware用的是17 01 build 21139696版本 xff0c ubuntu使用的是16 lts版本 xff0c 总是开机或挂起恢复后过一段时间网络就掉线 xff0c 但网络的上下两个箭头符号却是正常的 xff0c 并未显示掉
  • 联想 ubuntu14.04无线网卡被禁用的解决办法

    新人在学习Linux时 xff0c 一般会选择安装ubuntu系统 xff0c 但是很多笔记本都会出现安装系统后无限网卡被禁用的问题 xff0c 这种情况的原因我认为并不是无线网卡的驱动没有安装 xff0c 而是ubuntu系统驱动的某个地
  • 序列切片

    序列切片 切片 切片就是指对操作对象 截取 其中一部分的操作 字符串 列表 元祖 有序序列 都支持切片操作 基本语法 顾头不顾尾 序列名称 span class token punctuation span 开始位置下标 span clas

随机推荐

  • 阿里云领取免费2H2G云服务器&证书分享(一):Apsara Clouder云计算专项技能认证:云服务器ECS入门

    这个证书是你领服务器一个月内要考的 xff0c 内容也不难 新老用户都能领 xff0c 要求是有学生认证 当然这个证书是独立的 xff0c 你也可以不认证直接考 点击这个链接 阿里云飞天计划 跳转到阿里云飞天计划 领的服务器如果想不到要做什
  • 卷积神经网络的旋转不变性理解

    卷积神经网络本身的设计对旋转不变性没有进行专门的考虑 xff0c 只不过max pooling可以稍微补偿一下这个功能 xff0c 只是角度变化太大 xff0c 可能会作用不大 xff0c 但因为max pooling并不是为此而设计的 x
  • VS code + Win10 Linux子系统(Ubuntu)开发ESP32

    Windows开发ESP32 最近在研究EPS32 xff0c 但是和STM32之类的单片机不同 xff0c 国内资料大多是在arduino上的简单修改 xff0c 想开发底层硬件比较困难 xff1b 而官方提供的eclipse集成环境体积
  • malloc和calloc的区别

    malloc和calloc的区别有两点 xff1a 两个函数的参数不一样 malloc只有1个参数 xff0c 而calloc有两个参数内存分配后初始化不一样 calloc会把分配的内存全部初始化为0 xff0c 而malloc没有初始化操
  • ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock'

    欢迎关注大数据和人工智能技术文章发布的微信公众号 xff1a 清研学堂 xff0c 在这里你可以学到夜白 xff08 作者笔名 xff09 精心整理的笔记 xff0c 让我们每天进步一点点 xff0c 让优秀成为一种习惯 xff01 有时候
  • CSDN完整导出pdf博客内容,去除冗余,仅保留blog

    本文完全参考自其它博客 xff1a 新CSDN文章转成PDF 打印 去空白 IT说的博客 CSDN博客 如何将CSDN的文章导出为pdf xff1f 我的blog屋 CSDN博客 csdn导出pdf 原博客代码执行后还保留了博客作者栏 xf
  • WSL2连接调用USB设备

    声明 xff1a 本文教程来源于微软官网WSL教程 xff0c 链接地址 xff1a Connect USB devices 最近在学OpenCV xff0c 发现微软的WSL是个好东西 xff0c 结合VS Code编辑器 xff0c 无
  • 树莓派使用code-server遇到的问题

    code server在树莓派上使用是没有问题的 xff0c 只要保证树莓派系统较新 xff0c 一般不会遇到什么问题 1 以下一系列出现的问题 xff0c 都与系统环境比较旧有关 xff1a code进程一直100 占用CPU浏览器建立V
  • Mysql插入JSON串会被去一层转义

    Mysql插入JSON串会被去一层转义 问题描述 背景 xff1a 在数据库更新 新增一个字段为JSON串的时候 xff0c 被去一层转义 xff0c 导致程序解析失败 xff0c 报错 原JSON串 span class token pu
  • VS保存并生成解决方案

    一个小技巧 xff0c 提高开发效率 xff0c 使开发更迅速 为您节约更多时间 xff0c 去陪恋人 家人和朋友 背景 xff1a 使用VS工具开发 调试时需要右键项目 xff0c 生成或者重新生成解决方案 而时常大脑高速运作 xff0c
  • mysql分组排序取第一条数据

    需求 xff1a mysql 根据某一个字段分组 xff0c 然后组内排序 xff0c 最后每组取排序后的第一条数据 1 先使用 xff08 分组字段 43 排序字段 xff09 排序 相当于实现了分组和排序 xff0c 只是没有根据分组字
  • 设置 edge 浏览器跨域

    执行下面两条命令 xff0c 然后重启edge span class token string 34 C Program Files x86 Microsoft span class token entity title E span dg
  • 最简单的基于FFmpeg的AVfilter例子(水印叠加)

    61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61
  • FFmpeg源代码简单分析:avio_open2()

    61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61
  • n6005/n5105在debian11实现jellyfin硬解

    n6005 n5105在debian11实现jellyfin硬解 inter集成显卡debian11默认不支持硬解 xff0c 可按以下方式正确开启 1 环境 软件 delbian11 硬件 n6005 docker环境 安装jellyfi
  • ModuleNotFoundError: No module named 'cv2'

    ModuleNotFoundError No module named 39 cv2 39 解决方法 xff1a pip install opencv python
  • C++实现链表逆序

    链表的结构 lt pre name 61 34 code 34 class 61 34 html 34 gt lt pre name 61 34 code 34 class 61 34 cpp 34 gt struct listnode i
  • 初始化我的archlinux

    初始化我的archlinux 进入tty模式 xff0c ctrl 43 alt 43 f12 设置镜像 sudo vim etc pacman conf 开机archlinuxcn manjaro archlinuxcn The Chin
  • C语言实现Split函数

    借助C语言的动态内存分配 xff0c 实现类似VB中Split函数的效果 结构体介绍 xff1a IString xff1a 参数 str 字符串数组的指针 参数 num 字符串个数 函数介绍 功能 xff1a 按一个字符来拆分字符串 参数
  • openWrt从源码下载到编译(开发环境搭建)

    更新 xff1a 最近openwrt SVN失效了 xff0c 不过官方有新的教程 https wiki openwrt org zh cn doc howto buildroot exigence OpenWrt编译系统 安装 OpenW