./scripts/feeds update -a OpenWrt大招系列
./scripts/feeds update -a
Updating feed 'packages' from 'https://github.com/openwrt/packages.git' ...
Initialized empty Git repository in /home/openwrt/trunk/feeds/packages/.git/
remote: Counting objects: 3771, done.
remote: Compressing objects: 100% (3014/3014), done.
remote: Total 3771 (delta 472), reused 3132 (delta 257), pack-reused 0
Receiving objects: 100% (3771/3771), 2.11 MiB | 537 KiB/s, done.
Resolving deltas: 100% (472/472), done.
Create index file './feeds/packages.index'
Collecting package info: done
Collecting target info: done
Updating feed 'luci' from 'https://github.com/openwrt/luci.git' ...
Initialized empty Git repository in /home/openwrt/trunk/feeds/luci/.git/
remote: Counting objects: 11944, done.
remote: Compressing objects: 100% (6342/6342), done.
remote: Total 11944 (delta 3975), reused 10006 (delta 2524), pack-reused 0
Receiving objects: 100% (11944/11944), 8.85 MiB | 1.16 MiB/s, done.
Resolving deltas: 100% (3975/3975), done.
Create index file './feeds/luci.index'
Collecting package info: done
Collecting target info: done
Updating feed 'routing' from 'https://github.com/openwrt-routing/packages.git' . ..
Initialized empty Git repository in /home/openwrt/trunk/feeds/routing/.git/
remote: Counting objects: 484, done.
remote: Compressing objects: 100% (378/378), done.
remote: Total 484 (delta 88), reused 362 (delta 39), pack-reused 0
Receiving objects: 100% (484/484), 260.39 KiB | 185 KiB/s, done.
Resolving deltas: 100% (88/88), done.
Create index file './feeds/routing.index'
Collecting package info: done
Collecting target info: done
Updating feed 'telephony' from 'https://github.com/openwrt/telephony.git' ...
Initialized empty Git repository in /home/openwrt/trunk/feeds/telephony/.git/
remote: Counting objects: 307, done.
remote: Compressing objects: 100% (256/256), done.
remote: Total 307 (delta 71), reused 227 (delta 26), pack-reused 0
Receiving objects: 100% (307/307), 145.64 KiB | 167 KiB/s, done.
Resolving deltas: 100% (71/71), done.
Create index file './feeds/telephony.index'
Collecting package info: done
Collecting target info: done
Updating feed 'management' from 'https://github.com/openwrt-management/packages. git' ...
Initialized empty Git repository in /home/openwrt/trunk/feeds/management/.git/
remote: Counting objects: 39, done.
remote: Compressing objects: 100% (27/27), done.
remote: Total 39 (delta 8), reused 26 (delta 3), pack-reused 0
Unpacking objects: 100% (39/39), done.
Create index file './feeds/management.index'
Collecting package info: done
Collecting target info: done
Updating feed 'targets' from 'https://github.com/openwrt/targets.git' ...
Initialized empty Git repository in /home/openwrt/trunk/feeds/targets/.git/
remote: Counting objects: 137, done.
remote: Compressing objects: 100% (95/95), done.
remote: Total 137 (delta 17), reused 122 (delta 16), pack-reused 0
Receiving objects: 100% (137/137), 130.80 KiB | 66 KiB/s, done.
Resolving deltas: 100% (17/17), done.
Create index file './feeds/targets.index'
Collecting package info: done
Collecting target info: done
./scripts/feeds update packages luci
./scrippts/feeds update -a
Build dependency: Please install the openssl library (with development headers)
for ubuntu
sudo apt-get install lissl
for centos
yum -y install openssl-devel
aaarticlea/png;base64,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" alt="" />
xzcat: command not found
没装xz,解压缩xz格式。
sudo yum -y install xz;
OpenWrt 开发环境搭建--编译调试--
OpenWrt是一个高度模块化、高度自动化的嵌入式linux发行版,其编译和安装过程比普通的linux发行版而言,要简单太多了。如果您是新手,您那恐惧的心大可放到肚子里,呵呵。对于新手来说最麻烦的恐怕是安装开发环境需要的软件了。
最基本条件: ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1.PC一台,性能强点,性能好编译得就快。linux推荐安装ubuntu 8.04中文版(或者suse)和fedora 11(对于初学者而言,最好是装在虚拟机如VM里,可省去很多麻烦。如何在VM里安装linux,您可多google或者baidu)
2.宽带一条,需要速度好点,因为有很多软件包是网络下载后安装。
3.耐心和时间。
编译环境准备(安装linux发行版和软件包): +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1.安装好ubuntu8.04中文版本或者fedora 9或者11,搞定网络连接。
以非root用户登陆,打开“应用程序—-附件—-终端”。如果您已经安装好linux, 那么此步骤请略去。
2.如果您选择ubuntu, 那么ubuntu开发环境需要的软件有
sudo apt-get install gcc g++ binutils patch bzip2 flex bison make autoconf gettext texinfo unzip sharutils subversion libncurses5-dev ncurses-term zlib1g-dev
然后
sudo apt-get update
如您选择安装fedora11或者fedora9
Fedora 11 or 9:
# yum install autoconf binutils bison bzip2 flex gawk gcc gcc-c++ gettext make ncurses-devel patch unzip wget zlib-devel
由于fedora 安装包本来就很全面,所以需另外安装的东西较少。所以一般情况下,推荐安装fedora 11。对于初学者而言,最方便的方法是在VM上安装linux。
由于ubuntu本来就是基于suse, 所以如果您要以suse为开发环境,那么您参考ubuntu的安装步骤即可。
如果你能阅读英文,那么请参考
http://wiki.openwrt.org/doc/howto/buildroot,
OpenWrt英文论坛2006年文章:Building OpenWrt Kamikaze from source
https://forum.openwrt.org/viewtopic.php?id=9180
这里有更详细权威的说明。 1.获取OpenWrt源代码和安装包,更新
svn checkout svn://svn.openwrt.org/openwrt/trunk (开发版本,不稳定,不建议下载) PS:wgethttp://downloads.openwrt.org/backfire/10.03/backfire_10.03_source.tar.bz2(目前稳定版本,建议) 2. 检查配置环境 必须使用非root用户进行操作,添加一个普通用户。(注意:如果使用root进行操作的话,会提示检查失败:Checking 'non-root'... failed.) [root@localhost trunk]# adduser openwrt [root@localhost trunk]# su openwrt 为了防止文件读写权限造成问题,需要将源码copy到openwet的根目录下进行所有操作。 [openwrt@localhost openwrt]$ cd ~ [openwrt@localhost ~]$ cp -r /usr/src/test/trunk ./ [openwrt@localhost ~]$ cd trunk/ [openwrt@localhost trunk]$ ls BSDmakefile LICENSE README feeds.conf.default package scripts toolchain Config.in Makefile docs include rules.mk target tools 3.下载feeds Feeds是OpenWrt环境所需要的软件包套件。最重要的feeds有: ‘packages’一些额外的基础路由器特性软件 ‘LuCI’OpenWrt默认的GUI ‘Xwrt’另一种可选的GUI界面, 需要能够连接互联网。 在下载之前可以通过查看’feeds.conf.default’文件,来检查哪些文件需要包含在环境中。 开始下载,使用: [openwrt@localhost trunk]$ ./scripts/feeds update -a 安装feeds包,只有安装之后,在后面的make menuconfig时,才可以对相关配置进行勾选。 [openwrt@localhost trunk]$ ./scripts/feeds install -a 如果更新了feeds的配置文件,需要添加新的软件包用于生成系统。只需进行重复操作: [openwrt@localhost trunk]$ ./scripts/feeds update -a [openwrt@localhost trunk]$ ./scripts/feeds install -a 4.进行配置 编译过程使用的交叉编译,交叉编译生成的SDK以及image等文件的类型取决于开发环境、应用硬件、以及源码版本。所以要对自己的环境进行了解,才能进行正确的配置。我在配置过程中,就遇到了这个问题,我的硬件是brcm47xx,在第一次编译的时候,选择地是Target System (Broadcom BCM947xx/953xx),最后生成的包无法在router上安装,版本不匹配。第二次安装时,选择了Target System (Broadcom BCM947xx/953xx[2.4]),安装成功,我的板子可能只支持linux2.4的内核。(设备型号是Linksys Wrt54gs v3.0) (2011.05.01添加:其实Linksys Wrt54gs v3.0是支持Linux 2.6版本的,Target System 选择 Broadcom BCM947xx/953xx,编译后也是可以用的,这周末由于项目需要改某个软件,每次修改代码后,都得重新编译一下固件,经过来回编译了十来次,都可以使用。另外。内核版本升级之后,无线驱动改成了mac802.11,而非以前的wl,以为wl.o这个专门的库只在linux2.4中才用到。) [openwrt@localhost trunk]$ make defconfig [openwrt@localhost trunk]$ make prereq [openwrt@localhost trunk]$ make menuconfig 通过文本对话框进行选项配置,最主要的配置项有: Target system(目标系统类型) Package selection(软件包选择) Build system settings (编译系统设置) Kernel modules (内核模块) [*]表示:这个包裹选中编译,并安装在firmware中; [M]表示:这个软件包选中编译,但并不安装在firmware中。 在退出Menuconfig的时,会提示是否保存配置。 在此我只对target system进行了选择;勾选了Advanced configuration option和Build the OpenWrt SDK选项。 5. 编译 (1)一般情况,使用一个简单的命令: [openwrt@localhost trunk]$ make (2)在多核处理器系统上为提高速度,可使用(例如用3核处理器): [openwrt@localhost trunk]$ make –j 3 (3)在后台进行编译,使用空闲的I/O资源和CPU性能,可使用(例如使用双核处理器) [openwrt@localhost trunk]$ onice -c 3 nice -n 20 make -j 2 (4)编译一个单独的软件包(例如在cups软件包): [openwrt@localhost trunk]$ make package/cups/compile V=99 (5)如果特殊原因需要分析编译报错信息: [openwrt@localhost trunk]$ make V=99 2>&1 |tee build.log |grep -i error 说明:将编译的所有输出信息保存在build.log中,将error信息打印在屏幕上。 (6)一个复杂指令的应用 [openwrt@localhost trunk]$ ionice -c 3 nice -n 20 make -j 2 V=99 CONFIG_DEBUG_SECTION_MISMATCH=y 2>&1 \|tee build.log |egrep -i '(warn|error)' 说明:将编译的所有输出信息保存在build.log中,将error和warning信息打印在屏幕上。编译过程使用双核CPU,占用后台资源。 6.生成镜像(Image)位置 新生成的镜像会默认放在新建的一个bin目录下。例如:/bin/brcm-2.4/packages [openwrt@localhost trunk]$ ls bin/* 将编译好的镜像做个备份,例如备份到/目录下: [openwrt@localhost trunk]$ cp bin / 7.清理工作 建议现在清理编译产生的文件,以免下次编译时造成冲突,(文件如果存在的话,将不会被替换),执行make clean 注意:在执行clean命令,确保已经将编译好的image进行了备份。清理工作会清楚bin目录。 [openwrt@localhost trunk]$ make clean 除了清除生成的目录,还想清除交叉编译工具(以及工具链目录) [openwrt@localhost trunk]$ make dirclean 清除所有相关的东西,包括下载的软件包,配置文件,feed内容等:(不建议使用) [openwrt@localhost trunk]$ make distclean 对于更新feeds后出现的错误: ERROR:please fix package/feeds/packages/mc/Makefile 等类似的问题,需要执行这条语句进行系统的清理 更详细的信息建议您参考
http://downloads.openwrt.org/kamikaze/docs/openwrt.html
应该是当前最新最权威的文档 编译过程中需要通过官网下载很多相关的软件包,所以必须保证能够顺利连上外网。由于下载速度的限制,编译过程大概需要数小时。编译结束后,所有的产品都会放在编译根目录下的bin/yourtarget/. 例如:我所编译的产物都放在./bin/brcm47xx/下,其中文件主要有几类:
(1). bin/.trx 文件: 这些都是在我们所选的target-system的类别之下,针对不同路由器型号、版本编译的路由器固件。这些不同路由器的型号和版本是openwrt预先设置好的,我们不需要更改。至于.bin和.trx的区别,一种说法是,第一次刷路由器的时候,需要用.bin文件,如果需要再升级,则不能再使用. bin文件,而需要用.trx文件。原因是,.bin是将路由器的相关配置信息和.trx封装在一起而生成的封包,也就是说是包含路由器版本信息的. trx。在第一次刷固件的时候,我们需要提供这样的信息,而在后续升级时,则不再需要,用.trx文件即可。
(2)packages文件夹: 里面包含了我们在配置文件里设定的所有编译好的软件包。默认情况下,会有默认选择的软件包。
(3) OpenWrt-SDK.**.tar.bz2: 这个也就是我们定制编译好的OpenWRT SDK环境。我们将用这个来进行OpenWrt软件包的开发。例如,我所编译好的SDK环境包为:/bin/brcm47xx/OpenWrt-SDK- brcm47xx-for-Linux-x86_64-gcc-4.3.3+cs_uClibc-0.9.30.1.tar.bz2
可以从名称上看出,target system是brcm47xx,host system是Linux-x86_64,使用的编译工具以及库是4.3.3+cs_uClibc-0.9.30.1。
(4)md5sums 文件: 这个文件记录了所有我们编译好的文件的MD5值,来保证文件的完整性。因为文件的不完整,很容易将路由器变成“砖头”。
需要主要的是,编译完成后,一定要将编译好的bin目录进行备份(如果里面东西对你很重要的话),因为在下次编译之前,执行make clean 会将bin目录下的所有文件给清除掉!!
2、 更改原有packages
在编译根目录下会有一个dl的目录,这个目录其实是“download”的简写,在编译前期,需要从网络下载的数据包都会放在这个目录下,这些软件包的一个特点就是,会自动安装在所编译的固件中,也就是我们make menuconfig的时候,为固件配置的一些软件包。如果我们需要更改这些源码包,只需要将更改好的源码包打包成相同的名字放在这个目录下,然后开始编译即可。编译时,会将软件包解压到build_dir目录下。
当然,你也可以自己在dl里面创建自己的软件包,然后更改相关的配置文件,让openwrt可以识别这个文件包。
由于我的项目更改的内容是底层的,需要跟固件一起安装。所以,我使用的方法就是直接更改dl目录下软件包,然后重新进行固件编译。感觉类似于Linux的内核编译。反复编过十多次,没有任何问题。 第一次编译由于要下载大量的软件包,慢慢的等吧,快则半小时,慢则2,3小时. 如果下载过慢,建议您中断编译过程,然后用迅雷去主动下载,放到./dl目录下。一个加快速度的小技巧: 本站小编已经将将一些常用的软件包打包成dl.tar,放在http://ul.to/2y8a2w, 下载后用tar xvf dl.tar(在windows下用winrar打开即可,然后你用ftp或者samba之类传到Linux PC上),将解包出来的东东直接放到./dl目录下,相必会大大加快初次安装、编译的速度。同样在http://ul.to/fasgus上可下载linux-2.36.30.10.tar.bz2,当然您也可以用迅雷之类的工具来下。 8. 编译好的文件在当前目录的bin文件夹下。
如果是brcm-2.4
ls bin/brcm-2.4/
就可以看到很多熟悉的文件了。 9、 安装OpenWrt 找到对应的固件,进行固件升级。网上方法很多,这里不再赘述。 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 下面我们编写自己的package: 新建自己的packages
对于自己新建的package,而这个package又不需要随固件一起安装,换句话说,就是可以当做一个可选软件包的话。我们可以利用我们的SDK环境来单独编译,编译后会生成一个ipk的文件包。然后利用 opkg install xxx.ipk 来安装这个软件。
下面具体说下,如何编译一个helloword的软件包。
(1)首先,编写helloworld程序
编写helloworld.c
/****************
* Helloworld.c
* The most simplistic C program ever written.
* An epileptic monkey on crack could write this code.
*****************/
#include <stdio.h>
#include <unistd.h>
int main(void)
{
printf("Hell! O' world, why won't my code compile?\n\n");
return 0;
}
编写Makefile文件
# build helloworld executable when user executes "make"
helloworld: helloworld.o
$(CC) $(LDFLAGS) helloworld.o -o helloworld
helloworld.o: helloworld.c
$(CC) $(CFLAGS) -c helloworld.c
# remove object files and executable when user executes "make clean"
clean:
rm *.o helloworld 在这两个文件的目录下,执行make 应该可以生成helloworld的可执行文件。执行helloworld后,能够打印出“Hell! O' world, why won't my code compile?”。
这一步,主要保证我们的源程序是可以正常编译的。下面我们将其移植到OpenWRT上。
(2)将OpenWrt-SDK-brcm47xx-for-Linux-x86_64-gcc-4.3.3+cs_uClibc-0.9.30.1.tar.bz2解压
tar –xvf OpenWrt-SDK-brcm47xx-for-Linux-x86_64-gcc-4.3.3+cs_uClibc-0.9.30.1.tar.bz2
(3)进入SDK
cd OpenWrt-SDK-brcm47xx-for-Linux-x86_64-gcc-4.3.3+cs_uClibc-0.9.30.1
可以看到里面的目录结构跟我们之前source的目录结构基本相同,所需要编译的软件包,需要放置在package目录下
(4)在package目录下创建helloworld目录
cd package
mkdir helloworld
cd helloworld
(5)创建src目录,拷贝 helloworld文件
mkdir src
cp /home/wrt/test/helloworld.c src
cp /home/wrt/test/Makefile src
(6)在helloworld目录下创建Makefile文件
这个Makefile文件是给OpenWRT读的,而之前写的那个Makefile文件是针对helloworld给编译其读的。两个Makefile不在同一层目录下。
touch Makefile
vim Makefile
Makefile文件模板内容如下:
##############################################
# OpenWrt Makefile for helloworld program
#
#
# Most of the variables used here are defined in
# the include directives below. We just need to
# specify a basic description of the package,
# where to build our program, where to find
# the source files, and where to install the
# compiled program on the router.
#
# Be very careful of spacing in this file.
# Indents should be tabs, not spaces, and
# there should be no trailing whitespace in
# lines that are not commented.
#
##############################################
include $(TOPDIR)/rules.mk
# Name and release number of this package
PKG_NAME:=helloworld
PKG_RELEASE:=1 # This specifies the directory where we're going to build the program.
# The root build directory, $(BUILD_DIR), is by default the build_mipsel
# directory in your OpenWrt SDK directory
PKG_BUILD_DIR := $(BUILD_DIR)/$(PKG_NAME) include $(INCLUDE_DIR)/package.mk # Specify package information for this program.
# The variables defined here should be self explanatory.
# If you are running Kamikaze, delete the DESCRIPTION
# variable below and uncomment the Kamikaze define
# directive for the description below
define Package/helloworld
SECTION:=utils
CATEGORY:=Utilities
TITLE:=Helloworld -- prints a snarky message
endef # Uncomment portion below for Kamikaze and delete DESCRIPTION variable above
define Package/helloworld/description
If you can't figure out what this program does, you're probably
brain-dead and need immediate medical attention.
endef # Specify what needs to be done to prepare for building the package.
# In our case, we need to copy the source files to the build directory.
# This is NOT the default. The default uses the PKG_SOURCE_URL and the
# PKG_SOURCE which is not defined here to download the source from the web.
# In order to just build a simple program that we have just written, it is
# much easier to do it this way.
define Build/Prepare
mkdir -p $(PKG_BUILD_DIR)
$(CP) ./src/* $(PKG_BUILD_DIR)/
endef # We do not need to define Build/Configure or Build/Compile directives
# The defaults are appropriate for compiling a simple program such as this one # Specify where and how to install the program. Since we only have one file,
# the helloworld executable, install it by copying it to the /bin directory on
# the router. The $(1) variable represents the root directory on the router running
# OpenWrt. The $(INSTALL_DIR) variable contains a command to prepare the install
# directory if it does not already exist. Likewise $(INSTALL_BIN) contains the
# command to copy the binary file from its current location (in our case the build
# directory) to the install directory.
define Package/helloworld/install
$(INSTALL_DIR) $(1)/bin
$(INSTALL_BIN) $(PKG_BUILD_DIR)/helloworld $(1)/bin/
endef # This line executes the necessary commands to compile our program.
# The above define directives specify all the information needed, but this
# line calls BuildPackage which in turn actually uses this information to
# build a package.
$(eval $(call BuildPackage,helloworld)) (7)返回到SDK的根目录
执行make进行编译
编译过程会在build_dir目录下完成
编译结果会放在 bin/[yourtarget]/package目录下helloworld_1_bcm47xx.ipk
(8)上传helloworld_1_bcm47xx.ipk
使用sftp软件上传helloworld_1_bcm47xx.ipk至路由器
执行 opkg install helloworld_1_bcm47xx.ipk
输入hello然后按Tab键,发现openwrt中已经有helloworld可执行命令。
执行 helloworld 查看程序的效果。
Hell! O' world, why won't my code compile?
防止ssh 暴力破击
http://cache.baiducontent.com/c?m=9f65cb4a8c8507ed4fece763105392230e54f7257b8c8148228a8448e435061e5a35a3fd7c734e5392d8793301d01d0b99e4732f77552fecdddf893acacd903f598a3044710bf730&p=8b2a97108f871cb134bd9b7d0f12c9&newp=882a9647d2815af006be9b7c4c5dcb231615d70e3cd7d0143dcfcc16&user=baidu&fm=sc&query=it%D0%D0%B3%CC&qid=b3f2f28c00008295&p1=5
./scripts/feeds update -a OpenWrt大招系列的更多相关文章
- Ubuntu 16.04出现:Problem executing scripts APT::Update::Post-Invoke-Success 'if /usr/bin/test -w /var/cache/app-info -a -e /usr/bin/appstreamcli; then appstreamcli refresh > /dev/null; fi'
错误: Reading package lists... Done E: Problem executing scripts APT::Update::Post-Invoke-Success 'if ...
- Problem executing scripts APT::Update::Post-Invoke-Success 'if /usr/bin/test -w /var/cache/app-info -a -e /usr/bin/appstreamcli; then appstreamcli refresh > /dev/null; fi'
运行sudo apt-get update 时Ubuntu 16.04出现: Problem executing scripts APT::Update::Post-Invoke-Success 'i ...
- Ubuntu 16.04出现:Problem executing scripts APT::Update::Post-Invoke-Success 'if /usr/bin/test -w /var/
转自:http://blog.csdn.net/zzq123686/article/details/77454066 出现错误信息: Reading package lists... Done E: ...
- Ubuntu用sudo apt-get update出错:E: Problem executing scripts APT::Update::Post-Invoke-Success
Ubuntu用sudo apt-get update出错: E: Problem executing scripts APT::Update::Post-Invoke-Success 'if /u ...
- E: Problem executing scripts APT::Update::Post-Invoke-Success 'if /usr/bin/t
sudo apt-get remove libappstream3
- 搭建自己的OpenWrt开发环境
1. 安装环境Linux系统,如果在CentOS上操作,需安装如下依赖包:yum install binutils bzip2 gawk gcc gcc-c++ gettext makencurse ...
- 搭建OpenWrt开发环境(包括编译过程)
OpenWrt是一个高度模块化.高度自动化的嵌入式linux发行版,其编译和安装过程比普通的linux发行版而言,要简单太多了.如果您是新手,您那恐惧的心大可放到肚子里,呵呵.对于新手来说最麻烦的恐怕 ...
- [Openwrt 项目开发笔记]:Openwrt平台搭建(一)
[Openwrt项目开发笔记]系列文章传送门:http://www.cnblogs.com/double-win/p/3888399.html 正文: 最近开始着手进行Openwrt平台的物联网网关设 ...
- (一)openwrt源码目录概述
前言 这段时间总是在和openwrt打交道,之前也零零散散地写过一点,还是希望能有点体系.还记得我刚看到源代码的时候,觉得无从下手.我想从Makefile的整个执行过程入手,搞清楚编译源代码的几个小时 ...
随机推荐
- jQuery 遍历 json 方法大全
1.for循环: var obj = { "status":1, "bkmsg":"\u6210\u529f", "bkdata& ...
- hdu 4135 Co-prime(容斥)
Co-prime Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total S ...
- js基础例子
创建变量 var obj=value; 其中obj是变量名; value表示可能是数字,数组,函数之类的 多变量进行计算 var a1=200,b1='hello',c1=400; var d1=c1 ...
- IT痴汉的工作现状25-技术之养成
要想成为技术大牛,除了天赋以外,更与后天的刻苦努力分不开.伟仔我天生愚顿.工作多年后仍与大牛相差甚远,更加觉得技术的养成是一个异常困难的过程. 是我不用功吗?我不这样觉得.伟仔尽管是个懒人,但对于技术 ...
- Sybase安装后的配置工作
1.配置数据库参数 配置sybase数据库使用的最大内存 用isql命令行实用工具登录sybase数据库服务器,其中的servername是$SYBASE/interfaces文件中配置的sybase ...
- jquery悬停tab
<style> *{ margin:0; padding:0;} body { font:12px/19px Arial, Helvetica, sans-serif; color:#66 ...
- extjs folder is lost解决方法 和 FineUI主题切换时 iframe内的内容主题不变的解决方法
错误原因:extjs包和FineUI版本不一致 或者是 webconfig配置中 没有设置为任何人可访问 解放方法下载和FineUI版本相同的extjs包就ok了 解决方法:FineUI主题切换时 ...
- AngularJs练习Demo4
@{ Layout = null; } <!DOCTYPE html> <html> <head> <meta name="viewport&quo ...
- jquery的Post方法$.post()
$.post是jquery自带的一个方法,使用前需要引入jquery.js 语法:$.post(url,data,callback,type); url(必须):发送请求的地址,String类型 da ...
- C++深层复制解决指针悬挂
代码: #include <iostream> #include <cstring> using namespace std; class mystring{ public: ...