Hello world!

欢迎使用 WordPress。这是您的第一篇日志。您可以编辑它或是删除它,然后开始写您自己的博客。

Posted in 未分类 | Leave a comment

ez-ipupdate 3322.org 使用路由器更新动态IP 方法

ez-ipupdate 3322.org 使用路由器更新动态IP 方法

1.下载 3322.org 上的  ez-ipupdate 源代码
2.修改 ez-ipupdate.c 里的

snprintf(buf, BUFFER_SIZE, "%s=%s&", "myip", address);
    output(buf);

 if(service->type != SERV_QDNS)
    {
    snprintf(buf, BUFFER_SIZE, "%s=%s&", "myip", address);
    output(buf);
    }
一共两处
这里图简便 ,不用仔细考虑 静态和动态IP的区别-原意如标题。

3.编译生成新的 ez-ipupdate,OK
这样以后 ez-ipupdate 所更新到 3322.org 上的 IP 就是 路由器拨号的 IP 了

Posted in 未分类 | Tagged , , , , | Leave a comment

arm linux 升级步骤

1.升级 Bootstrap
2.升级 u-boot
3.升级 gcc 交叉工具链 以及gdb,gdbserver

4.使用新的 gcc 编译 kernel 生成新大uImage
5.升级 libacl(acl)
6.升级 udev
7.升级 busybox
8.创建新的文件系统(/lib,/usr 等)

Posted in 未分类 | Leave a comment

生成 arm-linux ez-ipupdate-3.0.11b7

防止出现  /lib/libc.so.6: could not read symbols:Bad value错
先修改 conf_file.c
vi ../ez-ipupdate-3.0.11b7/conf_file.c
/* extern int errno; 原来的*/
#include <errno.h> /* 新加的 */

CC=arm-linux-gcc ../ez-ipupdate-3.0.11b7/configure  --host=$TARGET  --target=$TARGET --prefix=/home/embedded/ez-ipupdate  --includedir=/home/embedded/tools/include

make
make install
---------------------------------------------------

Posted in 未分类 | Tagged , , , | Leave a comment

在 Fedora 13 上制作 ARM linux gcc 交叉编译环境

在 Fedora 13 上制作 ARM linux gcc 交叉编译环境
 作者 :solarnumen

前提,先使用下载的GCC 相关包 升级完本机的 GCC,否则 后面会出现错误:
  link tests are not allowed after gcc_no_executables.
----------------------------------------------------------------------------------------------------------------------------------------------
0.准备GCC相关包
binutils-2.20.1.tar.bz2
gcc-4.5.1.tar.bz2
glibc-2.12.1.tar.bz2
linux kernel(暂时手上只有linux-2.6.24.tar.gz)

binutils-2.20-2.20.1-patch
gcc-4.5.1-startfiles_fix-1.patch
glibc-2.12.1-gcc_fix-1.patch
glibc-2.12.1-makefile_fix-1.patch

1.在 F13 上创建制作环境

设置环境变量
修改 ~/.bash_profile

export PRJROOT=/home/embedded
export TARGET=arm-linux
export PREFIX=${PRJROOT}/tools
export TARGET_PREFIX=${PREFIX}/${TARGET}
export PATH=${PREFIX}/bin:${PATH}

创建制作目录
mkdir /home/embedded
mkdir /home/embedded/build-tools
mkdir /home/embedded/kernel
mkdir /home/embedded/tools

mkdir /home/embedded/build-tools/build-binutils
mkdir /home/embedded/build-tools/build-gcc
mkdir /home/embedded/build-tools/build-glibc

mkdir /home/embedded/build-tools/glibc

mkdir /home/embedded/tools/arm-linux
mkdir /home/embedded/tools/arm-linux/include

mkdir /home/embedded/tools/include

展开文件到目录
binutils-2.20.1.tar.bz2 到 /home/embedded/build-tools/build-binutils
binutils-2.20-2.20.1-patch.gz 到 /home/embedded/build-tools/build-binutils

gcc-4.5.1.tar.bz2 到 /home/embedded/build-tools/
gcc-4.5.1-startfiles_fix-1.patch 到 /home/embedded/build-tools/

glibc-linuxthreads-2.5.tar.bz2 到 /home/embedded/build-tools/glibc
glibc-2.12-branch-update-20100613.patch 到 /home/embedded/build-tools/glibc
glibc-2.12.1-makefile_fix-1.patch 到 /home/embedded/build-tools/glibc
glibc-2.12.1-gcc_fix-1.patch 到 /home/embedded/build-tools/glibc

linux-2.6.24.tar.gz) 到 mkdir /home/embedded/kernel

进入到 linux-2.6.24 拷贝头文件
cd /home/embedded/kernel/linux-2.6.24
cp -dR include/linux /home/embedded/tools/arm-linux/include
cp -dR include/asm-arm /home/embedded/tools/arm-linux/include/asm

进入到制作环境
su -
编译生成kernel version头文件
cd
/home/embedded/kernel/linux-2.6.24
这个是编译glibc时必须的,使用命令:make include/linux/version.h

2.编译安装binutils
  为 binutils-2.20.1
  打补丁文件 binutils-2.20-2.20.1-patch
cd /home/embedded/build-tools/build-binutils/binutils-2.20.1
patch -Np1 -i ../binutils-2.20-2.20.1-patch
../binutils-2.20.1/configure --target=$TARGET --prefix=$PREFIX --enable-kernel=2.6.24
make
make install

3.编译安装gcc 的c 编译器
为 gcc-4.5.1
  打补丁文件 gcc-4.5.1-startfiles_fix-1.patch
cd /home/embedded/build-tools/build-gcc/gcc-4.5.1
patch -Np1 -i ../gcc-4.5.1-startfiles_fix-1.patch

修改 /home/embedded/build-tools/build-gcc/gcc-4.5.1/gcc/config/arm/t-linux 文件中的
TARGET_LIBGCC2-CFLAGS = -fomit-frame-pointer -fPIC

TARGET_LIBGCC2-CFLAGS = -fomit-frame-pointer -fPIC -Dinhibit_libc -D__gthr_posix_h

../gcc-4.5.1/configure --target=$TARGET --prefix=$PREFIX  --without-headers  --enable-languages=c --disable-threads --disable-shared --enable-kernel=2.6.24

make all-gcc
make install-gcc

再编译安装libgcc,这个是后面编译glibc必须的。
编译:
make all-target-libgcc
安装libgcc:
make install-target-libgcc
 ------------------------------------
解决 cannot find -lgcc 使用 --disable-shared
使用了--disable-shared的选项,将不会生成libgcc_eh.a,可以通过对libgcc.a的链接来实现
如果不使用--disable-shared ,后面将报错误:
crti.o: No such file: No such file or directory
/home/embedded/tools/lib/gcc/arm-linux/4.5.1/../../../../arm-linux/bin/ld: cannot find -lgcc
----------------------------------------------------
解决 cannot find -lgcc_eh 不使用 --disable-shared
../gcc-4.5.1/configure --target=$TARGET --prefix=$PREFIX  --without-headers  --enable-languages=c --disable-threads
make all-target-libgcc
这个过程会报错,但会生成 libgcc_eh.a $PRJROOT/tools/lib/gcc/arm-linux/4.5.1/
把  libgcc_eh.a 复制到
cp $PRJROOT/build-tools/build-gcc/arm-linux/libgcc/libgcc_eh.a $PRJROOT/tools/lib/gcc/arm-linux/4.5.1/

4.建立 C 库 (glibc)
打补丁后
进入文件夹build-glibc,创建 config.cache 文件,并且在文件中输入以下内容

echo libc_cv_forced_unwind=yes >config.cache
echo libc_cv_c_cleanup=yes >>config.cache
echo libc_cv_arm_tls=yes >>config.cache

echo libc_cv_broken_visibility_attribute=no
echo libc_cv_visibility_attribute=yes

修改/home/embedded/build-tools/glibc-2.12.1/ports/sysdeps/arm/dl-machine.h  文件

#define VALID_ELF_ABIVERSION(ver)       (ver == 0)
#define VALID_ELF_OSABI(osabi)
  (osabi == ELFOSABI_SYSV || osabi == ELFOSABI_ARM)

#define VALID_ELF_HEADER(hdr,exp,size)
  memcmp (hdr,exp,size-2) == 0
  && VALID_ELF_OSABI (hdr[EI_OSABI])
  && VALID_ELF_ABIVERSION (hdr[EI_ABIVERSION])

#define CLEAR_CACHE(BEG,END)                                           
  INTERNAL_SYSCALL_ARM (cacheflush, , 3, (BEG), (100498266, END), 0)


#ifndef VALID_ELF_ABIVERSION
#define VALID_ELF_ABIVERSION(ver)       (ver == 0)
#endif
#ifndef VALID_ELF_OSABI
#define VALID_ELF_OSABI(osabi)
  (osabi == ELFOSABI_SYSV || osabi == ELFOSABI_ARM)
#endif
#ifndef VALID_ELF_HEADER
#define VALID_ELF_HEADER(hdr,exp,size)
  memcmp (hdr,exp,size-2) == 0
  && VALID_ELF_OSABI (hdr[EI_OSABI])
  && VALID_ELF_ABIVERSION (hdr[EI_ABIVERSION])
#endif
#ifndef CLEAR_CACHE
#define CLEAR_CACHE(BEG,END)                                           
  INTERNAL_SYSCALL_ARM (cacheflush, , 3, (BEG), (100498266, END), 0)
#endif

CC=arm-linux-gcc AR=arm-linux-ar RANLIB=arm-linux-ranlib ../glibc-2.12.1/configure --host=$TARGET  --target=$TARGET --prefix=$TARGET_PREFIX --enable-add-ons --with-headers=$TARGET_PREFIX/include  --cache-file=config.cache --enable-kernel=2.6.24

make
make install_root=$TARGET_PREFIX prefix="" install

修改  $PRJROOT/tools/arm-linux/lib/libc.so:
用vi或gedit打开libc.so文件,将文件中的:
GROUP ( /lib/libc.so.6 /lib/libc_nonshared.a  AS_NEEDED ( /lib/ld-linux.so.2 ) )
更改为
GROUP ( libc.so.6 libc_nonshared.a )
保存后退出

5.创建完整的 gcc

cd $PRJROOT/build-tools/build-gcc
../gcc-4.5.1/configure --target=$TARGET --prefix=$PREFIX --enable-languages=c,c++ --with-headers=$PREFIX/include  --disable-libgomp --enable-kernel=2.6.24

make all
make install

-----------------------------------------------------------------------------
如果不出现意外,应该一切OK

arm-linux-gdb/arm-linux-gdbserver
-----------------------------------------------------------------------------
编译gdb
CC=gcc ../gdb-7.2/configure --target=$TARGET --prefix=$PREFIX
make
make install

编译gdbserver
 进入gdb-XX/gdb/gdbserver/目录下:
CC=arm-linux-gcc ../gdb-7.2/gdb/gdbserver/configure --host=$TARGET  --target=$TARGET --prefix=$PREFIX
make(生成gdbserver在当前目录下)

检查编译完的gdbserver是否是for arm平台:执行file
gdbserver是否看到ELF 32-bit LSB executable, ARM, version 1,
dynamically linked (uses shared libs), for GNU/Linux 2.0.0, not stripped
把gdbserver烧到arm板上

编译gdbserver时出现PATH_MAX undeclared错误的解决方法:
在hostio.c文件中增加
在../gdb-7.2/gdb/gdbserver/thread-db.c 文件中增加
#include <linux/limits.h>
原因是宏PATH_MAX在<limits.h>中没有定义,而是定义在<linux/limits.h>中

Posted in 程序人生 | Tagged , , , | Leave a comment

聊聊 重庆小老板 QQ群 85437708 ,欢迎重庆小老板加入

聊聊 重庆小老板 QQ群 85437708 ,欢迎重庆小老板加入

Posted in 未分类 | Leave a comment

COMDEBUG 已经完全免费了

COMDEBUG 已经完全免费了
大家可以到下面地方下载最新的版本

http://www.snscom.org

http://solarnumen.3322.org

对 COMDEBUG 有什么疑问可以上

http://bbs.snscom.org

提问

Posted in 产 品 | Leave a comment

公司开始走下坡路,可以卸磨杀驴了。

公司开始走下坡路,可以卸磨杀驴了。
       驴始终是驴,除了会推磨其他什么都不会想。现在还在做驴的,留心身边的事,做好准备吧。

Posted in FAQS | Leave a comment

不适合创业的人

   并不是所有的人都具备创业素质,究竟哪些人不适合创业?社会心理学家认为:

   1、缺少职业意识的人。职业意识是人们对所从事职业的认同感,它可以最大限度地激发人的活力和创造力,是敬业的前提。如职业运动员、职业演员等,他们具有较强的职业意识,而有些工薪人员却对所从事的工作缺少职业意识,满足于机械地完成自己份内的工作,缺少进取心、主动性,这与激烈竞争的环境不相宜。   

   2、优越感过强的人。自恃才高,我行我素,难以与集体融合。   

   3、唯上是从,只会说“是”的人。这种人缺乏独立性、主动性和创造性。若当了经理,也只能因循守旧,难以开展开拓性的工作,对公司发展不利。   

   4、偷懒的人。这种人被称作“工资小偷”。他们付出的劳动和工资不相符合,只会发牢骚、闲聊,每天晃来晃去浪费时间,影响他人工作。   

   5、片面和傲慢的人。有的人只注意别人的缺点,看不到别人的优点;有的人总喜欢贬低别人,抬高自己,总以为自己是最强者,人格方面存在很大的缺陷。   

   6、僵化死板的人。做事缺少灵活性,对任何事都只凭经验教条来处理,不肯灵活应对,习惯于将惯例当成金科玉律。   

   7、感情用事的人。处理任何事情都要理智,感情用事者往往以感情代替原则,想如何干就如何干,不能用理智自控。   

   8、“多嘴多舌”与“固执己见”的人。多嘴多舌的人,不管什么事,他们都要插上几句话;“固执己见”的人,从不倾听别人的意见。   

   9、胆小怕事、毫无主见、树叶掉下来怕砸破脑袋的人。这种人宁可因循守旧也不敢尝试革新,遇事推诿,不肯负责,狭隘自私、庸碌委琐。   

   10、患得患失却又容易自满自足的人。稍有收获,欣喜若狂;稍受挫折,一蹶不振,情绪大起大落,极不平衡。  

   当然,世上万物,决非一成不变,社会学家认为,性格是可以改造的,任何一个人完全可以在实践中注意克服性格缺陷,战胜性格弊端,改变性格类型,不断丰富和完善自我。倘若自身有上述十种性格缺陷,但已经踏上创业之路,甚至当上老板或负责人,则需学会重用人才,借助他人智慧来弥补个人不足,以避免失败。

Posted in FAQS | Leave a comment

log4j配置文件说明

log4j.properties配置文件讲解如下:
# Set root logger level to DEBUG and its only appender to A1
#log4j中有五级logger
#FATAL 0
#ERROR 3
#WARN 4
#INFO 6
#DEBUG 7

配置根Logger,其语法为:
#log4j.rootLogger = [ level ] , appenderName, appenderName, …
log4j.rootLogger=INFO, A1 ,R
#这一句设置以为着所有的log都输出
#如果为log4j.rootLogger=WARN, 则意味着只有WARN,ERROR,FATAL
#被输出,DEBUG,INFO将被屏蔽掉.
# A1 is set to be a ConsoleAppender.
#log4j中Appender有几层如控制台、文件、GUI组件、甚至是套接口服务器、NT的事件记录器、UNIX Syslog守护进程等
#ConsoleAppender输出到控制台
log4j.appender.A1=org.apache.log4j.ConsoleAppender
# A1 使用的输出布局,其中log4j提供4种布局. org.apache.log4j.HTMLLayout(以HTML表格形式布局)
#org.apache.log4j.PatternLayout(可以灵活地指定布局模式),
#org.apache.log4j.SimpleLayout(包含日志信息的级别和信息字符串),
#org.apache.log4j.TTCCLayout(包含日志产生的时间、线程、类别等等信息)

log4j.appender.A1.layout=org.apache.log4j.PatternLayout
#灵活定义输出格式 具体查看log4j javadoc org.apache.log4j.PatternLayout
#d 时间 ....
log4j.appender.A1.layout.ConversionPattern=%-d{yyyy-MM-dd HH:mm:ss} [%c]-[%p] %m%n
#R 输出到文件 RollingFileAppender的扩展,可以提供一种日志的备份功能。
log4j.appender.R=org.apache.log4j.RollingFileAppender
#日志文件的名称
log4j.appender.R.File=log4j.log
#日志文件的大小
log4j.appender.R.MaxFileSize=100KB
# 保存一个备份文件
log4j.appender.R.MaxBackupIndex=1 log4j.appender.R.layout=org.apache.log4j.TTCCLayout
#log4j.appender.R.layout.ConversionPattern=%-d{yyyy-MM-dd HH:mm:ss} [%c]-[%p] %m%n

配置根Logger,其语法为:
log4j.rootLogger = [ level ] , appenderName, appenderName, ...

level 是日志记录的优先级
appenderName就是指定日志信息输出到哪个地方。您可以同时指定多个输出目的地。

配置日志信息输出目的地Appender,其语法为
log4j.appender.appenderName = fully.qualified.name.of.appender.class
log4j.appender.appenderName.option1 = value1
...
log4j.appender.appenderName.option = valueN

Log4j提供的appender有以下几种:
org.apache.log4j.ConsoleAppender(控制台),
org.apache.log4j.FileAppender(文件),
org.apache.log4j.DailyRollingFileAppender(每天产生一个日志文件),
org.apache.log4j.RollingFileAppender(文件大小到达指定尺寸的时候产生一个新的文件),
org.apache.log4j.WriterAppender(将日志信息以流格式发送到任意指定的地方)

配置日志信息的格式(布局),其语法为:
log4j.appender.appenderName.layout = fully.qualified.name.of.layout.class
log4j.appender.appenderName.layout.option1 = value1
....
log4j.appender.appenderName.layout.option = valueN

Log4j提供的layout有以下几种:
org.apache.log4j.HTMLLayout(以HTML表格形式布局),
org.apache.log4j.PatternLayout(可以灵活地指定布局模式),
org.apache.log4j.SimpleLayout(包含日志信息的级别和信息字符串),
org.apache.log4j.TTCCLayout(包含日志产生的时间、线程、类别等等信息)

Posted in 程序人生 | Leave a comment