Linux
文章平均质量分 67
微岩
这个作者很懒,什么都没留下…
展开
-
Android NDK 编译优化:浮点数计算优化
1. 浮点数计算优化1.1 float-ab-mfloat-abi=hard在编译带有浮点参数的函数时,有三种可能的编译选项:-mfloat-abi=soft/softfp/hard。“soft”选项:表明不使用FPU硬件,而是使用GCC的整数算术运算来模拟浮点运算。“softfp”选项:表明要使用FPU硬件来做浮点运算,只是,函数的参数传递到整数寄存器(r0-r3)中,然...原创 2018-06-14 18:01:19 · 2825 阅读 · 2 评论 -
Linux 添加C++ Man
使用Linux下man已经很久了。但只是大概知道其内容的存放目录,以及man number xxx中mumber的含义。今天需要添加C++ man page。顺便将man的内容作一个较详细的了解。 0. man后面数字的含义:之前Sam在查找C库函数时,会使用#man 3 func在查找系统调用时,则使用#man 2 fork.否则有时会出现查到同名的she转载 2014-05-15 10:58:25 · 1389 阅读 · 0 评论 -
CentOS 6.5安全加固及性能优化
说明:经常玩Linux系统的朋友多多少少也知道些系统参数优化和怎样增强系统安全性,系统默认的一些参数都是比较保守的,所以我们可以通过调整系统参数来提高系统内存、CPU、内核资源的占用,通过禁用不必要的服务、端口,来提高系统的安全性,更好的发挥系统的可用性。通过自己对Linux了解,对系统调优做了如下小结:操作系统:CentOS 6.5_x64最小化安装1、主机名设置 ?转载 2014-04-02 22:33:52 · 1221 阅读 · 0 评论 -
GDB多进程调试
1. follow-fork-mode作用:设置调试到创建子进程时,是跟踪子进程还是父进程。用法:set follow-fork-mode [child | parent]child: fork之后继续调试子进程,父进程不受影响parent:fork之后继续调试父进程,子进程不受影响2. detach-on-fork作用:用于设置:当在多进程环境下调试时,除了当原创 2014-03-21 16:38:38 · 1559 阅读 · 0 评论 -
Linux Nvidia 驱动安装与优化
Linux的Nvidia显卡驱动是一个让人很头疼的问题。Nvidia为了保护其显卡架构没有开源其驱动,Nvidia本身对Linux 的支持也极为糟糕,所以Linux安装Nvidia驱动经常碰到各种问题,并且性能也落后于Windows系统。这里总结些信息便于以后查看,也希望对大家有用。1. 删除旧Nvidia驱动Ubuntu等Linux发行版中都会预装Nvidia的驱动,不过这都是老旧驱动,原创 2014-02-11 13:07:42 · 5790 阅读 · 0 评论 -
Linux 对比文本文件
1. Without GUI1.1 diffdiff可以比较2个文件夹语法:diff [选项] file1 file2 说明:该命令告诉用户,为了使两个文件file1和file2一致,需要修改它们的哪些行。如果用“- ”表示file1或fiie2,则表示标准输入。如果file1或file2是目录,那么diff将使用该目录中的同名文件进行比较。例如: diff /usr/原创 2014-01-21 15:01:46 · 2631 阅读 · 0 评论 -
Sqlite3,C++开发详解
C/C++中调用SQLITE3的基本步骤Sqlite 是一个面向嵌入式系统的数据库,编译完成只有200K,同时支持2T的数据记录。对于嵌入式设备是一个很好的数据库引擎。本文通过一个小例子说明如何在C 与C++调用Sqlite API完成数据库的创建、插入数据与查询数据。本文的开发环境为(Redhat9.0 + Qtopia2.1.2 + Sqlite3)安装Sqlite3:从www转载 2013-12-24 14:48:48 · 1980 阅读 · 0 评论 -
Linux中find常见用法示例
·find path -option [ -print ] [ -exec -ok command ] {} \;find命令的参数;pathname: find命令所查找的目录路径。例如用.来表示当前目录,用/来表示系统根目录。-print: find命令将匹配的文件输出到标准输出。-exec: find命令对匹配的文件执行该参数所给出转载 2013-12-16 17:54:15 · 1060 阅读 · 0 评论 -
终端至上!将Vim打造成全新的集成开发环境
让GUI都玩儿蛋去!鼠标是你的敌人!只有键盘才是你唯一的朋友!如果把Vim和Tmux结合在一起会发生什么?你将拥有完美的编程环境!下面是我多年来珍藏的一些不传之秘,有了这些,你立刻就能轻松打造出属于你的Vim开发环境。Tmux相关Tmux速成班,这个不错,可以让你快速掌握如何开始使用Tmux。这是我的tmux.conf配置文件,它有一个定制状态栏,可以大大改进颜色主题、优化可读转载 2013-12-10 18:41:25 · 1794 阅读 · 0 评论 -
Linux C 网络编程——7.select poll epoll
上一节中我们讲到了IO复用,总结起来也就是分为同步和异步模型,以及阻塞和非阻塞模型,本文主要分析其中的异步阻塞模型。IO的复用可以通过select poll epoll实现1. select头文件:sys/select.h sys/time.hint select( int maxfd, fd_set *readset, fd_set *writeset, fd原创 2013-12-03 13:57:42 · 1969 阅读 · 0 评论 -
C++程序内存分配详解
1. 硬盘中的结构——程序首先在Linux下查看一下test文件的信息:[root@localhost Ctest]# file test //此文件基本情况test: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV),for GNU/Linux 2.2.5, dynamically linked (uses sh原创 2013-10-19 11:13:22 · 2035 阅读 · 0 评论 -
Linux C 网络编程——6. IO阻塞、非阻塞、复用、信号驱动、异步驱动
在Linux中进程空间和内核空间是分开的,系统调用是在Kernel中,IO 数据会先复制到进程空间,这样进程才能访问。所以Linux I/O分为2个步骤:等待数据和复制数据1. 阻塞I/O(Blocking IO)socket的默认方式。请求IO进程(recvfrom)会一直处于阻塞状态,这种效率极低。2. 非阻塞IOrecvfrom不会阻塞,通过不断查询K原创 2013-11-05 18:27:49 · 2675 阅读 · 0 评论 -
Linux C 网络编程——5. 并发服务器
1. 原理在Linux C 网络编程——4. 简单TCP Socket程序中实现了一个最基本的基于TCP的CS通信,这里介绍一种可以允许Server端可以同时处理多个请求(并发服务器)。原理:每次accept服务器调用fork(),创建一个子进程处理请求。2. 实现只需要修改上一篇文章中的Server.c的while循环即可while(1){ addr_原创 2013-11-05 17:26:05 · 2526 阅读 · 0 评论 -
Linux 安装 libreoffice
Linux 系统中体验最不好的估计就是office软件了。但是在WPS发布之后,这种情况无疑改善了许多。但是对于有些系统来说依然装不上WPS,比如CentOS, Ubuntu 10.04等,这是由于WPS需要的libc等库的版本相对于CentOS来说实在太高了。此时可以选择libreoffice或openoffice,推荐libreoffice。以CentOS 6为例(同样适用于:RHEL原创 2013-11-03 18:47:14 · 4444 阅读 · 0 评论 -
修复小米(miui)IPv6问题
原因问题出现的原因是手机的一个启动脚本/init.qcom.sh中有这么一段:## Suppress default route installation during RA for IPV6; user space will take# care of this#for file in /proc/sys/net/ipv6/conf/*doecho 0 > $转载 2013-11-17 10:06:05 · 10128 阅读 · 1 评论 -
vim 代码折叠设置
vim折叠的方式有6种,如下:1. manual //手工定义折叠2. indent //用缩进表示折叠3. expr //用表达式来定义折叠4. syntax //用语法高亮来定义折叠5. diff //对没有更改的文本进行折叠6. marker //用标志折叠可以通过:原创 2014-05-15 14:59:16 · 2697 阅读 · 0 评论 -
Linux C 网络编程——4. 简单TCP Socket程序
根据图中的流程,实现一个最简单的TCP程序。1. 客户端功能:发送一个字符串给服务器/* ============================================================================ Name : SimpleSockTCPClient.c Author : wistone Versio原创 2013-11-03 15:31:43 · 9514 阅读 · 2 评论 -
Linux 线程(1)线程创建
1. 线程2.原创 2014-05-23 11:42:19 · 1269 阅读 · 0 评论 -
Linux C pipe函数 man 翻译
Linux C pipe函数 man 翻译翻译 2015-09-24 16:19:11 · 1242 阅读 · 0 评论 -
Android Native/Tombstone Crash Log 详细分析
Android 虽然已经有好几年了,但是NDK的开放速度却非常缓慢,所以目前网络上针对对Android NativeCrash的分析说明还比较少,尤其是非常详细的分析方式更难以查询。因此大部分程序员在遇到难以进行addr2line的crashlog时,会一筹莫展。事实上这份log中的其他部分同样提供了非常丰富的信息可供解读,所以在这里总结一下对在这方面的一些经验,在这里以Androidsample转载 2015-09-16 18:23:16 · 3200 阅读 · 0 评论 -
grub2的配置文件grub.cfg详解
注:一般修改/etc/default/grub文件,然后执行sudo update-grub来生成/boot/grub/grub.cfggrub.cfg 默认为只读,要修改前先设为可写sudo chmod +w /boot/grub/grub.cfgset default=0#更改为以下两项可以保存上次的默认启动项# GRUB_DEFAULT=saved# GRUB_SAV转载 2015-09-11 16:45:00 · 6035 阅读 · 0 评论 -
Linux stat详解(进程CPU,内存)
[root@localhost ~]# cat /proc/6873/stat 6873 (a.out) R 6723 6873 6723 34819 6873 8388608 77 0 0 0 41958 31 0 0 25 0 3 0 5882654 1409024 56 4294967295 134512640 134513720 3215579040 0 2097798转载 2015-07-22 18:23:36 · 1882 阅读 · 0 评论 -
Linux 查看文件夹大小,磁盘剩余空间(du/df)
1. 简介du查看目录大小,df查看磁盘使用情况。2. dudisk usage (1)基本功能 递归查看文件夹下所有文件的大小 (2)常用参数: -h, –human-readable 以可读性较好的方式显示尺寸(例如:1K 234M 2G) -s, –summarize 只分别计算命令列中每个参数所占的总用量 (3)其它参数说明: -a, –all 输出所有文件的磁盘用量,原创 2015-07-22 18:17:47 · 75438 阅读 · 0 评论 -
Linux vmstat详解(系统IO)
1. vmstat可以展现给定时间间隔的服务器的状态值,包括服务器的CPU使用率,内存使用,虚拟内存交换情况,IO读写情况 vmstat 2 10 2: 每隔2s 10 : 统计10次2. resprocs ———–memory———- —swap– —–io—- -system– ——cpu—– r b swpd free buff cache si so原创 2015-07-22 18:19:55 · 2066 阅读 · 0 评论 -
ADB logcat 过滤方法(抓取日志)
1. Log信息级别2. 过滤:指定标签,指定级别adb logcat [TAG:LEVEL ] [TAG3. 采用grep正则表达式过滤grep 正则表达式参见grep与正则表达式adb logcat | grep -E '^[VDE]/(TAG1|TAG2)'4. 在同时输出到屏幕和文件 tee想要把日志保存到文件,如果采用IO重定向,就无法输出到屏幕, 针对这个问题可以采用 tee命令adb logcat | grep -E '^[VDE]/(TAG1|TAG2)' | tee原创 2014-10-28 15:34:14 · 5491 阅读 · 0 评论 -
grep与正则表达式
1. grep 基本语法grep的作用就是搜索,与find不同的是:find用于搜索目录,文件名grep最根本上是用于检索文件内容,字符串等 grep [OPTIONS] PATTERN [FILE...] grep [OPTIONS] [-e PATTERN | -f FILE] [FILE...]OPTIONS:(最常用的)-a原创 2014-10-28 15:04:51 · 1515 阅读 · 0 评论 -
Android系统的智能指针实现原理分析
Android系统的运行时库层代码是用C++来编写的,用C++来写代码最容易出错的地方就是指针了,一旦使用不当,轻则造成内存泄漏,重则造成系统崩溃。不过系统为我们提供了智能指针,避免出现上述问题,本文将系统地分析Android系统智能指针(轻量级指针、强指针和弱指针)的实现原理。 在使用C++来编写代码的过程中,指针使用不当造成内存泄漏一般就是因为new了一个对象并且使用完之转载 2014-09-19 15:07:19 · 1346 阅读 · 0 评论 -
ubuntu 14.04 将窗口按钮移到右边
刚刚安装了Ubuntu 14.04,想修改窗口按钮的位置,但按照以前的办法发现不行了,在gconftool-->apps中找不到metacity。多方查找后找到解决方案,如下Ubuntu 14.04 - 12.10Unity: gsettings set org.gnome.desktop.wm.preferences button-layout ':minimize,maximi原创 2014-09-19 13:46:35 · 5475 阅读 · 0 评论 -
makefile赋值(:= ?= += =)
在Makefile中我们经常看到 = := ?= +=这几个赋值运算符,那么他们有什么区别呢?我们来做个简单的实验新建一个Makefile,内容为:ifdef DEFINE_VRE VRE = “Hello World!”elseendififeq ($(OPT),define) VRE ?= “Hello World! First!”endif转载 2014-07-31 15:08:36 · 1217 阅读 · 0 评论 -
进程与线程
摘要:本文详细分析了进程与线程的关系,只出进程是资源分配的基本单位,线程是CPU进行调度和分派的基本单位。1. 程序程序就是存放在存储设备上的各种可执行的文件。2. 进程2.1定义:程序运行以后,会在内存空间里形成一个独立的内存体,这个内存体有自己的地址空间,有自己的堆,上级挂靠单位是操作系统。操作系统会以进程为单位,分配系统资源,(1)进程是一个可拥有资源的独立单位;(2)进程同时又是一个可独立调度和分派的基本单位。2.2组成:进程 = PCB(Process Con原创 2013-06-28 15:18:48 · 1327 阅读 · 0 评论 -
Unix/Linux时间函数和日历函数
Unix/Linux都是采用UTC(Universal Coordinated Time),1970.1.1到现在的秒数,采用time_t(long int)存储1. 时间结构体都是定义在time.h头文件中时间:time_t, timeval, time_spec, 精度越来越高日历:tm1.1 time_ttypedef long time_ttime_t表原创 2013-11-21 15:20:51 · 2019 阅读 · 0 评论 -
Linux select使用与分析
Select在Socket编程中还是比较重要的,可是对于初学Socket的人来说都不太爱用Select写程序,他们只是习惯写诸如connect、accept、recv或recvfrom这样的阻塞程序(所谓阻塞方式block,顾名思义,就是进程或是线程执行到这些函数时必须等待某个事件的发生,如果事件没有发生,进程或线程就被阻塞,函数不能立即返回)。可是使用Select就可以完成非阻塞(所转载 2014-05-23 14:15:14 · 1161 阅读 · 0 评论 -
unistd.h
unistd.h 是 C 和 C++ 程序设计语言中提供对 POSIX 操作系统 API 的访问功能的头文件的名称。该头文件由 POSIX.1 标准(单一UNIX规范的基础)提出,故所有遵循该标准的操作系统和编译器均应提供该头文件(如 Unix 的所有官方版本,包括 Mac OS X、Linux 等)。对于类 Unix 系统,unistd.h 中所定义的接口通常都是大量针对系统调用的封装(英语转载 2013-10-30 16:09:16 · 1758 阅读 · 0 评论 -
Linux C 网络编程——1. 大端序和小端序
1. 字节序数据在内存中有2种存放方式:大端序(Big-Endian):低位字节放在高位地址小端序(Little-Endian):相反x86系列则采用little endian方式存储数据如:0x12345678数据以8bit位单位,在内存中的存储如下:Big Endian 低地址原创 2013-10-30 18:53:07 · 2725 阅读 · 0 评论 -
Linux C 网络编程——3. TCP套接口编程
1. 基本流程2. socket()int socket(int domain, int type, int protocol);socket()打开一个网络通讯端口,如果成功的话,就像open()一样返回一个文件描述符,应用程序可以像读写文件一样用read/write在网络上收发数据,如果socket()调用出错则返回-1。(1)domain:AF_INET:IP原创 2013-10-30 19:58:54 · 2846 阅读 · 0 评论 -
在64位Linux系统交叉编译32位软件:ffmpeg
在64位Linux系统中,如果不加设置,直接编译出来的软件是64位的,如果需要编译32位版本可以这么做:./configure --prefix=../ --extra-cflags="-m32" --extra-ldflags="-m32"makemake install原创 2013-04-17 16:23:49 · 6710 阅读 · 0 评论 -
emacs笔记三:调试程序
如果直接采用GDB调试程序,将会很痛苦,你会很怀念VC的调试功能。也有人在vim上安装插件,扩展GDB的功能,但是我比较懒,所以就选择了Emacs的GDB调试功能。1. 可调试内容GDB可以的,emacs就行(99%)。(如果碰到不行,想想办法)2. 打开被调试程序我觉得这个没什么说的,可以用鼠标选,也可以C-x d path 输入路径。3. Tool原创 2013-04-22 17:07:12 · 1512 阅读 · 0 评论 -
emacs笔记二: 高级操作
1. 搜索C-s 向前搜索C-f 向后搜索再次按下命令(C-s)察看下一个, Backspace 察看上一个Enter 结束搜索,停留在当前位子C-g 结束搜索,停留在第一个结果。2. 窗口C-x 1 保留光标所在窗口,关闭其他窗口C-x 2 上下分割窗口C-x 3 左右分割窗口C-x原创 2013-04-22 16:54:26 · 1276 阅读 · 0 评论 -
emacs笔记一:基本操作
1. 翻页C-v : pagedownM-v : pageup 2. 移动字符: C-p C-b.................pos.................C-f C-n词:(首---------------------------------尾)原创 2013-04-11 14:44:48 · 1293 阅读 · 0 评论 -
GDB print 详解
print命令的格式是: print xxx p xxx1. print 操作符 @ 是一个和数组有关的操作符,在后面会有更详细的说明。 :: 指定一个在文件或是一个函数中的变量。 {} 表示一个指向内存地址的类型为type的一个对象。2. 察看内容 全局变量(所有文件可见原创 2013-04-08 11:07:00 · 4547 阅读 · 0 评论