
Linux开发
Hansel
Windows/Linux WIFI/BT技术专家,现在学习人工智能,深度学习中
展开
-
用BDI2000调试Linux内核和模块
用BDI2000调试Linux内核和模块hansel@163.com2007-12-22BDI2000是性价比较高的JTAG调试器,通过装载不同的firmware就可以支持ARM、MIPS、XSCALE等多种嵌入式处理器。我所用的是mips版本的bdiGDB,也就是能够仿真成为gdbserver,配合gdb进行源代码级调试。所用Linux内核为2.6.18.8版本。1、BDI2000配原创 2007-12-15 12:42:00 · 7347 阅读 · 0 评论 -
实用git 配置文件.gitconfig
[hansel@hansel ~]$ cat .gitconfig [user] email = hansel@163.com name = Hansel[color] ui = auto[alias] co = checkout ci = commit st = status原创 2011-09-08 09:52:05 · 984 阅读 · 0 评论 -
system_ex():增强版本的system()
在Linux上,如果一个程序中需要执行shell 命令,可以有以下几种方法:system(): 执行一个shell命令,返回该命令执行后的返回值popen():执行一个shell命令,从返回的文件描述符中读出命令执行后输出的内容自己写fork(), dup2(), execl, wait4,通过execl中执行“/bin/sh -c "来得到执行结果system()只能得到命令执行返回原创 2013-03-17 00:38:53 · 1876 阅读 · 0 评论 -
pipe、dup、dup2、wait、waitpid、fork函数说明
pipe、dup、dup2、wait、waitpid、fork函数说明pipe、dup、dup2、wait、waitpid、fork函数说明From: http://www.cppblog.com/aaxron/archive/2012/08/09/186738.htmlint pipe(int fd[2]);功能:创建一个简单的管道,若成功则为数组fd分配两个文件转载 2013-03-16 21:41:27 · 1410 阅读 · 0 评论 -
浅析busybox-1.12.0中ash的脚本命令局限性
浅析busybox-1.12.0中ash的脚本命令局限性http://www.cublog.cn/u1/38994/showart_1745642.htmlLUTHER=表示将LUTHER清空,将其变为nullecho ${LUTHER:-111}如果执行该句之前LUTHER变量不存在,那么显示111,否则显示$LUTHERecho ${LUTHER:=111}如果执行该句转载 2013-03-08 15:38:43 · 4028 阅读 · 1 评论 -
Analysis gssapi-data for TLS-DSK packet
gssapi-data is encoded by base64. It is actually apply to TLS protocol but encapsulated in SIP register and 401 response.To get server certificate in gssapi-data, do below steps.1. Extract gssapi-原创 2013-02-24 22:39:35 · 879 阅读 · 0 评论 -
如何不通过内核命令行rootfstype指定根文件系统类型
今天发现sqashfs制作的根文件系统不需要像jffs2那样需要增加内核命令行:rootfstype=jffs2。看了一下内核挂载根文件系统个过程,发现是JFFS2注册文件系统时少设置了一个标志:FS_REQUIRES_DEV。修改点: fs/jffs2/super.cstatic struct file_system_type jffs2_fs_type = { .ow原创 2012-09-25 15:00:45 · 4571 阅读 · 0 评论 -
列出目录下的文件的内核模块
在调试一个文件系统时,需要看看挂载后文件系统的目录,写了一个列文件的内核模块。使用方法: insmod fs_test.ko path='/dev'默认路径是/。 该模块不会被插入内核,列完目录后退出。fs_test.h#ifndef __FS_TEST_H__#define __FS_TEST_H__#define FS_TEST_D原创 2012-09-20 12:15:35 · 660 阅读 · 0 评论 -
Linux下thread编程
From: http://blog.sina.com.cn/s/blog_602f87700100dqmk.htmlLinux下thread编程(一)Sam前些天在提供一个库给别的公司时,因为不喜欢使用pthread_jion等函数,被人骂为垃圾程序。呵呵,之前因为在写多thread程序时,习惯让每个thread都为detach属性,这样他们就可以自我管理。而不需要转载 2012-08-27 18:23:02 · 4054 阅读 · 0 评论 -
解决No package ‘gtk+-2.0′ found
解决No package ‘gtk+-2.0′ found From: http://cchxm1978.blog.163.com/blog/static/35428253201010298454394/网上搜了一下,发现安装gtk+-2.0不是一件容易的事,后来无意发现一个帖子挺不错,内容如下:No package ‘libgnomeui-2.0′ foun转载 2012-08-25 22:45:34 · 6371 阅读 · 1 评论 -
Change git remote URL
Sometime, your git server may move to new hostname or IP address. You have to modify remtote URL in your local git repository.Commands are below.$ git remote set-url origin Or modify your原创 2012-07-11 10:27:17 · 5509 阅读 · 0 评论 -
Linux下通过进程名获得进程号
因为存在多进程和线程,Linux下同一个进程名有可能有多个进程号。下面的程序可以一次获得同一进程名的所有进程号。process.h#ifndef __PROCESS_H__#define __PROCESS_H__char *basename(const char *path);int get_pid_by_name(const char* process_name, p原创 2012-06-27 13:01:44 · 4475 阅读 · 0 评论 -
判断程序实例是否已经运行的N种方法
From: http://socol.iteye.com/blog/6877281. 在创建的文件中写入进程的ID,如果机器非正常退出,重启后先读取这个文件,得到进程ID,再根据ID判定进程是否正在运行,如果不是,则把文件删除掉。这样就不会发生不删除文件,程序运行不起来的问题了。 2. 打开一个文件,然后锁定,新运行的程序会试图再次锁定该文件,但是因为已经被锁定,所转载 2012-06-27 09:39:00 · 4198 阅读 · 0 评论 -
Linux下判断进程是否存在的好方法
用kill发个0信号是个好办法。[admin@local ~]$ killall -0 bash[admin@local~]$ echo $?0[admin@local~]$ killall -0 bash1killall: bash1: no process killed[admin@local~]$ echo $?1P O S I X . 1将信原创 2012-06-27 10:26:53 · 2461 阅读 · 0 评论 -
linux内核线程对信号的处理过程
原文:http://blog.youkuaiyun.com/dog250/article/details/5303238linux中的线程分为用户线程和内核线程,用户线程是标准的线程,完全的自主性,完全的抢占性;但是内核线程就不那么好了,某种意义上没有用户线程那么清闲,这个怎么理解呢?用户线程的编写者只需要实现应用逻辑就可以,至于调度,信号处理等工作完全有内核代劳,用户进程根本不需要操这些心,转载 2012-05-18 11:35:36 · 899 阅读 · 0 评论 -
Linux内核线程编程方法
Linux内核线程编程方法写的不错,多说也无益,看看前人的经验。一点备注:内核线程实际上是内核进程,只是大家的地址空间是内核空间,所以内核线程间的切换没有真正意义上的地址空间切换。具体看看,他的一些编程方法,退出机制和windows多线程编程需要注意的事项差不多。==========================================================转载 2012-05-11 16:27:03 · 1979 阅读 · 0 评论 -
poll, select & epoll 原理比较分析
From: http://www.cnblogs.com/sharra/archive/2010/12/30/1921287.htmlpoll, select & epoll 原理比较分析因为需要了解底层设备访问的原理,所以惯用高层应用语言的我,需要了解一下Linux的设备访问机制,尤其是处理一组非阻塞IO的原理方法,标准的术语好像是叫多路复用。以下文章部分句子有引用之处,恕没有一一指转载 2013-03-20 11:17:26 · 644 阅读 · 0 评论 -
Bitbucket使用方法
Bitbucket使用方法2012-04-18 | 夜光 |IT记录|发表评论一、软件及SSH keys:由于我的Bitbucket账号的邮箱及用户名与Github相同,所以SSH Public Keys可以用Github的,登录Bitbucket,悬浮在用户名boliquan那里点击“Account”,点击左边的“SSH keys”即可进行设置软件不用再安转载 2013-04-05 10:25:43 · 1826 阅读 · 0 评论 -
Linux内核printk日志输出控制
From: http://blog.youkuaiyun.com/zhenwenxian/article/details/4336211要将linux内核的带级别控制的printk内容打印出来,在命令行 输入 dmesg -n 8 就将所有级别的信息都打印出来 Linux命令:dmesg 功能说明:显示开机信息。 语 法:dmesg [-cn][-s ] 补充说明转载 2014-07-31 13:04:52 · 12665 阅读 · 0 评论 -
linux 用户空间 和 内核空间 延时函数
linux 用户空间 和 内核空间 延时函数2011-06-19 15:28 3354人阅读 评论(1) 收藏 举报linuxstructnull用户空间:1.unsigned int sleep(unsigned int seconds); sleep()会使当前程序休眠seconds秒。如果sleep()没睡饱,它将会返回还需要转载 2014-07-29 12:19:30 · 6203 阅读 · 0 评论 -
warn_slowpath_common
warn_slowpath_common 出现这个函数,表示当前运行的状态不对,有BUG,但可能不是致命错误。void warn_slowpath_null(const char *file, int line){warn_slowpath_common(file, line, __builtin_return_address(0), NULL);转载 2014-07-29 15:01:28 · 6192 阅读 · 0 评论 -
netlink示例程序:监听网络状态变化
Makefile:netlink.c#include #include #include #include #include #include #include #include #include #include //#include #include #include FILE* fp=NULL;int running = 1;void n原创 2014-07-24 17:12:37 · 11430 阅读 · 0 评论 -
Linux内核栈信息获取与理解
Linux内核栈信息获取与理解From: http://www.ilinuxkernel.com/files/2/Linux_kernel_stack.html1 内核栈获取C语言的函数调用,是通过栈来实现的。如下图所示: 函数调用栈内核异常或死机时,经常在内核日志中看到打印的栈信息和寄存器值。从函数栈信息,我们可以知道函数间的调用关转载 2014-05-27 11:21:54 · 1100 阅读 · 0 评论 -
netlink测试程序的编写
有幸看到文章的童鞋,送上一句话。linux内核的编程遥遥无期,也不知到何时才是头,至少我们知道未来是光明的,而且也为解决的每一个问题感到兴奋无比。下面是我查找大牛的相关netlink详解和代码,重新写了一遍,也想大家能自己写一遍,熟悉一下流程。the kernel moduule:[html] view plaincopy转载 2014-04-12 22:00:11 · 1160 阅读 · 0 评论 -
GNU GLOBAL Source Code Tag System浏览源码
http://blog.youkuaiyun.com/sanlinux/article/details/56378521、下载GLOBALhttp://www.gnu.org/software/global/global.html http://www.gnu.org/software/global/globaldoc.html 2、编译安装./config转载 2014-04-27 11:07:35 · 2437 阅读 · 0 评论 -
内核签名机制
From: http://blog.youkuaiyun.com/u011923747/article/details/18619545Signed kernel module supportFrom Gentoo WikiJump to: navigation, searchSince Linux kernel version 3.7 onwards, support转载 2014-04-02 15:07:19 · 9887 阅读 · 0 评论 -
Kernel Debugging Tricks
Kernel Debugging TricksFrom: https://wiki.ubuntu.com/Kernel/KernelDebuggingTricksDebugging the kernel is not necessarily rocket science; in fact it can be achieved using very simple and stra转载 2014-04-29 13:34:17 · 1162 阅读 · 0 评论 -
git apply的一个bug
今天发现git apply的一个bug。如果使用git apply 打一个使用git diff生成的针对二进制文件的补丁,则-p选项会失效。原创 2014-03-05 00:06:07 · 2469 阅读 · 0 评论 -
Repo和Git 版本管理常用命令
From: http://zyueqi.iteye.com/blog/1461466Git命令快速参考Git Command Quick Reference本附录为Git常见命令快速参考。每节介绍一种操作类型。这里会列出很多命令,而相应的解释却不多。对于还不熟悉Git的读者,可回头翻阅第1章“Git的版本控制之道”(第3页)。A.1安装和初始化Setup a转载 2014-03-02 22:46:51 · 1741 阅读 · 0 评论 -
Linux 内存测试工具memtester
Linux 内存测试工具memtester原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://fengzhige.blog.51cto.com/3691377/1001633 下载地址:http://pyropus.ca/software/memtester/ 有源码安装包、deb包、rpm包等。转载 2014-02-16 19:32:00 · 4169 阅读 · 0 评论 -
Windows下cscope -q选项出错的解决
Windows下cscope -q选项出错的解决From: http://easwy.com/blog/archives/cscope_sort_option_on_windows/以前曾有网友留言,在windows下使用cscope时,使用-q选项出现如下提示: D:\Temp> cscope -RbkqInput file specified two times.csco转载 2013-07-15 15:50:37 · 1845 阅读 · 0 评论 -
程序员的利器 – cscope
vi/vim使用进阶: 程序员的利器 – cscopeFrom: http://easwy.com/blog/archives/advanced-vim-skills-cscope/本节所用命令的帮助入口: :help cscope 在前面的文章中介绍了利用tag文件,跳转到标签定义的地方。但如果想查找函数在哪里被调用,或者标签在哪些地方出现过,ctags就无能为力了,这时需要使用转载 2013-07-15 15:50:08 · 818 阅读 · 0 评论 -
使用".."指定git提交范围与"..."指定git提交范围的区别
使用".."(两个点)和"..."(三个点)都可以指定一段git提交范围,它们有什么区别呢?1.如果是在git log命令中 man git-rev-list可以知道它们的区别。 “r1..r2" 与 "^r1 r2"表示的范围一样,都是可以到达r2但不可以到达r1的所有提交。如下图的提交历史:git log F..J 将显示C, G, H, I, Jgit原创 2013-05-20 23:39:58 · 2754 阅读 · 0 评论 -
MinGW下编译openssl
1. 下载 OpenSSL: http://www.openssl.org/source/openssl-1.0.1c.tar.gz2. 编译:说明文件:INSTALL.W32 进入MinGW Shell $ tar xzvf openssl-1.0.1c.tar.gz $ cd openssl-1.0.1c $ ./config $ make $ ma原创 2012-05-28 14:18:53 · 3039 阅读 · 0 评论 -
安装MinGW和git
Origin: http://iverilog.wikia.com/wiki/Installation_using_MinGW更新:编译git时出现找不到langinfo.h的错误。(http://comments.gmane.org/gmane.comp.gnu.mingw.user/16568)使用msysgit替代:$ cd /c/Pro*86*/git$ cp bin/转载 2012-05-28 10:37:09 · 10440 阅读 · 0 评论 -
GDB 多线程调试基本命令
GDB 多线程调试基本命令GDB 多线程调试基本命令 实现简介 以及一个问题的解决teawater@gmail.com一直对GDB多线程调试接触不多,最近因为工作有了一些接触,简单作点记录吧。先介绍一下GDB多线程调试的基本命令。info threads显示当前可调试的所有线程,每个线程会有一个GDB为其分配的ID,后面操作线程的时候会用到这个ID。转载 2010-04-30 09:29:00 · 1461 阅读 · 0 评论 -
PCAP文件格式
一、基本格式:文件头 数据包头 数据报 数据包头 数据报......二、文件头结构体:struct pcap_filehdr{ unsigned long magic; /* 标识位:0xa1b2c3d4 */ unsigned short version_major; /* 主版本号:默认值为0x2 */ unsigned sh原创 2009-12-29 13:34:00 · 1505 阅读 · 0 评论 -
gcc和g++的区别
误区一:gcc只能编译c代码,g++只能编译c++代码两者都可以,但是请注意:1.后缀为.c的,gcc把它当作是C程序,而g++当作是c++程序;后缀为.cpp的,两者都会认为是c++程序,注意,虽然c++是c的超集,但是两者对语法的要求是有区别的。C++的语法规则更加严谨一些。2.编译阶段,g++会调用gcc,对于c++代码,两者是等价的,但是因为gcc命令不能自动和C++程序使用的库联接,所以转载 2009-12-15 08:28:00 · 713 阅读 · 0 评论 -
gcc 的 -g 和 -ggdb 选项
-g 和 -ggdb 都是令 gcc 生成调试信息,但是它们也是有区别的 -g 该选项可以利用操作系统的“原生格式(native format)”生成调试 信息。GDB 可以直接利用这个信息,其它调试器也可以使用这个调试信息 -ggdb 使 GCC 为 GDB 生成专用的更为丰富的调试信息,但是,此时就不能用其 他转载 2009-12-15 08:32:00 · 7461 阅读 · 0 评论 -
嵌入式的gdb调试
2008-04-30 23:51http://dipeng.blog.hexun.com/1654921_d.html 在开发过程中有很多问题如果用gdb进行调试跟踪会大大提高效率,但是我发现不少同事对于gdb调试概念比较模糊,特别是跨平台的调试,以至于放弃用gdb调试而影响排除bug的效率。因此我这里主要对跨平台调试做一个简要的说明。我们对机顶盒上的软件进行调试主要有两种方式,本地调转载 2009-11-05 19:22:00 · 1706 阅读 · 1 评论