红联Linux门户

Linux帮助
  • linux静态库和动态库演示比较

    2015-11-12 - 下面以工程libtest为例说明gcc创建和使用静态库、动态库的过程,libtest目录结构和内容如图1所示,其中三个文件hello.h,hello.c和main.c的内容如下。 图1 libtest/include/hello.h #ifdef _HELLO_H_ #define _HELLO_H_ void hello(); #endif libtest/lib/he...

  • 基于linux内核制作linux系统基于linux内核制作linux系统

    2015-11-12 - 环境和工具: 编译环境: Ubuntu 15.04 工具:Buildroot-2015.08.1 (http://buildroot.uclibc.org/) Qemu 源码: 引导程序:grub-0.97-i386-pc.tar.gz 文件系统: busybox-1.23.2 虚拟机:virtual box 一、使用buildroot制作编译工具链 buildroot 会自动通过网...

  • 程序员应该坚决避免的十种编程坏毛病程序员应该坚决避免的十种编程坏毛病

    2015-11-12 - 在软件开发的领域中,这个有害的编程习惯基本上都是由不良的编码习惯造成的,只有能改变这些不良习惯,你的工作起来会更轻松更有效率。 1.总出现错误的变量名和函数名拼写 让很多人想不通的是,为什么大家都知道这个习惯对自己没有好处,为什么还是有人让他...

  • linux上传测试脚本

    2015-11-10 - 1,支持一键上传。 2,自动生成指定大小上传文件。上传完成后,自动删除。 3,支持代理模拟上传。 4,里面的up脚本 if [ $1 = ]; then echo sh uptest 3600 upload.qiniu.com ip filesize exit 1 else dd if=/dev/zero of=$4M.file bs=1m count=$4 let time=...

  • 老程序员推荐的10个编程策略老程序员推荐的10个编程策略

    2015-11-10 - 1.橡皮鸭debug法 也许大家都有过这样的经历,那就是当你在和别人讨论问题时,突然就有了答案和别的想法,这是因为当你和别人一起讨论时会让你的大脑重新组织问题,这样的情况下,你的聊天对象就是橡皮鸭。所以我们每个人都应该积极主动的成为对方的橡皮鸭,...

  • shell中的字符串、数组、数字操作

    2015-11-09 - (1)字符串: file=/dir1/dir2/dir3/my.file.txt 我们可以用 ${ } 分别替换获得不同的值: ${file#*/}: 拿掉第一条 / 及其左边的字串:dir1/dir2/dir3/my.file.txt ${file##*/}:拿掉最后一条 / 及其左边的字串:my.file.txt ${file#*.}: 拿掉第一个 . 及其...

  • Linux中,利用bash的alias简化操作

    2015-11-08 - 默认情况下,在$HOME/.bashrc定义了一系列的alias,用来简化操作,如常用的ls的别名: # some more ls aliases alias ll=ls -alF alias la=ls -A alias l=ls -CF 如果存在~/.bash_aliases文件,则会载入这个文件里面所有的alias的定义,该文件的格式和上面的...

  • 如何使我设置好setuid的shell脚本运行起来呢?

    2015-11-08 - 如何使我设置好setuid的shell脚本运行起来呢?[这个说起来有点复杂,但绝对是一个经常被提及的问题。感谢Maarten Litmaath为此做出的解答,同时感谢下面提到的indir项目组。] 我们首先假设你在一台UNIX的机器(例如:4.3BSD或者SunOS)旁边,并且了解所谓的...

  • 使用sbt构建IndexedRDD开发环境

    2015-11-07 - 1.开发环境 软件 版本号 Ubuntu 15.04 JDK 1.7.0_79 Scala 2.10.4 spark-assembly 1.3.1-hadoop2.4.0 注意:这里spark-assembly-1.31.-hadoop2.4.0必须要用scala2.10.4,用其他高版本会报错。 2.linux 下安装sbt 配置Intellij环境 linux安装sbt详细过程见这...

  • linux操作系统中对大小端的判断

    2015-11-07 - (如果ENDIANNESS=l表示系统为little endian,为b表示big endian )。 int main(void) { static union { char c[4]; unsigned long l; } endian_test = {{l, ?, ?, b}}; #define ENDIANNESS ((char)endian_test.l) printf(ENDIANNESS:%c/n, ENDIANNESS); // Out...

  • gettext国际化用法示例

    2015-11-06 - 安装gettext sudo yum install gettext gettext工具 gettext: 进行translate。 xgettext: 从程序中抽取调用gettext进行本地化的字符串,生成一份.po结尾的配置文件。 msgfmt: 将配置好的本地化配置文件进行转换成gettext使用的格式。 准备demo.py #encoding=...

  • Linux中的静态库和动态库简介及生成过程示例Linux中的静态库和动态库简介及生成过程示例

    2015-11-06 - 在实际的软件开发项目中,不是每一行代码都需要我们亲自写。在我们的软件产品中,有一些代码(尤其是函数)的出现频率很高,它们可以被当作公共代码来反复使用。为了避免重复劳动,我们就把这些公共代码编译为库文件,供需要的程序调用。在Linux中,库分为静态...

  • Linux系统调用的添加

    2015-11-05 - 1.下载内核源码2.6.36.4 2.建立文件夹~/linux/linux-dirty cd ~linux/linux-dirty把解压缩后的内核源码存入此目录 qian@ubuntu:~/linux/linux-dirty$ ls arch crypto fs Kbuild Makefile REPORTING-BUGS sound block Documentation include kernel mm sample...

  • Linux设备驱动简易框图Linux设备驱动简易框图

    2015-11-05 - 最近读了一些网上对Linux 设备模块解释的文章,对linux 设备原理有了初步的了解。 现以下图作以学习成果记录。 一.建立bus 任何一个Device 都是要利用bus 来进行通信的。所以在你要在建立一个Device之前要确定它属于哪个bus。在没有现成的bus可以利用的情况...

  • linux中使用completion实现等待队列

    2015-11-05 - 1.建立等待队列 在include/linux/completion.h中对completion的定义如下 struct completion { unsigned int done; wait_queue_head_t wait; }; 其中wait就是一个等待队列头的建立。 定义方法:struct completion myWait; 可使用空定义定义:DECLARE_COMPLETI...

  • 控制Linux下mono服务的启动停止

    2015-11-05 - 当Window下的服务部署到Linux的时候,我们一般用Mono.service 来启动停止。参数比较多,不太好用。于是有个这个Shell脚本。 用法:moa s1 start #启动 moa s1 stop # 停止 要求有如下的目录结构: /opt/basepath/ s1/ sample1.exe #服务1,文件名称不限 s2/...

  • 用shell写一个从1加到100的程序

    2015-11-04 - 用shell写一个简短的程序,实现1+2+...+100的功能。 方法一: #!/bin/bash sum=0 for i in {1..100} do let sum+=$i done echo $sum 方法二: #!/bin/bash sum=0 for i in {1..100..1} do let sum+=$i done echo $sum 方法三: #!/bin/bash sum=0 for ((i=1;...

  • shell脚本删除N天前的文件夹-----附linux和mac上date命令的不同

    2015-11-03 - 背景: 每日构建的东西,按日期放到不同的文件夹里。如今天的构建放到2015-06-01里,明天的就放到2015-06-02里,依次类推。时间久了,需要一个脚本删除N天前的文件夹。(本例中N=7,即删除一周前的构建)。 下面直接上代码,linux版: #! /bin/bash historyDir...

  • Linux有问必答:如何找出Linux中内置模块的信息Linux有问必答:如何找出Linux中内置模块的信息

    2015-11-02 - 提问:我想要知道Linux系统中内核内置的模块,以及每个模块有哪些参数。有什么方法可以得到内置模块和设备驱动的列表,以及它们的详细信息呢? 现代Linux内核正在随着时间变化而迅速增长,以支持大量的硬件、文件系统和网络功能。在此期间,可加载模块(load...

  • Linux上好用的R语言IDELinux上好用的R语言IDE

    2015-11-01 - 前一段时间,我已经介绍过 Linux 上针对 C/C++ 语言的最好 IDE(http://xmodulo.com/good-ide-for-c-cpp-linux.html)。很显然 C 或 C++ 并不是现存的唯一的编程语言,是时间讨论某些更加特别的语言了。 假如你做过一些统计工作,很可能你已经见识过 R 语言...

  • 在centos 6上的helloworld模块测试

    2015-11-01 - [root@localhost test]# ls helloworld.c Makefile [root@localhost test]# make make -C /lib/modules/2.6.32-71.29.1.el6.i686/build M=/home/android/test modules make[1]: Entering directory `/usr/src/kernels/2.6.32-71.29.1.el6.i686 CC [M] /home/...

  • 开启linux内核自带的模拟i2c-gpio模块过程

    2015-11-01 - 首先我们要知道内核的makefile是根据配置文件,也就是kconfig来决定是否编译一个文件的。 如果没有配置内核编译它,就不会生成.o文件。 自然就不会打开这个模块了。 如下是Kconfig 文件部分 # Embebbed system I2C/SMBus host controller drivers obj-$(CONF...

  • linux c获取硬盘的序列号

    2015-11-01 - 获取硬盘序列号的方法 找到指定硬盘的设备文件(如果是根目录的话,可以通过读取 /etc/mtab 文件获取),打开对应的设备文件。然后使用系统调用ioctl。 在这里 ioctl 的第二个参数为 HDIO_GET_IDENTITY (获得指定文件描述符的标志号) 第三个参数为 struct...

  • linux c获取网卡状态(UP or DOWN)

    2015-11-01 - 源码如下: #include sys/socket.h #include sys/ioctl.h #include linux/if.h #include string.h #include stdio.h char *net_detect(char* net_name) { int skfd = 0; struct ifreq ifr; skfd = socket(AF_INET, SOCK_DGRAM, 0); if(skfd 0) { printf(%s:%...

  • linux c操作utmp和wtmp文件接口

    2015-11-01 - /var/run/utmp 保存当前在本系统中的用户信息 /var/log/wtmp 保存登陆过本系统的用户信息 他们保存的信息是基于结构体 struct utmp 的(/usr/include/bits/utmp.h) utmp 结构体定义如下: struct utmp { short int ut_type; //登录类型 pid_t ut_pid; //log...

  • 初识linux expect

    2015-10-31 - expect是一个用来实现自动交互功能的软件套件。使用它可以创建脚本用来实现对命令或程序提供输入,而这些命令和程序是期望从终端(terminal)得到输入,一般来说这些输入都需要手工输入进行的。expect则可以根据程序的提示模拟标准输入提供给程序需要的输入...

  • 关于程序运行时加载动态库失败的解决方法

    2015-10-31 - 错误提示如下: error while loading shared libraries: libjson.so.0: cannot open shared object file: No such file or directory 原因一般有两个,一个是操作系统中没有包含该共享库(lib*.so.* 文件)或者共享库版本不对。解决办法就是重新下载安装。 另...

  • 成为专业程序员的6个技巧成为专业程序员的6个技巧

    2015-10-31 - 1.在你责怪别人之前,先检查自己的代码 先想一想自己的假设和其他人的假设。来自不同供应商的工具可能内置不同的假设,即便是相同的供应商对于不同的工具,其假设也可能不同。 当其他人正在报告一个你不能重复的问题的时候,去看看他们在做什么。他们可能会...

  • linux c实现字符串替换

    2015-10-31 - 实现如下: strongspan style=font-family:KaiTi_GB2312;font-size:24px;#includestdio.h #includestring.h /* str_find 被搜索的字符串 str_src 要查找的值 str_des 替换 str_find 中的值的值 */ int str_replace(char* str_find,char* str_src, char* str_...

  • linux文件特殊权限

    2015-10-31 - 最近准备找工作复习一下基础知识,写了一个很简单的open函数。 #includesys/types.h #includesys/stat.h #includefcntl.h #includestdio.h int main(void) { int fd; fd = open(./test, O_RDONLY|O_CREAT); if (fd == -1) printf(文件打开错误); printf ( %d...

  • 使用openssl实现md5加密

    2015-10-31 - OpenSSL 是一个强大的安全套接字层密码库,囊括主要的密码算法、常用的密钥和证书封装管理功能及SSL协议,并提供丰富的应用程序供测试或其它目的使用。 要使用openssl,首先安装openssl库: apt-get install openssl libssl-dev libssl-doc libcurl4-openssl...

  • linux c/c++帮助

    2015-10-30 - 1.安装C的帮助手册 如果你使用的Linux发行版, 默认没有安装C语言的库函数MAN手册, 使用下面的方法解决: # sudo apt-get install manpages # sudo apt-get install manpages-de # sudo apt-get install manpages-de-dev # sudo apt-get install manpages-dev...

  • linux中注册共享中断

    2015-10-28 - 共享中断,意思是多个中断共享一个中断号,那么这就意味着,多个设备中断发生时,都会产生一个同样的中断信号。那么怎么在linux下进行检测和处理呢?同时需要注意哪些事项? 1、首先,注册共享中断时,request_irq()函数中的flags标志必须指定为IRQF_SHARED...

  • 深层解决cramfs文件系统不支持nandflash坏块的解决办法深层解决cramfs文件系统不支持nandflash坏块的解决办法

    2015-10-28 - 今日在对公司的产品调试时,发现如果nandflash有坏块在cramfs文件系统分区,那么linux系统无法启动,提示如下信息: uncorrectable error : uncorrectable error : end_request: I/O error, dev mtdblock0, sector 512 Buffer I/O error on device mtdblock0...

  • linux daemon进程为什么要fork 2次?

    2015-10-27 - daemon进程是后台守护进程,有时候也叫精灵进程(agent).linux 下server都是daemon进程。相信大部分开发人员都知道如何去写一个daemon进程。但是另一方面,大部分人不知道为什么要这么做,不少人是从某个地方copy一个函数,拿来主义。但是具体为什么这么实现...

  • 使用commons-daemon启动、关闭java程序

    2015-10-27 - 系统环境:CentOS 7 X64、JDK1.8 一:安装jsvc 下载 commons-daemon的源码包 http://apache.fayea.com//commons/daemon/source/commons-daemon-1.0.15-src.zip 解压之后 cd src/native/unix/ 执行: export CFLAGS=-m64 export LDFLAGS=-m64 注意:这2句代码...

  • 你应该成为Web开发者的5大理由你应该成为Web开发者的5大理由

    2015-10-27 - 现在的职业选择是如此之繁多,很多人往往不知道自己要干什么工作。作为一个已经在软件行业淫浸差不多14年时间的资深人士,我发现web开发这个职业选择,渐渐成为了大众普遍的首...

  • 在linux下设置共享库路径

    2015-10-24 - 1、定义 Linux环境变量名,该环境变量主要用于指定查找共享库(动态链接库)时除了默认路径之外的其他路径。(该路径在默认路径之前查找) 移植程序时的经常碰到需要使用一些特定的动态库,而这些编译好的动态库放在我们自己建立的目录里,这时可以将这些目录...

  • 安卓系统学习--获取Google安卓系统源码安卓系统学习--获取Google安卓系统源码

    2015-10-24 - 1.安装git curl sudo apt-get install git-core curl 2.mkdir /bin PATH=~/bin:$PATH 3.$ curl https://storage.googleapis.com/git-repo-downloads/repo ~/bin/repo chmoda+x /bin/repo4. mkdir -p workspace/android/android4.4.2 $ cd workspace/android/...

  • linux下编译C程序

    2015-10-24 - 由于这学期要上操作系统课,老师说需要自己写程序在Linux上跑,并且由于与底层之类的东西相关,所以语言也必须要用C了,于是乎,一不做二不休,立马在ubuntu上开始编起C的程序来. 先是看了看书上介绍的一些编辑器,二话不说把Vim,Emacs,KWrite等编辑器先装了起来.(...