
Linux开发之路
文章平均质量分 64
jltxgcy
热爱Android,热爱开源。
展开
-
Autotools
Files used in preparing a software package for distribution, when using just Autoconf: your source files --> [autoscan*] --> [configure.scan] --> configure.ac configure.ac --.原创 2013-03-03 19:45:50 · 1215 阅读 · 0 评论 -
Linux 可执行文件 ELF结构 及程序加载运行
Linux下ELF文件类型分为以下几种: 1、可重定位文件,例如SimpleSection.o; 2、可执行文件,例如/bin/bash; 3、共享目标文件,例如/lib/libc.so。 在Linux 可重定位文件 ELF结构一文中,我们已经分析了可重定位文件ELF结构。本文分析可执行文件的ELF结构。 首先附上源代码:#include int main(){原创 2014-09-18 14:28:04 · 12359 阅读 · 0 评论 -
Linux常用命令
查看帮助一是man 命令,二是进入www.gnu.org,找到coreutils的帮助文档(更详细)。一、Linux命令解释程序 bash是Bourne Again shell的缩写,是一种shell。 命令执行的过程是先到/etc/environment指定的文件夹中找到命令,例如ls,经过bash解释后传送给操作系统(内核)执行。./ls是只在当前目录下寻找。原创 2013-04-25 17:02:20 · 1762 阅读 · 0 评论 -
Shell 脚本
查看帮助一是man bash,二是进入www.gnu.org,找到bash的帮助文档(更详细)。 一、变量 1、本地变量(都是字符的形式,没有数字类型) version=1 或者 version="hello world" 如果有空格,那么就要用引号 数组: arr=(1,2) 或者原创 2014-01-19 18:52:06 · 1414 阅读 · 0 评论 -
Linux下C/C++编译链接过程及库函数使用说明
一、linux C语言的编译链接过程 gcc编译命令 gcc -E hello.c -o hello.i 预处理 到/usr/include下找到头文件 gcc -S hello.i -o hello.s 编译 形成汇编代码 gcc -c原创 2013-12-10 21:35:21 · 2879 阅读 · 0 评论 -
从二进制代码来看静态链接本质
静态链接大家并不陌生,本文将从二进制代码来分析静态链接的本质。 首先列出将要静态的链接的两个源文件,它们分别是a.c和b.c,最后链接成功的文件为ab。 a.c代码如下:extern int shared;extern void swap(int * ,int *);int main(){ int a = 100; swap( &a, &shared );} b.c代原创 2014-09-10 10:02:44 · 2006 阅读 · 0 评论 -
你可能不知道的Shell技巧
1、apt-get install sl 这时候忘记了sudo ,那么只要执行sudo !!,!!表示上一条命令2、vi hello.c 退出后,如果想打开刚才的hello.c文件,只需要!vi3、man ascii 来查看ascii码表4、echo "wanderful",其实是想输出echo "wonderful"。只需要^a^o就行5、Ctrl + U 将输入错误的正行全部删原创 2014-01-13 11:17:38 · 1708 阅读 · 0 评论 -
gcc -static hello.c 背后究竟发生了什么
大家可能经常使用gcc -static ***.c,那么这个静态链接究竟使用了什么命令,又链接了哪些库呢? 我们首先来分析libc.a是个什么文件。我们已经知道了xxx.so是动态链接库,xxx.o是静态链接库或者说可重定位文件,/bin/bash为可执行文件。 libc.a其实是很多可重定位文件的集合,而且每个可重定位文件中一般都只写一个函数。例如printf.o只有printf一个原创 2014-09-10 17:26:15 · 4869 阅读 · 0 评论 -
Linux 可重定位文件 ELF结构
Linux下ELF文件类型分为以下几种: 1、可重定位文件,例如SimpleSection.o; 2、可执行文件,例如/bin/bash; 3、共享目标文件,例如/lib/libc.so。 再接下来的文章中,我们会使用objdump,readelf,hexdump,nm等来分析一个Linux中可重定位文件SimpleSection.o。 首先附上SimpleSecti原创 2014-09-09 20:25:54 · 4440 阅读 · 0 评论 -
用GDB调试程序
1、模拟step into,使用step(s)。进入函数体内。2、模拟step over,使用next(n)。不进入函数体内。3、模拟step out,使用finish。退出当前函数体。4、模拟退出循环,使用until(u)。退出当前循环体。5、模拟下断点,break(b) function或者linenum或者filename:linenum或者filename:function。6、模拟删除原创 2015-01-23 11:15:22 · 1441 阅读 · 0 评论 -
Linux系统编程-管道与文件
0x00 管道经常用于进程间通信,进程间通过管道的读端和写端进程通信。 我们介绍一个比较简单的例子。int main(int argc, char *argv[]){ int pipefd[2]; if (pipe(pipefd) == -1) ERR_EXIT("pipe error"); pid_t pid; pid = fork(); if (pid == -1原创 2016-08-06 18:14:31 · 1022 阅读 · 0 评论 -
Linux系统编程-信号
0x00 信号和中断类似,中断是硬件发出,而信号由软件发出。 信号常用于进程间通信,一个信号常见的处理如下: 1、设置对应信号的信号处理函数。 2、当信号来临时,打断正常执行的程序(本质上是在系统调用前检查是否有信号的到来),去执行信号处理函数。 3、信号处理函数执行完,继续执行原程序。 0x01 我们先来看一下linux中一共支持多少种信号。使用命令ki原创 2016-08-06 17:17:24 · 725 阅读 · 0 评论 -
AT&T汇编语言与GCC内嵌汇编,Linux内核数据结构之链表
最近在看《Linux内核源代码情景分析》,作者毛德操。书中刚开始介绍了AT&T汇编语言与GCC内嵌汇编,以及Linux内核数据结构之链表。可惜书中介绍的不够全面。因为推荐大家阅读下面两篇文章。很不错。 AT&T汇编语言与GCC内嵌汇编:http://grid.hust.edu.cn/zyshao/Teaching_Material/OSEngineering/Chapter2.pdf原创 2014-08-27 14:52:47 · 1632 阅读 · 0 评论 -
Ubuntu 终端及Chrome常用快捷键(随时更新)
终端:Ctrl+T 打开新的终端 Ctrl+PgUp 切换终端Chrome:Ctrl+T 打开新的Tab原创 2013-09-04 11:58:17 · 4363 阅读 · 0 评论 -
初识Linux
一、Linux中文件类型,对应符号,颜色 普通文件(文本文件,配置文件,源码文件) - 白色 可执行文件 - 青绿色 压缩文件 - 红色 目录文件 d 蓝色 软链接文件 l 浅蓝色 块设备 b 黄色 字符设备 c 黄色 进去/dev能看到 socket文件或者图片文件 s粉红色原创 2013-02-07 17:12:06 · 1298 阅读 · 0 评论 -
Makefile
查看帮助一是man make,二是进入www.gnu.org,找到make的帮助文档(更详细)。一、Makefile的格式如下: 目标/伪目标:依赖/伪依赖 命令(前面必须加上tab键) BIN是用户自定义变量,CC ,CFLAGS是预定义变量,$* 不包括扩展名的目标文件 $ .PHONY :说明这些是make的原创 2013-03-03 17:07:48 · 1138 阅读 · 0 评论 -
gdb调试工具
查看帮助一是man 命令,二是进入www.gnu.org,找到gdb的帮助文档(更详细)。gcc -Wall -g main.c -o main,只有这样才能产生调试信息,包括core的调试信息。一、常用命令 run(r) 运行,执行到断点,重新用r,表示重新开始执行。 list(l) 列出源代码,l 2,l main,l 2,16(数字表示行数)。原创 2013-05-05 21:19:05 · 1754 阅读 · 0 评论 -
gcc编译
查看帮助一是man gcc,二是进入www.gnu.org,找到gcc的帮助文档(更详细)。一、gcc编译过程 hello.c源代码 经过预处理(Pre-Processing),形成 hello.i预编译文件, 经过编译(Compiling),形成 hello.s汇编文件, ...原创 2013-03-02 08:46:23 · 1280 阅读 · 0 评论 -
Android ndk-build 源码分析
一、可以利用如下命令 bash -x ndk-build根据调试信息来分析二、PROGDIR=`dirname $0`PROGDIR=`cd $PROGDIR && pwd`# Check if absolute NDK path contain space#case $PROGDIR in *\ *) echo "ERROR: NDK path原创 2014-01-21 17:56:57 · 3425 阅读 · 0 评论 -
Ubuntu下环境变量的设置
一、ubuntu下环境变量的设置是通过/etc/profile,/etc/environment 如下。 1、/etc/environment:PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games"LANGUAGE="en_GB:en" 2、/etc/prof原创 2013-12-05 14:21:51 · 1556 阅读 · 0 评论 -
grep 命令
一、grep 命令的一般格式 grep [option] pattern file 用于查找文件中字符串二、grep option选项,如下图 三、pattern 为正则表达式,正则表达式分为普通字符与特殊字符(元字符),元字符分为基本的元字符集和扩展元字符集 1、基本的原创 2014-01-16 16:20:42 · 2511 阅读 · 0 评论 -
find 命令
一、find命令基本格式 find 目录 -name '名字' 名字中可以有*,但一般不用正则二、find 选项 三、find逻辑表达式 四、举例说明 find . -name '*.bak' -type f -exec rm -f {} \; {}代表刚找到原创 2014-01-17 10:04:44 · 1851 阅读 · 0 评论 -
vi使用
查看帮助一是man vi,二是进入vi homepage,找到的帮助文档(更详细)。如果安装了vim,那么使用vi就是在用vim 一、vi三种状态切换 Command->Edit(i,a,o) Edit->Command(ESC) Command->Ex(:) Ex->Command(Enter或者删除:如果想取消那么按两原创 2013-02-27 20:32:45 · 1080 阅读 · 0 评论 -
read 命令
一、read命令 type read 发现 read is a shell builtin,说明read是bash内部命令,所以man read是查看不到内部命令的帮助文档,只能查到库函数的帮助文档二、用法 read -n 2 var 读入2个字符后自动复制给var变量,不需要按回车 read -s var 输入的字符不显示在屏幕上原创 2014-01-19 16:11:40 · 1617 阅读 · 0 评论 -
echo 命令
1、echo "hello\nworld" ,传入echo的是hello\nworld 输出 hello\nworld2、echo -e "hello\nworld" ,传入echo的是hello\nworld,并转义了 输出 hello world3、echo -e hello\nworld ,传入shell原创 2014-01-19 12:05:55 · 1748 阅读 · 0 评论 -
Linux系统编程-fork
0x00 我们首先来最基本的fork使用,首先列代码,然后讲解。#include #include #include #include #include #include #include #include #include #include #define ERR_EXIT(m) \ do \ { \ perror(m); \ exit(EXIT_FA原创 2016-08-06 15:51:15 · 743 阅读 · 0 评论