
Linux
文章平均质量分 52
a_ran
程序员,公众号:进击的代码
展开
-
关于 Linux 内核“合规要求”与俄罗斯制裁的一些澄清
当一些俄罗斯的 Linux 开发者被从内核的 MAINTAINERS 文件中移除时,原因被描述为“合规要求”,但并未明确这些要求具体涉及什么内容。今天,这些 Linux 内核的新“合规要求”终于有了更多的解释。原创 2024-10-25 14:08:30 · 1244 阅读 · 0 评论 -
如果 Linux 这么好,为什么没有更多的人使用它呢?
Linux 甚至是免费的,如果它真的更好,那么是什么阻碍了它的大规模普及呢?这个世界上充满了免费的自我提升机会,但大多数人绝大部分时间都选择忽略它们。原创 2024-09-20 13:45:11 · 482 阅读 · 0 评论 -
libiconv arm移植
libiconvThis library provides an iconv() implementation, for use on systems which don’t have one, or whose implementation cannot convert from/to Unicode.下载http://ftp.gnu.org/pub/gnu/libico原创 2015-04-25 22:33:47 · 3913 阅读 · 0 评论 -
curl arm移植
curlcurl is a command line tool and library for transferring data with URL syntax, supporting DICT, FILE, FTP, FTPS, Gopher, HTTP, HTTPS, IMAP, IMAPS, LDAP, LDAPS, POP3, POP3S, RTMP, RTSP, SCP, SF原创 2015-04-26 07:48:44 · 3603 阅读 · 0 评论 -
libini arm移植
libiconvAn INI file parser that can read, edit and create large INI files. Usable under Microsoft Windows, DOS, Linux, etc. Supported languages are C, C++, Visual Basic, Java, TCL, Perl, Python, e原创 2015-04-26 07:47:13 · 2605 阅读 · 0 评论 -
libpcap arm移植
libpcapa portable C/C++ library for network traffic capture.下载http://www.tcpdump.org/#latest-release或者到这里:http://download.youkuaiyun.com/detail/chinaeran/8631799编译注:此处使用 arm-linux-gnue原创 2015-04-26 07:44:34 · 5086 阅读 · 0 评论 -
linux kernel Kconfig warning: leading whitespace ignored
自己在测试往内核添加模块时,用 make menuconfig 配置结果警告如下:原因是这个测试的Kconfig文件中的 comment值前有空格,如下:去掉这个空格就好了,实际上,menu 的值如果前面有空格,也会报这个警告。原创 2015-04-14 18:03:48 · 2388 阅读 · 0 评论 -
Linux socket 网络编程常见问题总结
网络编程常见问题总结 串讲(一) 网络编程常见问题总结 6 I& I! E- x8 Z+ p- U- B 在网络程序中遇到的一些问题进行了总结, 这里主要针对的是我们常用的TCP socket相关的总结, 可能会存在错误, 有任何问题欢迎大家提出. . e3 Y0 @* _- e1 G- B% R 对于网络编程的更多详细说明建议参考下面的书籍 《UNIX网络编程》 《转载 2015-03-06 16:17:56 · 5067 阅读 · 0 评论 -
git commit --amend 修改还未提交到远程分支的 commit 信息
有时候用 git commit -m 提交时,可能没写好或者误操作导致提交的信息不合适,但你还没有 push 到远程分支时,可以使用 git commit --amend 修改上一次的提交信息。操作示例 如下:git commit --amend 后会出现编辑界面,如下可以在最上面红框的地方,修改要提交的信息,然后按Ctrl + o (WriteOut),如原创 2015-03-05 19:22:04 · 6070 阅读 · 0 评论 -
Linux socket 阻塞与非阻塞,同步与异步、I/O模型
1. 概念理解 在进行网络编程时,我们常常见到同步(Sync)/异步(Async),阻塞(Block)/非阻塞(Unblock)四种调用方式:同步: 所谓同步,就是在发出一个功能调用时,在没有得到结果之前,该调用就不返回。也就是必须一件一件事做,等前一件做完了才能做下一件事。例如普通B/S模式(同步):提交请求->等待服务器处理->处理转载 2015-03-05 17:05:39 · 5700 阅读 · 0 评论 -
Linux 下使用 wc 统计文件夹下所有文件的代码行数(包括子目录)
wc 命令用于统计文件内容的行数、单词数、字母数。但是如果想统计一个目录下所有文件的行数,wc 并没有提供递归统计。不过,可以结合 find 命令,例如:$ wc -l `find -name *.c`其中,-l 参数是统计行数,find -name *.c 是查找当前目录(包含子目录)下所有的C文件,` ` 是 shell 中的替换命令。当然,实现方法有很多,我只是觉得这原创 2015-02-25 18:43:11 · 38884 阅读 · 0 评论 -
Linux 线程调度与优先级设置
Linux内核的三种调度策略: 1,SCHED_OTHER 分时调度策略, 2,SCHED_FIFO实时调度策略,先到先服务。一旦占用cpu则一直运行。一直运行直到有更高优先级任务到达或自己放弃 3,SCHED_RR实时调度策略,时间片轮转。当进程的时间片用完,系统将重新分配时间片,并置于就绪队列尾。放在队列尾保证了所有具有相同优先级的RR任务的调度公平转载 2015-02-12 10:46:17 · 35463 阅读 · 1 评论 -
Linux 线程分离状态
线程的分离与结合 在任何一个时间点上,线程是可结合的(joinable),或者是分离的(detached)。一个可结合的线程能够被其他线程收回其资源和杀死;在被其他线程回收之前,它的存储器资源(如栈)是不释放的。相反,一个分离的线程是不能被其他线程回收或杀死的,它的存储器资源在它终止时由系统自动释放。线程的分离状态决定一个线程以什么样的方式来终止自己。在上面的例子中,我们采用转载 2015-02-10 20:09:12 · 2338 阅读 · 0 评论 -
gcc/g++/make 编译信息带颜色输出
如果编译一个项目错误警告太多,非常不好找,所以非常希望输出信息可以带有颜色。可是 gcc 4.9.0 之前的版本并不支持,很多情况下是不能替换编译器的,比如使用交叉编译器,也可以使用 colorgcc,但我觉得不是特别好,需要配置,如果使用Makefile还要更改编译器设置,所以我自己动手写了一个,效果还可以,源码在github上: https://github.com/china原创 2014-12-23 12:00:07 · 11768 阅读 · 2 评论 -
Linux gcc for 循环中 i=i++ 会造成死循环问题及 ++i / i++ 汇编分析
在把 Windows 程序移植到 Linux 时遇到了死循环,最后定位到了类似这种的语句 for (i = 0; i < 1; i = i++),别问我谁写的,为什么这么写(泪目!)。根据C语言的常识, i = i++ 应该等价于 i++, Windows 上确实是这样,但 Linux 不是,这应该是编译器差异造成的。--------------------------------------- 可 i 的分割线原创 2014-12-31 00:14:13 · 3889 阅读 · 6 评论 -
Linux C ftruncate 函数清空文件注意事项(要使用 lseek 重置偏移量)
之前有个要把打开的文件清空,然后重新写入的需求,但是使用 ftruncate(fd, 0)后,并没有达到效果,反而文件头部有了'\0',长度比预想的大了。究其原因是没有使用 lseek 重置文件偏移量,是我太天真了,以为清空文件就会从头开始写入。------------------------------------- 我是解释分割线 -----------------------------原创 2015-02-06 14:08:04 · 9745 阅读 · 1 评论 -
jsoncpp linux平台编译和 arm移植
jsoncppsoncpp is an implementation of a JSON (http://json.org ) reader and writer in C++. JSON (JavaScript Object Notation) is a lightweight data-interchange format. It is easy for humans to rea原创 2015-04-25 23:15:09 · 6491 阅读 · 4 评论 -
cconv arm移植
cconvcconv(pronunciation: see-conv.) is iconv based simplified-traditional chinese conversion tool. It is NOT only transcoding programm, but also TRANSLATE tools between the Simplified Chinese and原创 2015-04-25 22:35:28 · 1360 阅读 · 0 评论 -
oh-my-zsh git 慢/卡顿问题解决
在 oh-my-zsh 进入 包含 git 仓库目录时,会变的平时慢/卡顿如下图:原因是因为 oh-my-zsh 要获取 git 更新信息解决办法:设置 oh-my-zsh 不读取文件变化信息(在 git 项目目录执行下列命令)$ git config --add oh-my-zsh.hide-dirty 1效果如下图:如果你还觉得慢,可以再设置 oh-原创 2017-06-02 19:02:07 · 30602 阅读 · 4 评论 -
CentOS 6 升级 gcc 和 g++ 的方法
CentOS 6 系统自带的 gcc 或者 g++ 的版本是:g++ (GCC) 4.4.6. GCC 版本太旧,导致了很多使用上的不便,如:无法使用g++ -std=c++11 命令来编译 C++11、无法使用Vim的很多插件(YouCompleteMe等)。因此,有必要对它进行升级。对 GCC 升级无法直接使用:yum update gcc以下是升级的详细过程。转载 2017-08-03 16:23:23 · 2264 阅读 · 0 评论 -
linux 下好用的 git 代码查看工具
在 git 合并两个分支产生冲突时,需要手动合并,而有些时候并不是很容易对比出该怎么合并,这就需要 git 代码查看工具来对比两个分支中当时同时修改了什么,该怎么合并以前项目有 redmine git 网站,现在发现 giggle 或 gitg 也很好用,特此记录注:个人更推荐 giggle,因为 gitg 查看代码时并不能查找(醉),giggle 浏览代码更方便安装方法:查看原创 2017-07-19 15:53:36 · 4551 阅读 · 0 评论 -
线程创建 pthread_create 中自定义参数注意事项
1. 函数原型intpthread_create(pthread_tthread, const pthread_attr_tattr, void(start_routine) (void), voidarg);本文主要讨论最后一个参数,同时传递多个的问题(如果只传递一个 int char 等长度小于指针的数据类型,可以直接传,然后在线程内把 (v原创 2017-02-10 18:34:10 · 5178 阅读 · 1 评论 -
Linux C语言 格式化输出时间函数 strftime()
今天在做根据日期时间+ID作为文件名存储时,用到了格式化时间的要求,如果单纯用struct tm这个结构体中获取到的信息来拼接字符串的话,如果是个位数,则不会在前面补0,比如我需要的是20130306,如果采用snprintf拼接字符串时获取到的时201336,这与我之前设想的有所不同,记得以前曾经自己实现过一个格式化的函数,但是比较繁琐。于是google了一下竟然还真有一个这样的函数:strft转载 2014-11-13 09:28:14 · 9247 阅读 · 1 评论 -
Linux中内存buffer和cache的区别
细心的朋友会注意到,当你在linux下频繁存取文件后,物理内存会很快被用光,当程序结束后,内存不会被正常释放,而是一直作为caching.这个问题,貌似有不少人在问,不过都没有看到有什么很好解决的办法.那么我来谈谈这个问题.先来说说free命令[root@server ~]# free -m total used free转载 2016-01-13 18:28:06 · 5894 阅读 · 0 评论 -
Linux C 网络编程 - 获取本地 ip 地址,mac,通过域名获取对应的 ip
获取本地 ip 地址,mac,通过域名获取对应的 ip,是网络编程可能遇到的比较常见的操作了,所以总结如下(封装了3个函数),直接上代码:#include #include #include #include #include #include #include #include #include #include #include #define MAC_S原创 2014-12-11 20:15:03 · 9561 阅读 · 0 评论 -
SecureCRT 配置 - Linux终端、颜色、透明效果
SecureCRT 安装好后,白底黑字,不透明,ls 没颜色,看起来相当不爽,先看下配置好后的效果吧 :)1. 设置终端主题,黑底白字选全局配置默认会话颜色主题和字符编码保存2. 设置字符颜色和终端类型选择 Linux,勾选 ANSI Color3. 设置透明效果数值越小越透明原创 2015-11-14 14:23:49 · 12779 阅读 · 0 评论 -
Linux fork 后 wait 获取子进程结束的状态示例
使用 fork 后,可能需要获取 fork 的进程的运行状况,比如有没有异常、崩溃。wait 在 man 中关键的描述如下:All of these system calls are used to wait for state changes in a child of the calling process, and obtain information about the child原创 2015-07-01 23:18:52 · 3977 阅读 · 0 评论 -
Linux 最简单内核模块 Hello World 示例
注:如果想要按照本篇实践,需要有能运行的arm开发板和对应版本的内核(如果想在Linux主机上编译运行,请参考附1)1. 在相应版本内核的driver目录下新建如下文件:module file tree其中文件代码如下:/*hello.c*/#include #include static int hello_init(void){ pr原创 2015-04-28 08:38:33 · 10244 阅读 · 3 评论 -
json-c arm移植
json-cJSON-C implements a reference counting object model that allows you to easily construct JSON objects in C, output them as JSON formatted strings and parse JSON formatted strings back into th原创 2015-04-25 23:10:35 · 5749 阅读 · 1 评论 -
代码静态分析工具 - splint的学习与使用
引言最近在项目中使用了静态程序分析工具PC-Lint,体会到它在项目实施中带给开发人员的方便。PC-Lint是一款针对C/C++语言、windows平台的静态分析工具,FlexeLint是针对其他平台的PC-Lint版本。由于PC-Lint/FlexeLint是商业的程序分析工具,不便于大家对其进行学习和使用,因而下面我将介绍一个针对C语言的开源程序静态分析工具——splint。静转载 2015-01-14 16:22:39 · 1983 阅读 · 0 评论 -
linux 程序、动态库、静态库内部添加版本号和编译时间
给程序和库添加版本号和库,有利于维护和升级。当然你可以在文件名上体现,比如有个程序叫 yun,文件名写为 yun_1.0.2,但这个需要每次手动维护,而且不能100%确保当前程序就是那个版本。所以,把版本号体现在程序内部,是一个不错的选择。----------------------------------- 我是做法分割线 o ----------------------------原创 2015-01-30 09:18:35 · 13515 阅读 · 0 评论 -
Linux系统编程之访问文件夹及其文件属性
1. 文件夹操作:opendir, readdir, closedir2. 文件属性:lstat代码示例如下实现功能:获取指定文件夹下所有的文件(使用递归),因此就能计算所有文件大小之类的啦。。。#include #include #include #include #include #include #include #include #define BUF_原创 2014-08-19 20:33:02 · 1760 阅读 · 0 评论 -
使用gdbserver远程调试
gdbserver工具先确定默认crosstool交叉编译器是否有自带gdbserver,如果有就不需要自行编译。一般都会带有对应的gdbserver工具,可以通过find命令查找确定:?12345678910hong@ubuntu:~/work/sy转载 2014-08-06 17:34:02 · 1830 阅读 · 0 评论 -
ubuntu/linux mint 创建proc文件的三种方法(三)
在做内核驱动开发的时候,可以使用/proc下的文件,获取相应的信息,以便调试。大多数/proc下的文件是只读的,但为了示例的完整性,都提供了写方法。方法一:使用create_proc_entry创建proc文件(简单,但写操作有缓冲区溢出的危险);方法二:使用proc_create和seq_file创建proc文件(较方法三简洁);方法三:使用proc_create_data和seq_file创建proc文件(较麻烦,但比较完整);示例四:在proc文件中使用内核链表的一个示例(用的方法三)。原创 2014-07-10 02:53:48 · 9957 阅读 · 2 评论 -
ubuntu/mint 使用cmake报找不到zlib和openssl库错误的解决办法
1. 先安装zlib库:原创 2014-08-03 19:00:03 · 4908 阅读 · 0 评论 -
ubuntu/linux mint 创建proc文件的三种方法(四)
在做内核驱动开发的时候,可以使用/proc下的文件,获取相应的信息,以便调试。大多数/proc下的文件是只读的,但为了示例的完整性,都提供了写方法。方法一:使用create_proc_entry创建proc文件(简单,但写操作有缓冲区溢出的危险);方法二:使用proc_create和seq_file创建proc文件(较方法三简洁);方法三:使用proc_create_data和seq_file创建proc文件(较麻烦,但比较完整);示例四:在proc文件中使用内核链表的一个示例(用的方法三)。原创 2014-07-10 02:57:11 · 2860 阅读 · 0 评论 -
ubuntu/linux mint 创建proc文件的三种方法(二)
在做内核驱动开发的时候,可以使用/proc下的文件,获取相应的信息,以便调试。大多数/proc下的文件是只读的,但为了示例的完整性,都提供了写方法。方法一:使用create_proc_entry创建proc文件(简单,但写操作有缓冲区溢出的危险);方法二:使用proc_create和seq_file创建proc文件(较方法三简洁);方法三:使用proc_create_dat原创 2014-07-10 02:54:56 · 4338 阅读 · 0 评论 -
ubuntu/linux mint 创建proc文件的三种方法(一)
在做内核驱动开发的时候,可以使用/proc下的文件,获取相应的信息,以便调试。大多数/proc下的文件是只读的,但为了示例的完整性,都提供了写方法。方法一:使用create_proc_entry创建proc文件(简单,但写操作有缓冲区溢出的危险);方法二:使用proc_create和seq_file创建proc文件(较方法三简洁);方法三:使用proc_create_data和seq_file创建proc文件(较麻烦,但比较完整);示例四:在proc文件中使用内核链表的一个示例(用的方法三)。原创 2014-07-10 02:50:27 · 3880 阅读 · 0 评论 -
Android Jni层 创建 linux socket 出错问题解决
问题: 想在Jni层创建 udp socket 与服务端通信,但是没有成功,最后发现竟然是创建socket失败(代码如下)// create socket g_sd = socket(AF_INET, SOCK_DGRAM, 0); if (-1 == g_sd) { perror("socket()"); goto err_socket; }解决办法: 在原创 2014-07-04 08:04:09 · 3520 阅读 · 0 评论 -
ubuntu mint 安装博通bcm4312无线网卡驱动
方法是从一个博客上看到的,老忘记录一下。原创 2014-06-08 22:19:05 · 2563 阅读 · 0 评论