Linux
jwybobo2007
站在脚下看世界
展开
-
linux下不同库出现符号冲突的解决方式
在linux下开发时,可能会碰到不同库导出同名函数符号,导致行为异常的问题。举个例子:我的test.cpp需要链接以及,并且两个so库中都有一个同名的函数符号PrintInt,那在 test.cpp 中我想调用liba.so的PrintString时实际会调用函数符号呢?答案是根据链接顺序来。先链接先加载哪个库就会使用哪个库的符号。假设我们先链接加载的libb.so,那test实际会调用的就是libb.so中的PrintInt,这很明显不符合我们的期望,并且很可能会更一步导致crash。原创 2024-09-24 17:01:28 · 702 阅读 · 0 评论 -
linux下avi文件解析(附源码)
前段时间由于项目需要,要解avi文件,当时我第一时间想到用ffmpeg来处理,但想想觉得太大了,又是放到arm上跑的,感觉没必要。然后,搜索引擎上稍微搜了一下,没找到有用的示例,大部分都是利用windows的api进行读写,很明显linux下用不了。结果花了2-3天时间研究并写了一个avi文件的解封装代码,但是后来因某些原因没有去使用AVI了,所以代码也没进行后续的完善优化。这里贴出来供记录以及需原创 2012-06-18 16:57:18 · 5898 阅读 · 17 评论 -
测试指定udp端口是否可以绑定
// 测试指定udp端口是否可以绑定,WIN32下记得要先初始化WSAStartup bool udpBindTest(uint16_t port) { SOCKET sockfd = socket(AF_INET, SOCK_DGRAM, IPPROTO_IP); if (sockfd == INVALID_SOCKET) return false; struct soc原创 2013-02-18 17:06:01 · 2613 阅读 · 1 评论 -
linux最大打开描述符量修改
1.使用命令在bash中使用ulimit,仅对当前shell生效另外可以在bashrc等启动脚本里面加上ulimit的命令行2.使用函数在自己的程序中调用setrlimit来修改3.修改配置文件(没试过,看到别人写的)debian/redhat下修改/etc/security.limits.conf,增加类似如下两行:* soft nofile 4096* hard原创 2013-02-19 10:15:35 · 441 阅读 · 1 评论 -
(自用型)windows/linux网络编程通用跨平台头文件定义
#ifndef _SOCKET_TYPE_H#define _SOCKET_TYPE_H#ifdef _WIN32#include #define ERRNO (WSAGetLastError())#define NEEDBLOCK WSAEWOULDBLOCKtypedef int socklen_t;#else#include #include #include #i原创 2013-02-19 09:09:41 · 3125 阅读 · 0 评论 -
gdb分析coredump的几个常用命令介绍
1.info proc mappings显示各个模块(可执行程序、动态库等)segment映射的虚拟内存地址列表2.info register显示寄存器的值例:(gdb) info registerrax 0xdbbb6a00007f719b -2613378610517544549rbx 0x9e4b82c0 2655748800rcx 0x3 3rdx 0x0 0rsi原创 2020-12-09 10:35:22 · 829 阅读 · 0 评论 -
linux errno参考
#define EPERM 1 /* Operation not permitted */#define ENOENT 2 /* No such file or directory */#define ESRCH 3 /* No such process */#define EINTR 4 /* Interrupted system call */#define EIO 5 /* I/O error */#define ENXIO 6 /* No such device .原创 2020-11-30 23:50:47 · 397 阅读 · 0 评论 -
vscode编译调试linux c/c++
1.远程打开linux服务器上的开发工程文件夹(具体工程不进行介绍了),如:/home/user/my_pro2.在产生的 .vscode 文件夹下放置 launch.json,tasks.json 配置文件,内容如下:launch.json:{ "version": "0.2.0", "configurations": [ { // 工程项目名称 "name": "test1", "原创 2020-08-17 13:43:11 · 334 阅读 · 0 评论 -
linux下使用gclient工具报错的问题处理
Your PATH contains a literal "~", which works in some shells but will break when python tries to run subprocesses. Replace the "~" with $HOME.如果出现如上的错误,说明在 exportdepot_tools的路径时,使用了~符号来表示用户文件夹,而p...原创 2020-01-04 17:35:26 · 1309 阅读 · 0 评论 -
RTP封装h264
文章部分借用网上搜索到的资料网络抽象层单元类型 (NALU):NALU头由一个字节组成,它的语法如下: +---------------+ |0|1|2|3|4|5|6|7| +-+-+-+-+-+-+-+-+ |F|NRI| Type | +---------------+F: 1原创 2011-12-08 17:41:17 · 27345 阅读 · 9 评论 -
Linux下利用双网卡构建网关截获数据包
eth0 作为其它设备网关(我的网段都是 192.168.1.*)echo 1 > /proc/sys/net/ipv4/ip_forwardecho 0 > /proc/sys/net/ipv4/tcp_timestampsiptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE iptables -t nat -A POSTROUTI原创 2016-04-19 18:25:55 · 916 阅读 · 0 评论 -
linux程序编译期加入编译时间和svn版本号
通常我们在程序开发时会加入版本查询命令,如:“-v”,此时一般会显示build版本,以及build日期等,因此如果每次编译时能自动添加这些信息的话,就非常方便了。下面先说说添加时间的方法:1.最简单方式,代码中直接加入宏__TIME__和__DATE__通过他们可以直接得到编译时间,然后可以在代码里打印2.有点绕不实用,在Makefile中定义一个变量CT="\"`date原创 2012-10-26 13:36:20 · 13576 阅读 · 4 评论 -
malloc分配原理浅析 mmap关注焦点 如何优化分配内存
现象1 压力测试过程中,发现被测对象性能不够理想,具体表现为: 进程的系统态CPU消耗20,用户态CPU消耗10,系统idle大约70 2 用ps -o majflt,minflt -C program命令查看,发现majflt每秒增量为0,而minflt每秒增量大于10000。 初步分析majflt代表major fault,中文名叫大错误,min转载 2013-07-02 09:10:56 · 6842 阅读 · 1 评论 -
ubuntu 重起黑屏解决方法
Alt+F4就出来命令窗口了,输入帐户密码登录。OK原创 2011-10-26 10:47:35 · 669 阅读 · 0 评论 -
linux kernel中的免锁算法
在《LINUX设备驱动程序》(第三版)有几页对免锁算法的实现进行了分析。对于作者的分析有两点我想在这里作更加细致的说明。一是作者对循环缓冲的分析,当缓冲区满时分析错了;二是作者没有对里面的实现技巧作详细的介绍。针对以上两点,本文就用2.6.11(2.6.10和2.6.11是一样的)的kfifo.h和kfifo.c代码实现的免锁算法进行较为详细的分析。 对于临界区的访问一般的做法是转载 2011-12-29 14:21:40 · 1121 阅读 · 0 评论 -
linux下fork出的子进程去掉对主进程的继承
在linux中,一旦fork出子进程后,子进程就会继承主进程的描述符,这为开发者带来了不少问题,比如当我使用socket的时候,一旦我绑定了某个端口,而后fork,如果此时fork出的子进程不退出的,那么我主进程重启后,就会出现无法绑定端口的问题。当然解决这种问题你可以选择在socket初始化时,加入SOCK_CLOEXEC这个选项,使得子进程不继承。那下面就介绍一种通用方法(如有问题,欢迎指出)原创 2012-09-29 15:17:20 · 6858 阅读 · 4 评论 -
linux的cache memory解析
PS:前天有童鞋问我,为啥我的Linux系统没运行多少程序,显示的可用内存这么少?其实Linux与Win的内存管理不同,会尽量缓存内存以提高读写性能,通常叫做Cache Memory。有时候你会发现没有什么程序在运行,但是使用top或free命令看到可用内存free项会很少,此时查看系统的 /proc/meminfo 文件,会发现有一项 Cached Memory:输入ca转载 2013-01-04 15:34:56 · 1545 阅读 · 0 评论 -
svn常用命令集合
修改登录账户:svn --username chen info http://192.168.1.110:8080/svn/project1、将文件checkout到本地目录 svn checkout path(path是服务器上的目录) 例如:svn checkout svn://192.168.1.1/pro/domain 简写:svn co 2、往版本库中添加新的转载 2013-05-22 15:49:24 · 788 阅读 · 0 评论 -
gcc预置宏的查看命令
gcc -dM -E -原创 2013-06-06 17:22:22 · 979 阅读 · 0 评论 -
Shell 显示带颜色字体
格式: echo "/033[字背景颜色;字体颜色m字符串/033[控制码"如果单纯显示字体颜色可以固定控制码位0m。格式: echo "/033[字背景颜色;字体颜色m字符串/033[0m"字背景颜色范围:40 - 4940:黑 41:深红 42:绿 43:黄色 44:蓝色 45:紫色 46:深绿 47:白色 字颜色转载 2013-06-17 10:41:31 · 993 阅读 · 0 评论 -
linux开发辅助命令(二)
1.查看进程打开的文件lsof2.查看ipv4,ipv6监听状态与对应进程lsof -Pnl +M -i4lsof -Pnl +M -i63.查看rpm安装信息rpm -ql 安装包名称4.修改当前shell的可打开描述符最大值ulimt -SHn 65535待续 ...原创 2013-05-30 09:20:04 · 741 阅读 · 0 评论 -
用 RPM 打包软件
http://www.ibm.com/developerworks/cn/linux/management/package/rpm/part1/index.htmlhttp://www.ibm.com/developerworks/cn/linux/management/package/rpm/part2/index.htmlhttp://www.ibm.com/developerwo转载 2013-06-25 17:04:26 · 727 阅读 · 0 评论 -
ubuntu切换用户为root
1.改密码sudo passwd root 2.切换su root原创 2011-10-26 10:45:47 · 462 阅读 · 0 评论