
linux
文章平均质量分 70
步基
深耕音视频领域,系统架构
展开
-
epoll详解
linux系统一切皆文件,设备,socket等都可以理解为是一个文件。select,pool,epoll都能管理多个socket,但select最多管理1024个socket,poll没有1024个数限制但效率不高,目前主流方案是epoll。epoll三个接口函数#include <sys/epoll.h>//创建一个epoll句柄,参数size是内核保证能够正确处理的最大句柄数,多于这个最大数时内核不保证效果。当创建好epoll句柄后,它就是会占用一个fd值,在linux下原创 2022-01-12 17:26:02 · 746 阅读 · 0 评论 -
ubuntu空间清理
//ubuntu上的 /dev/loop0 到 /dev/loop18 100%清理apt autoremove --purge snapd//移除不需要的软件包sudo apt autoremove//清理apt缓存sudo du -sh /var/cache/apt//清理缓存sudo apt autoclean//清除缩略图du -sh ~/.cache/thumbnails//卸载软件sudo apt remove xxx(软件名)..原创 2022-01-09 12:34:36 · 1937 阅读 · 0 评论 -
CMakeLists.txt生成makefile
1 单个源文件编译main.c#include <stdio.h>int main(){ printf("Hello World Test!\n"); return 0;}CMakeLists.txt:project(hello_buji)set(APP_SRC main.c)add_executable(${PROJECT_NAME} main.c)message(${PROJECT_SOURCE_DIR})解释代码:第一个行proje...原创 2022-01-06 22:41:34 · 4550 阅读 · 0 评论 -
linux c++之so隐式调用
linux环境下,调用so动态链接库,有两种方式,显示调用(dlopen加载so库,dlsym获取函数指针)和隐式调用(编译时需要头文件和so库)。本文主要讲隐式调用。隐式调用由系统加载完成,对程序员透明;显式调用由程序员在需要使用时自己加载,不再使用时,自己负责卸载(1)动态库代码:dl_func.cextern char name[];int add(int a, int b){printf("calling add\n");printf("Hello, %s!\n"..原创 2021-12-30 15:43:19 · 2637 阅读 · 0 评论 -
gcc/makefile/shell编译详解
gcc 与 g++ 分别是 gnu 的 c & c++ 编译器 gcc/g++ 在执行编译工作的时候,总共需要4步:1、预处理,生成 .i 的文件[预处理器cpp] 2、将预处理后的文件转换成汇编语言, 生成文件 .s [编译器egcs] 3、有汇编变为目标代码(机器代码)生成 .o 的文件[汇编器as] 4、连接目标代码, 生成可执行程序 [链接器ld]-x language filename设定文件所使用的语言,使后缀名无效,对以后的多个有效.也就是根据约定C语言的后缀名称是原创 2021-12-30 11:18:19 · 1627 阅读 · 0 评论 -
./configure 自动生成makefile
新建helloworld目录,里边有一个源码文件helloworld.c。 $ autoscan $ ls configure.scan helloworld.c 新生成的文件configure.scan改名为configure.in,并编辑修改内容,去掉无关的语句:===================configure.in内容开始============= # -*- Autoconf -*- # Process this fil...原创 2021-12-10 21:32:13 · 1688 阅读 · 0 评论