linux
文章平均质量分 71
fengruoying93
这个作者很懒,什么都没留下…
展开
-
libcurl库编译(linux和android平台)
一、编译linux版本./configure --prefix=$PWD/_installmakemake install二、编译android版本./configure --prefix=$PWD/install_android --host=aarch64-linux-android LDFLAGS="-Wl,-rpath,/home/lighthouse/work/my_project/ndk/android-ndk-r10e/platforms/android-21/arch-arm原创 2022-05-01 00:32:07 · 1440 阅读 · 0 评论 -
设置 SSH 通过密钥登录
我们一般使用 PuTTY 等 SSH 客户端来远程管理 Linux 服务器。但是,一般的密码方式登录,容易有密码被暴力破解的问题。所以,一般我们会将 SSH 的端口设置为默认的 22 以外的端口,或者禁用 root 账户登录。其实,有一个更好的办法来保证安全,而且让你可以放心地用 root 账户从远程登录——那就是通过密钥方式登录。密钥形式登录的原理是:利用密钥生成器制作一对密钥——一只公钥和一只私钥。将公钥添加到服务器的某个账户上,然后在客户端利用私钥即可完成认证并登录。这样一来,没有私钥,任何人都无转载 2021-12-05 10:36:34 · 808 阅读 · 0 评论 -
Linux下二进制文件分析命令
一、ldd命令二、readelf命令三、nm命令原创 2021-11-30 13:51:56 · 979 阅读 · 0 评论 -
嵌入式Linux系统启动过程
一个嵌入式 Linux 系统从软件角度看可以分为四个部分:引导加载程序(Bootloader), Linux 内核,文件系统,应用程序。当系统首次引导时,或系统被重置时,处理器会执行一个位于Flash/ROM中的已知位置处的代码,Bootloader就是这第一段代码。它主要用来初始化处理器及外设,然后调用 Linux 内核。Linux 内核在完成系统的初始化之后需要挂载某个文件系统作为根文件系统(Root Filesystem),然后加载必要的内核模块,启动应用程序。这就是嵌入式Linux系统启动过程转载 2021-11-28 16:12:10 · 2655 阅读 · 0 评论 -
ffmpeg编译与移植
1、下载ffmpeg下载网址:Download FFmpeg2、解压缩tar -zxvf ffmpeg-2.0.1.tar.gz3、配置,生成Makefile./configure --enable-shared --disable-yasm --prefix=/usr/local/ffmpeg如果执行结果不对,可以根据提示信息,并查看帮助,解决问题./configure --help4、编译安装makemake install5、安装之后在/usr/local/ffmpe..转载 2021-11-16 09:50:55 · 841 阅读 · 1 评论 -
内存耗用:VSS/RSS/PSS/USS 介绍
参考:https://www.jianshu.com/p/3bab26d25d2ehttps://blog.csdn.net/adaptiver/article/details/7084364VSS- Virtual Set Size 虚拟耗用内存(用处不大,包含共享库占用的内存,以及分配但未使用的内存,如malloc分配了但未写入,VSS很少用于判断一个进程内存的真实使用量) RSS- Resident Set Size 实际使用物理内存(用处不大,包含共享库占用的内存,仅表示该进程使用的所有共转载 2021-07-11 13:14:23 · 1486 阅读 · 0 评论 -
eXosip2和osip2库编译
参考:https://blog.csdn.net/takeopen/article/details/79564185一、源码下载http://www.antisip.com/download/exosip2/,这里选择libeXosip2-3.5.0.tar.gz和libosip2-3.5.0.tar.gz二、osip2库编译cd libosip2-3.5.0/./configure --enable-staticmake编译完成后在libosip2-3.5.0/src/osip2原创 2021-05-23 21:54:19 · 1086 阅读 · 1 评论 -
64位系统安装arm交叉编译工具失败问题
在64位机器ubuntu上安装交叉编译工具arm-2009q3.tar.bz2,安装好后执行arm-none-linux-gnueabi-gcc提示以下错误:bash: /usr/local/arm/arm-2009q3/bin/arm-none-linux-gnueabi-gcc: No such file or directory是因为arm-2009q3是32位的,64位系统需要安装32位库sudo apt-get install ia32-libs如果在安装的时候提示ia32-lib原创 2021-05-15 23:59:42 · 862 阅读 · 1 评论 -
一些音视频编解码相关的开源库
参考:https://www.cnblogs.com/cyblogs/p/10722306.htmlhttps://blog.csdn.net/fanyun_01/article/details/103565661不管视频编解码,图像编解码,音频编解码,都有很多组织基金在推动。当然,在一些特定的情景下,需要用起来编解码库,而一般这些库都会有编译困难,使用困难等等困难综合症。图像方面,已经有stb_image,spot,freeimage等编解码库系列,做得特别赞。https://gi转载 2021-04-24 11:39:22 · 3104 阅读 · 0 评论 -
linux下执行shell脚本报错问题
1、shell脚本执行报错:/bin/bash^M: bad interpreter: No such file or directory报错原因:shell脚本格式必须是unix才行,如果这个脚本是在windows上编写完成传到Linux服务器上的,就会报错(windows环境下的文件是dos格式,即每行结尾以\r\n来标识,而linux下的文件是unix格式,行尾则以\n来标识)解决方法:1.sed -i "s/\r//" filename 或sed -i "s/^M//" filename原创 2021-04-18 20:30:04 · 1775 阅读 · 0 评论 -
linux开机自启动程序设置方法
参考:https://www.cnblogs.com/fatt/p/4789375.htmlhttps://blog.csdn.net/weixin_42534940/article/details/100178482?utm_medium=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.control&depth_1-utm_source=distribute.pc_relevant_t0.n原创 2020-12-27 20:44:23 · 953 阅读 · 0 评论 -
linux编译链接注意事项
一、两个动态库函数重名问题参考:gcc链接动态库时,两个动态库中符号重名的问题_山中岁月的博客-CSDN博客_动态库 重名1、liba.so和libb.so中均定义了func()gccmain.c-L. -la-lb-o main,则调用的是liba.so中的函数实现gccmain.c-L. -lb-la-o main,则调用的是libb.so中的函数实现总结:gcc在链接时,如果有一个动态库模块定义了某个符号,那么后面其他动态库中同名符号都会被忽略!2、将func(...原创 2020-12-22 22:13:01 · 461 阅读 · 0 评论 -
IP组播概述
原文:http://www.h3c.com/cn/Products___Technology/Technology/ComwareV5/Group_Management/IPv4三层组播协议主要包括IGMP、PIM、MSDP和MBGP。IPv6三层组播协议主要包括MLD、PIM和MBGP。三层组播协议Comware平台软件支持的三层组播协议主要包括用于主机注册的组播组管理协议,以及用于组播选路转发的组播路由协议。1、组播组管理协议在接收者主机与组播路由器之间通常采用IGMP(I.转载 2020-12-09 16:51:43 · 371 阅读 · 0 评论 -
Linux下死锁问题的排查方法
一、什么是死锁死锁(DeadLock)是指两个或者两个以上的进程(线程)在执行过程中,因争夺资源而造成的一种互相等待的现象,若无外力作用,它们都将无法推进下去。此时称系统处于死锁状态或系统产生了死锁,这些永远在互相等待的进程(线程)称为死锁进程(线程)。由于资源占用是互斥的,当某个进程提出申请后,使得有关进程(线程)在无外力协助下,永远分配不到必需的资源而无法继续进行,这就产生了一种特殊现象——死锁。一种交叉持锁死锁的情形,此时执行程序中两个或多个线程发生永久堵塞(等待),每个线程都在等待被其他线程转载 2020-11-15 12:08:36 · 3846 阅读 · 0 评论 -
在Linux中利用backtrace信息解决程序崩溃问题
转自:https://blog.csdn.net/jxgz_leo/article/details/53458366一、导读在程序调试过程中如果遇到程序崩溃死机的情况下我们通常多是通过出问题时的栈信息来找到出错的地方,这一点我们在调试一些高级编程语言程序的时候会深有体会,它们通常在出问题时会主动把出问题时的调用栈信息打印出来,比如我们在eclipse中调试java程序时。当这些换到Linux上的C/C++环境时情况将变的稍微复杂一些,通常在这种情况下是通过拿到出问题时产生的core文件然后再利用转载 2020-11-15 11:40:01 · 681 阅读 · 0 评论 -
技术干货丨通过wrap malloc定位C/C++的内存泄漏问题
摘要:用C/C++开发的程序执行效率很高,但却经常受到内存泄漏的困扰。本文提供一种通过wrap malloc查找memory leak的思路。用C/C++开发的程序执行效率很高,但却经常受到内存泄漏的困扰。本文提供一种通过wrap malloc查找memory leak的思路,依靠这个方法,笔者紧急解决了内存泄漏问题,避免项目流血上大促,该方法在日后工作中大放光彩,发现了项目中大量沉疴已久的内存泄漏问题。什么是内存泄漏?动态申请的内存丢失引用,造成没有办法回收它(我知道杠jing要说进程退出.转载 2020-11-11 16:21:51 · 420 阅读 · 0 评论 -
三层交换机报文转发过程
如图所示,假如主机A想访问主机B,首先主机A会将自己的IP地址和子网掩码做与操作,得出网路地址(如:Host-A的IP地址100.1.1.2与自身掩码255.255.255.0做与操作后,得到的网络号是100.1.1.0).然后判断目的IP地址(即Host-B的IP地址)与自己的网络地址是不是在同一个子网.因为图中主机A和主机B不在同一子网内,所以需要进行三层转发.1、主机A发送ARP广播获取网关MAC地址主机A想访问主机B首先要有主机B的MAC地址,由于主机A和主机B不在同一子网,所以主...转载 2020-09-04 23:12:52 · 3977 阅读 · 0 评论 -
SIP中From ,Contact, Via 和 Record-Route/Route
转载:http://eadgar.blogbus.com/logs/374635.html注意:以下内容适用于SIP消息中,在具体的应用环境中,例如IMS,每个消息头都有其他独特的意义,但不会和以下的内容产生具体的冲突.From: 如果一个SIP消息中没有Contact或者Record-Route头域,那么callee就会根据From头域产生后续的Request。比如:如果Alice打一个电话给Bob,From头域的内容是 From:Alice<sip:alice@example.org>转载 2020-08-22 15:55:43 · 2445 阅读 · 0 评论 -
shell中$(( ))与$( )还有${ }的区别
$( )与` `(反引号)在bash shell中,$( )与` `(反引号)都是用来做命令替换(command substitution)用的。$ echo the last sunday is $(date -d "last sunday" +%Y-%m-%d)得到上一星期天的日期用$( )的理由1. ` `很容易与' '(单引号)搞混。有时在一些奇怪的字形显示中,两种符号是一模一样的(直竖两点)。2. 在多层次的复合替换中,` `须要额外的跳脱(\`)处理,而$( )则比较直观。例如转载 2020-08-07 16:30:05 · 3879 阅读 · 0 评论 -
shell输入输出和重定向
1. 理解输入和输出1.1 标准文件描述符Linux 系统将每个对象当作文件处理。这包括输入和输出进程。Linux 用文件描述符(file descriptor)来标识每个文件对象。文件描述符是一个非负整数,可以唯一标识会话中打开的文件。每个进程一次最多可以有九个文件描述符。Linux 标准文件描述符如下:文件描述符 缩写 描述 0 STDIN 标准输入 1 STDOUT 标准输出 2 STDERR 标准结果 STDIN S转载 2020-08-07 13:58:58 · 218 阅读 · 0 评论 -
lzma和gzip压缩命令简介
LZMA (Lempel-Ziv-Markov chain-Algorithm) 基于著名的LZ77压缩算法改进的压缩/解压工具,特点:高压缩率,高解压速度,低内存消耗,lzma命令行工具使用方式和gzip,bzip2类似,对 已经熟悉gzip,bzip2这类工具的用户来说,上手并不难。对比两大主流压缩工具:gzip,bzip2:1,lzma和bzip2在速度上面远远输给gzip,但在压缩率方面,lzma算法占优势。2,lzma拥有比gzip,bzip2更高的压缩比率,压缩后文件更小,纯文本文件...转载 2020-07-21 13:54:40 · 2744 阅读 · 1 评论 -
utf8编码与GB2312编码的转换(C++)
#include "stdafx.h"#include <windows.h>#include <iostream>#include <string>#include <string.h>#include <stdlib.h>using namespace std;//UTF-8到GB2312的转换char* U2G(const char* utf8){ int len = MultiByteToWideChar(CP_U.转载 2020-07-04 16:19:29 · 1585 阅读 · 0 评论 -
基于mongoose的httpclient配置SSL与cookie
一、mongoose简介mongoose是一个轻量的开源http服务器项目:https://github.com/cesanta/mongoose只需要使用mongoose.c和mongoose.h两个文件就可以搭建httpserver或httpclient二、SSL配置若要支持https,则需要配置SSL,这里使用OpenSSL开源库。1、openssl源码地址为:https://www.openssl.org/source/old/,这里选择版本为openssl-1.0.1u.ta.原创 2020-06-20 15:11:44 · 2207 阅读 · 1 评论 -
理清gcc、libc、libstdc++的关系
当你在linux下写C/C++代码的时候,是不是会遇到许多编译链接的问题? 时不时报个glibc,gcc,g++等相关的错误? 很多时候都无从下手,而且比较混乱。 这也是编译链接过程中经常出现的问题。这篇文章不是去介绍如何编译链接,而是理清编译链接过程中碰到的一些概念和出现的问题。尤其是,libc,glib,glibc,eglibc,libc++,libstdc++,gcc,g++。从libc说起。libc是Linux下原来的标准C库,也就是当初写hello world时包含的头文件#includ转载 2020-06-17 20:19:17 · 536 阅读 · 0 评论 -
OpenSSL静态库编译及使用(linux环境)
转载需注明来源:http://www.cnblogs.com/yczcc/p/7594322.htmlopenssl官网:https://www.openssl.org下载源码源码地址为:https://www.openssl.org/source/old/;当前最新版本为 1.1.0f,https://www.openssl.org/source/old/1.1.0/openssl-1.1.0f.tar.gz源码编译解压之后,进入源码目录openssl-1.1.0f,执行如下命令。因为转载 2020-06-17 15:09:00 · 2772 阅读 · 0 评论 -
OpenSSL 的使用详解
OpenSSL 是一个开源项目,其组成主要包括一下三个组件: openssl:多用途的命令行工具 libcrypto:加密算法库 libssl:加密模块应用库,实现了ssl及tls openssl可以实现:秘钥证书管理、对称加密和非对称加密。1、对称加密对称加密需要使用的标准命令为enc,用法如下:openssl enc -ciphername [-in filename] [-out filename] [-pass arg] [-e] [-d] [-a/...转载 2020-06-17 11:41:59 · 1503 阅读 · 0 评论 -
Makefile知识整理
一、gcc -l参数和-L参数用法含义1、-l 的用法-l参数就是用来指定程序要链接的库,-l参数紧接着就是库名,那么库名跟真正的库文件名有什么关系呢?就拿数学库来说,他的库名是m,他的库文件名是libm.so,很容易看出,把库文件名的头lib和尾.so去掉就是库名了(即gcc -lm)2、-L 的用法当我们自已要用到一个第三方提供的库名字libtest.so,那么我们只要把libtest.so拷贝到/usr/lib里,编译时加上-ltest参数,我们就能用上libtest.so库了(当然要原创 2020-06-11 15:15:48 · 2539 阅读 · 1 评论 -
RTSP协议详解(转载)
流媒体传输协议介绍一、RTSP协议介绍什么是rtsp?RTSP协议以客户服务器方式工作,,如:暂停/继续、后退、前进等。它是一个多媒体播放控制协议,用来使用户在播放从因特网下载的实时数据时能够进行控制,因此 RTSP 又称为“因特网录像机遥控协议”。RTSP(Real-Time Stream Protocol)是一种基于文本的应用层协议,在语法及一些消息参数等方面,RTSP协议与HTTP协议类似。 是TCP/IP协议体系中的一个应用层协议, 由哥伦比亚大学, 网景和R...转载 2020-05-24 19:29:03 · 1081 阅读 · 0 评论 -
关于HTTP协议
HTTP简介HTTP协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写,是用于从万维网(WWW:World Wide Web )服务器传输超文本到本地浏览器的传送协议。HTTP是一个基于TCP/IP通信协议来传递数据(HTML 文件, 图片文件, 查询结果等)。HTTP是一个属于应用层的面向对象的协议,由于其简捷、快速的方式,适用于分布式超媒体信息系统。它于1990年提出,经过几年的使用与发展,得到不断地完善和扩展。目前在WWW中使用的是HTTP/1.0的第六转载 2020-05-24 18:18:47 · 170 阅读 · 0 评论 -
gcc -s和strip的区别
参考:https://qa.1r1g.com/sf/ask/94441651/https://blog.csdn.net/emdfans/article/details/26227347一、gcc -s和strip的区别gcc -s:从可执行文件中删除所有符号表和重定位信息.strip:丢弃目标文件中的符号.strip是可以在已经编译的目标文件上运行的东西.它还具有各种命令行选...转载 2020-04-26 14:52:03 · 5159 阅读 · 0 评论 -
在secureCRT软件上运行python脚本
secureCRT支持运行.js和.vbs以及.py格式的脚本,无奈mac上识别前两个格式的脚本只能写一写python脚本,举个简单的例子,利用脚本直接ssh连接一台机器,在View菜单中勾选Button Bar让这个菜单在下方显示出来,在下方的Default右方右键出现一个菜单点击New Button按钮,在显示框的Function一栏选择Run Script中间选择编写好的.py文件....转载 2020-04-25 18:03:53 · 2779 阅读 · 0 评论 -
git log显示中文乱码问题解决
1、运行GitBash窗口,在该窗口导航条(即最上面)右键,选择Options−>Text,找到下面两处 Locale:选择 zh_CN Charectorset:选择 UTF-82、到Git Bash命令窗口输入如下设置命令语句git config --global i18n.commitencoding utf-8 --注释:该命令表示提交命令的时候使用utf-8编码集提交git config --global i18n.logoutputencoding utf-8 -...原创 2020-04-06 00:44:24 · 1705 阅读 · 0 评论 -
git reset--hard后恢复暂存区(未提交)文件
问题:本地编写代码时,由于对git方法不熟悉,加之脑抽,执行了git reset--hard,把本地只add但未commit的代码全部删除了分析:git reset --hard 是把本地库里的文件全部替换到了工作空间里,还是可以找回解法:1.执行find .git/objects -type f | xargs ls -lt | sed 30q,这里30q的意思是最近30次的a...转载 2020-03-29 23:43:15 · 2163 阅读 · 0 评论 -
Git使用教程
参考:Git使用教程:最详细、最傻瓜、最浅显、真正手把手教!_一只蜗牛的博客-CSDN博客_git使用详细教程Git命令行基本操作 - tangsong - 博客园Git--- download网址:https://git-scm.com/downloadswindows版git:msysgit0. 安装Git网上有很多Git安装教程,如果需要图形界面,windows下建议使用TortoiseGit,linux建议使用Git GUI或者GITK。msysgit是 windows版的G转载 2020-02-23 16:30:25 · 396 阅读 · 0 评论 -
posix消息队列和systemV消息队列
转自:https://blog.csdn.net/u014608280/article/details/80541589参考:https://blog.csdn.net/mayue_web/article/details/92712163一、概述:消息队列可认为是一个消息链表。有足够写权限的线程可往队列中放置消息,有足够读权限的线程可从队列中取走消息。posix消息队列和syst...转载 2020-01-21 14:53:25 · 758 阅读 · 0 评论 -
Linphone客户端配置
1、安装linphone客户端(以3.4.1版本为例)2、配置Network settings(1)udp端口,默认5060,若本地开了sip服务器(如brekeke、asterisk)会占用此端口,可以修改linphone(sip客户端)为其它端口3、配置Manage SIP Accounts(1)代理账户(Proxy accounts)-add/edit,your sip ...原创 2020-01-18 11:51:32 · 4688 阅读 · 0 评论 -
常用ftp、tftp服务器软件
这里分享几个非常不错的FTP服务器软件,分别是Wing FTP Server、Serv-U和Filezilla Server,都支持一键安装,而且使用起来非常容易。一、FileZilla Server这是Windows平台下一个免费的FTP服务器软件,非常轻巧灵活,最新版的安装包也就2M左右,功能强大、操作简单、界面清新、实用性强,占用系统资源非常少,如果你想玩玩简单的FTP服务器,那么F...原创 2019-12-22 15:33:18 · 3488 阅读 · 0 评论 -
asterisk sip服务器搭建与配置
参考:https://blog.csdn.net/m0_37567543/article/details/78687599https://blog.csdn.net/brandon2015/article/details/51811914Asterisk是一个相对成熟的VOIP电话的服务器,可以通过下载安装包或apt-get方式进行安装。建议使用apt-get方式,因为asterisk需要...原创 2019-12-18 15:08:58 · 2239 阅读 · 0 评论 -
data,bss和rodata段的区别与联系
正如大家所知道的,全局变量是放在全局内存中的,但反过来却未必成立。用static修饰的局部变量就是放在放全局内存的,它的作用域是局部的,但生命期是全局的。在有的嵌入式平台中,堆实际上就是一个全局变量,它占用相当大的一块内存,在运行时,把这块内存进行二次分配。这里我们并不强调全局变量和全局内存的差别。在本文中,全局强调的是它的生命期,而不是它的作用域,所以有时可能把两者的概念互换。一般来说,...转载 2019-12-18 10:36:56 · 522 阅读 · 0 评论 -
多线程的同步与互斥(互斥锁、读写锁、自旋锁、条件变量、信号量)
转自:https://blog.csdn.net/daaikuaichuan/article/details/82950711https://blog.csdn.net/zryoo_k/article/details/88559142一、同步与互斥的概念【同步】: 是指散步在不同任务之间的若干程序片断,它们的运行必须严格按照规定的某种先后次序来运行,这种先后次序依赖于要完成的特定...转载 2019-12-17 23:34:11 · 1456 阅读 · 0 评论