linux 开发
你好xyz
这个作者很懒,什么都没留下…
展开
-
配置Xshell+Xming使用Centos7中wireshark抓包
CentOS7安装wireshark:yum -y install wireshark wireshark-gnomeyum -y install xorg-x11-xauthWindows安装Xshell、Xming:Xming 下载Xming X Server for WindowsXming安装可以不选安装putty组件,其它默认就行原创 2020-08-25 11:29:27 · 1187 阅读 · 0 评论 -
GCC 原子操作
GCC 提供的原子操作gcc从4.1.2提供了__sync_*系列的built-in函数,用于提供加减和逻辑运算的原子操作。其声明如下:type __sync_fetch_and_add (type *ptr, type value, ...)type __sync_fetch_and_sub (type *ptr, type value, ...)type __sync_fetch_an...转载 2018-12-19 17:27:18 · 577 阅读 · 0 评论 -
C++引用ffmpeg出错#error missing -D__STDC_CONSTANT_MACROS / #define __STDC_CONSTANT_MACROS
在报错对应的common.h开头添加如下代码:#ifdef __cplusplus#define __STDC_CONSTANT_MACROS#ifdef _STDINT_H#undef _STDINT_H#endif# include "stdint.h"#endif#ifndef INT64_C#define INT64_C(c) (c ## LL)#d...原创 2018-11-28 11:04:06 · 2171 阅读 · 0 评论 -
利用configure裁剪编译ffmpeg
ffmpeg按默认配置编译出来的库文件可能很大,如果要在移动端或是嵌入式等设备上使用可能就需要进行裁剪configure配置选项如下: ./configure --prefix=/home/ffinst/ --disable-debug --disable-avdevice --disable-indevs --disable-outdevs --disable-encoders --...原创 2018-11-28 10:50:28 · 696 阅读 · 0 评论 -
Linux gcc编译和程序运行时头文件及库搜索顺序
一、头文件gcc 在编译时如何去寻找所需要的头文件:※所以header file的搜寻会从-I开始※然后找gcc的环境变量 C_INCLUDE_PATH,CPLUS_INCLUDE_PATH,OBJC_INCLUDE_PATH※再找内定目录/usr/include/usr/local/include(centos7中该目录下是空的)gcc的一系列自带目录/usr/in...转载 2018-11-29 15:33:08 · 1585 阅读 · 0 评论 -
Linux 定位进程中CPU占用高的线程
一、Top+pstack+gdb的组合拳闲言少述,先直接上操作实例,再做原理讲解。1.1 用top命令找到最占CPU的进程topPID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND22688 root 20 0 1842m 136m 13m S 110.0 0.9 1568:44 test-program1.2 使用pst...转载 2018-11-19 16:41:32 · 1578 阅读 · 0 评论 -
地图坐标转换C代码
WGS-84:是国际标准,GPS坐标(Google Earth使用、或者GPS模块)GCJ-02(火星坐标):中国坐标偏移标准,Google Map、高德、腾讯使用BD-09:百度坐标偏移标准,Baidu Map使用/* pi: 圆周率。 a: 卫星椭球坐标投影到平面地图坐标系的投影因子。 ee: 椭球的偏心率。 x_pi: 圆周率转换量。 transformLat(doubl...原创 2018-10-31 15:46:35 · 1379 阅读 · 0 评论 -
Docker基础原理
前言Docker和容器不是一个意思,Docker包含实现虚拟化技术的一系列技术,而容器(container)只是其中的一个组件。Docker可以给你带来什么?更快交付你的应用(Faster delivery of your applications) 让部署和测试更简单(Deploying and scaling more easily) 实现更高密度和更多的负载(Achievin...转载 2018-09-13 10:25:38 · 244 阅读 · 0 评论 -
ARMV8体系结构简介
ARMV8体系结构简介1.前言本文的主要内容来源于ARMV8白皮书v5,对ARMV8做一个概述。包含如下的内容:首先从背景谈起,讲述ARM的发展历程; 之后介绍ARMV8体系结构的基本特征; 介绍A64指令集 介绍异常级别 介绍内存管理单元 介绍编程寄存器 介绍DEBUG相关 ARMV8生态系统的演化2. 背景图 ARMV7之前体系结构与手机发展历程 从...转载 2018-09-12 16:41:44 · 2719 阅读 · 0 评论 -
Linux 下用getaddrinfo、getnameinfo实现IP和域名的转换
gethostbyname, gethostbyaddr是不可重入函数;已经被getaddrinfo, getnameinfo替代getaddrinfo 将主机和服务转换到socket地址,融合了函数getipnodebyname, getipnodebyaddr, getservbyname, getservbyport的功能,是可重入的getnameinfo 功能与getaddrinfo...原创 2018-08-21 18:19:35 · 15035 阅读 · 0 评论 -
Linux gdb调试打印完整字符串
在使用gdb调试过程中,经常需要查看变量的值,最常用的方法:(gdb) print {变量名}一般情况下,打印并不存在问题。但当一个字符串比较长时,打印出来的内容不完整,内容的最后为"..."例如:可以看到后面带有省略号,内容没有完整的显示出来。如何才能将需要print的内容完整显示出来呢?其实gdb 默认有一个最大显示长度限制,可能通过show print eleme...原创 2018-08-24 16:04:24 · 17167 阅读 · 1 评论 -
Linux Makefile自动依赖
Makefile生成自动依赖的方法有两种:1. 将所有.o文件的依赖关系写入单独文件,然后在Makefile中调用该文件2. 每个.c文件对应一个.d文件,将依赖关系写入.d文件中一、对于第一种方法,Makefile的写法如下:CC = gccSRCS := $(wildcard *.c)OBJS := $(patsubst %.c,%.o, $(SRCS))all...转载 2018-08-27 17:37:39 · 1336 阅读 · 0 评论 -
ffmpeg configure配置选项
帮助选项Help options 标准选项Standard options 许可证选项Licensing options 配置选项Configuration options 程序选项Program options 文档选项Documentation options 组件选项Component options 个别组件选项Individual component options 扩展...转载 2018-08-02 17:49:47 · 2837 阅读 · 1 评论 -
c++ const指针与函数调用
在我的博客http://blog.csdn.net/caoyan_12727/article/details/52064958中,已经讨论了动态绑定和静态绑定,以及在缺省参数情况下虚函数的绑定情况。一般情况下,我们是用非const的基类指针指向派生类对象,如果通过该指针调用虚函数则发生的动态绑定,如果我们定义一个const指针,指向派生类的对象,如果派生类里定义了同名的虚函数和cons...转载 2018-08-14 11:07:44 · 1929 阅读 · 0 评论 -
CentOS 路由设置
一、路由表常用设置:1、使用route命令添加的路由,机器重启或者网卡重启后路由就失效了,方法://添加到主机的路由# route add –host 192.168.1.11 dev eth0# route add –host 192.168.1.12 gw 192.168.1.1//添加到网络的路由# route add –net 192.168.1.11 netmask ...转载 2018-07-18 16:52:13 · 18982 阅读 · 0 评论 -
Linux 获取本地IP的方法(参考exosip)
#include <stdio.h>#include <stdlib.h>#include <unistd.h>#include <string.h>#include <sys/socket.h>#include <netinet/in.h>#include <arpa/inet.h>#include原创 2018-07-10 13:48:28 · 663 阅读 · 0 评论 -
H264语法分析之-slice
2.4片层句法1片层句法(不分区)句法CDescslice_layer_without_partitioning_rbsp(){ slice_header()2 slice_data() /* all categories of slice_data() syntax */2|3|4 rbsp_slice_trailing_bits()2 } 表62 片层A分区句法句法...转载 2018-07-10 13:44:39 · 1840 阅读 · 0 评论 -
GCC 原子操作实例
/** =====================================================================================** Filename: atomic.c** Description: gcc-4.1.1: Built-in functions for atomic memory access* ...转载 2018-12-19 17:31:52 · 646 阅读 · 0 评论 -
Android.mk 语法简介
0. Android.mk简介:Android.mk文件用来告知NDK Build 系统关于Source的信息。 Android.mk将是GNU Makefile的一部分,且将被Build System解析一次或多次。所以,请尽量少的在Android.mk中声明变量,也不要假定任何东西不会在解析过程中定义。Android.mk文件语法允许我们将Source打包成一个"modules". modul...转载 2019-01-11 14:44:43 · 254 阅读 · 0 评论 -
程序中unsigned char 类型的意义
对于无符号数来说,左移和右移都是用的逻辑移位,即左移低位空出的补0,右移高位空出的补0;对于有符号数来说,用的是算术移位,左移多出的会移进符号位,低位空出的补0,右移空出的高位补符号位。例如:char m = 0xa6;unsigned char n = 0xa6;printf("0x%02hhx\n", m >> 1);printf("0x%02hhx\n", n &...原创 2019-08-31 17:34:38 · 2543 阅读 · 0 评论 -
关于MPEG-4 、mp4v 和 mp4a
MPEG-4MPEG-4是个协议簇,包含了多个协议。MPEG-4只是定义了一部分AAC类型,AAC主要包括MPEG-2 AAC和MPEG-4 AAC,详细如下图:可以看出MPEG-4中只是定义了一部分类型的AAC。MP4VMP4V stands for MPEG-4 Video.It was created by Moving Pictures Expe...转载 2019-07-31 09:41:41 · 9749 阅读 · 1 评论 -
ffmpeg 一些常用命令
===[encode]===ffmpeg -f dshow -i audio="麦克风 (Realtek High Definition Au" -f dshow -i audio="virtual-audio-capturer" -filter_complex amix=inputs=2:duration=first:dropout_transition=2 -f gdigrab -i de...原创 2019-06-07 11:31:06 · 2440 阅读 · 0 评论 -
vim 配置tab为4个空格
在配置文件末尾添加如下内容:set tabstop=4set softtabstop=4set shiftwidth=4set noexpandtab配置文件位置:linux:/etc/vimrcwindows:vim安装目录/_vimrc原创 2019-06-01 13:03:54 · 2671 阅读 · 0 评论 -
Linux 程序后台运行的方法(nohup、setsid、&)
我们经常会碰到这样的问题,用 telnet/ssh 登录了远程的 Linux 服务器,运行了一些耗时较长的任务, 结果却由于网络的不稳定导致任务中途失败。如何让命令提交后不受本地关闭终端窗口/网络断开连接的干扰呢?下面举了一些例子, 您可以针对不同的场景选择不同的方式来处理这个问题。nohup/setsid/&场景:如果只是临时有一个命令需要长时间运行,什么方法能最简便的保证它...转载 2019-04-28 15:16:50 · 1394 阅读 · 0 评论 -
ubuntu内网ntp服务搭建及嵌入式移植测试
//////ntp服务搭建apt install ntpvim /etc/ntp.confservice ntp restart//////嵌入式移植测试wget http://archive.ntp.org/ntp4/ntp-4.2/ntp-4.2.8p13.tar.gztar xzvf ntp-4.2.8p13.tar.gzcd ntp-4.2.8p13/./configu...原创 2019-04-04 17:44:33 · 708 阅读 · 0 评论 -
ubuntu16.04 环境配置及问题解决
ubuntu安装后,root初始密码为随机的,需要先设置1、先用安装时候的用户登录进入系统2、输入:sudo passwd3、输入新密码,重复输入密码,最后提示passwd:password updated sucessfully至此已完成对root密码的设置---------------------------------从Ubuntu14.04开始open-vm-tools...原创 2019-03-25 18:13:09 · 1087 阅读 · 0 评论 -
交叉编译流量监测工具nload
一、编译安装ncurses下载:wget http://ftp.gnu.org/gnu/ncurses/ncurses-6.0.tar.gz配置:./configure --prefix=/home/install/ncurses --host=arm-hisiv300-linux --with-normal 要生成动态库加--with-shared编译安装:ma...原创 2019-03-25 17:40:10 · 1054 阅读 · 0 评论 -
Linux 查看与修改mtu值
MTU:通信术语 最大传输单元(Maximum Transmission Unit)是指一种通信协议的某一层上面所能通过的最大数据包大小(以字节为单位)。 我们在使用互联网时进行的各种网络操作,都是通过一个又一个“数据包”传输来实现的。而MTU指定了网络中可传输数据包的最大尺寸,在我们常用的以太网中,MTU是1500字节。超过此大小的数据包就会将多余的部分拆分再单独传输 。MTU的设置不是一...转载 2019-02-21 12:01:51 · 30900 阅读 · 0 评论 -
C11标准和C++11标准
1、 C语言的C11 标准有哪些改进的地方?会对各类C项目起到哪些帮助?1. 对齐处理操作符 alignof,函数 aligned_alloc(),以及 头文件 <stdalign.h>。2. _Noreturn 函数标记,类似于 gcc 的 __attribute__((noreturn))。3. _Generic 关键词,有点儿类似于 gcc 的 typeof。4. ...转载 2019-02-26 11:00:36 · 15706 阅读 · 1 评论 -
C++ 拷贝构造函数与赋值函数
这里我们用类String 来介绍这两个函数:拷贝构造函数是一种特殊构造函数,具有单个形参,该形参(常用const修饰)是对该类类型的引用。当定义一个新对象并用一个同类型的对象对它进行初始化时,将显式使用拷贝构造函数。为啥形参必须是对该类型的引用呢?试想一下,假如形参是该类的一个实例,由于是传值参数,我们把形参复制到实参会调用拷贝构造函数,如果允许拷贝构造函数传值,就会在拷贝构造函数内调用拷贝构...转载 2019-02-20 14:09:46 · 1857 阅读 · 0 评论 -
C++ 各种构造函数的调用方式
c++的类中有5种值得注意的基本的函数:无参构造函数 有参构造函数 拷贝构造函数 赋值函数 析构函数关于析构函数,需要注意的点在上一篇博客里面 c++: 是否会自动delete? 也提到过了,在这里暂时不多说。这篇博客主要记录这3个构造函数、1个赋值函数的调用方式,希望大家学习之后,不但知道如何调用,还可以根据一句话来判断到底调用了几次构造函数。可以通过一个例子来说明,假如我现在...转载 2019-02-20 14:02:21 · 2765 阅读 · 0 评论 -
H.264 视频的 RTP 载荷格式
H.264 视频的 RTP 载荷格式本文是 IETF 的规范 RFC 6184 的一部分的翻译,该规范 地址。翻译这份文档,主要是为了编写一段用 RTP 传输 H.264 流的代码。本想在网上找一些文章完成任务了事的,但由于个人之前音视频编解码相关的知识比较匮乏,网上找的文章大都没有办法把我的问题讲的很详细很明确,所以就找来了这份 IETF 的规范来学习。当然翻译这份文档的另外的原因是,我认...转载 2019-02-19 17:01:30 · 520 阅读 · 0 评论 -
理解ffmpeg 中的pts,dts,time_base
PTS:Presentation Time Stamp。PTS主要用于度量解码后的视频帧什么时候被显示出来DTS:Decode Time Stamp。DTS主要是标识读入内存中的bit流在什么时候开始送入解码器中进行解码也就是pts反映帧什么时候开始显示,dts反映数据流什么时候开始解码怎么理解这里的“什么时候”呢?如果有某一帧,假设它是第10秒开始显示。那么它的pts是多少呢。是10...转载 2019-02-28 16:07:46 · 2144 阅读 · 0 评论 -
c++ 容器的erase使用
#include <iostream>#include <list>#include <vector>using namespace std;int main(){ vector<int> vec; int i; vec.push_back(0); vec.push_back(1); vec.p...原创 2019-02-22 17:33:16 · 475 阅读 · 0 评论 -
ffmpeg处理hikvision平台PS流
在多媒体指挥调度系统中,将监控平台的IPC音视频转发到视频会议、视频话机以及直播平台,是一个常见的需求。常见的监控平台在提供的SDK中通常以回调的方式将音视频媒体用复合流的方式送给应用程序。所谓的复合流,安防行业当然以PS流见多,hikvision平台也是如此。 既然是PS流,当然要仔细研究一下iso13818-1规范,本来想自己写PS流的解析代码,但考虑到已经有众多的PS流解析开源代码...转载 2019-01-15 14:32:35 · 1589 阅读 · 0 评论 -
Google 超分辨率技术 RAISR:模糊图片瞬间变清晰,运算速度快十倍
Google 超分辨率技术 RAISR:模糊图片瞬间变清晰,运算速度快十倍Everyday the web is used to share and store millions of pictures, enabling one to explore the world, research new topics of interest, or even share a vacation with...转载 2018-07-10 11:22:52 · 5930 阅读 · 0 评论 -
Linux 搭建svn服务器
一、安装svn用yum命令安装svn服务器相关服务yum -y install subversion查看svn安装位置rpm -ql subversion二、添加用户(非必须,但推荐)1.添加用户组groupadd svn2.添加用户,同时指定主目录为/var/svn,所属组为svn useradd -d /var/svn -g svn svn 3.设置用户密码passwd svn4.切换用户进行...原创 2018-06-08 14:52:13 · 175 阅读 · 0 评论 -
Linux 使用gcore、gdb、pstack、strace命令查死锁问题
gdb thread apply all bt如果你发现有那么几个栈停在 pthread_wait 或者类似调用上,大致就可以得出结论:就是它们几个儿女情长,耽误了整个进程。 注意gdb的版本要高于7.0,之前使用过gdb6.3调试多线程是不行的。 从上图可以看出两个线程都阻塞在wait上,而且还给出了在哪一行代码中,很容易就定位到产生死锁的位置。 有时候线程太多,想写到文件里,可以:(gdb)...转载 2018-06-14 17:24:08 · 20652 阅读 · 0 评论 -
多媒体会议混音算法
在多媒体会议中,音频互动是基本的要素之一,它是多媒体会议中最基本的要素.由于在分组网络中没有QoS,所以网络的拥塞导致了端到端通信的语音丢包和延时抖动等问题同时,多个端点同时相互发送数据更进一步增加了网络传输的负担,并且增加语音通信中数据收发的随机性和波动性.而语音互动的实时性要求远远高于多媒体会议中的其他要素,比如视频和数据.因为视频和数据在相对较长的时延内的抖动都是可以被用户接受的,而音频部分转载 2017-10-19 10:08:19 · 1124 阅读 · 0 评论 -
gcc中-pthread和-lpthread的区别
一般情况下,我们在链接一个(文件名为libxxx.so或libxxx.a等的)库时,会使用-lxxx的方式;在Linux中要用到多线程时,需要链接pthread库,按照惯例,我们应该使用-lpthread的方式来进行链接;但是,通过日常的观察,我发现很多开源代码都是使用了-pthread参数,而非使用-lpthread,这是为什么呢?一通Google后,总算找到一些线索:为了可移植转载 2017-08-31 10:21:51 · 972 阅读 · 2 评论