编译linux下录屏录音摄像头叠加程序的动态库版本_x11grab linux依赖库

img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上C C++开发知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

如果你需要这些资料,可以戳这里获取


借鉴博客  
 https://blog.csdn.net/whahu1989/article/details/82078563#t5


make 编写生成动态库 失败


### 4、linux zlog日志库


借鉴博客


https://blog.csdn.net/wangqingchuan92/article/details/107338690/  
 https://www.cnblogs.com/superPerfect/p/3617716.html  
 https://blog.csdn.net/sinat\_36436112/article/details/105921759?utm\_term=zlog%E6%97%A5%E5%BF%97%E7%9A%84%E9%85%8D%E7%BD%AE%E6%96%87%E4%BB%B6&utm\_medium=distribute.pc\_aggpage\_search\_result.none-task-blog-2allsobaiduweb~default-0-105921759&spm=3001.4430


http://hardysimpson.github.io/zlog/ 下载最新的zlog源码包以及代码直接输出配置文件  
 https://blog.csdn.net/fireblue1990/article/details/55808086  
 获取本地时间 创建文件夹mkdir函数 注意操作mode |来组合



void GetTimeEx2(char *pBuf)
{
time_t nt;
time(&nt);

struct tm *local;
local = localtime(&nt);
sprintf(pBuf, "%04d%02d%02d", local->tm_year + 1900,
    local->tm_mon + 1,
    local->tm_mday);

}
bool InitLogFile(void)
{
int rc;

char *szAppPath;

szAppPath = getcwd(NULL, 0);
char szTime[32] = { 0 };
GetTimeEx2(szTime);

char szConfigPath[10000] = { 0 };
sprintf(szConfigPath, "%s/zlog.conf", szAppPath);

char szLogFilePath[10000] = { 0 };
sprintf(szLogFilePath, "%s/log", szAppPath);

if (access(szLogFilePath, 0) < 0)
    mkdir(szLogFilePath, S_IRWXU | S_IRWXG);

char szLogFilePathEx[1000] = { 0 };
sprintf(szLogFilePathEx, "%s/log/DesktopRecord-%s.log", szAppPath, szTime);

FILE *pFile = fopen(szConfigPath, "wb");
if (pFile)
{
    char *pWriteData = "[formats]\n";
    fwrite(pWriteData, 1, strlen(pWriteData), pFile);

    char *pWriteData2 = "my = \"%d|%V| %m%n\"\n";
    fwrite(pWriteData2, 1, strlen(pWriteData2), pFile);

    char *pWriteData3 = "[rules]\n";
    fwrite(pWriteData3, 1, strlen(pWriteData3), pFile);

    //char *pWriteData4 = "my_cat.DEBUG >stdout;my\n";
    //fwrite(pWriteData4, 1, strlen(pWriteData4), pFile);

    char szData[1000] = { 0 };
    sprintf(szData, "my_cat.DEBUG \"%s\";my\n", szLogFilePathEx);
    fwrite(szData, 1, strlen(szData), pFile);

    fclose(pFile);
    pFile = NULL;
}

rc = dzlog_init(szConfigPath, "my_cat");
if (rc) {
    return false;
}

return true;

}
CManager::CManager()
{
InitLogFile();
// dzlog_init(“test.conf”, “my_cat”);
m_zc = zlog_get_category(“my_cat”);
av_register_all();
avcodec_register_all();
InitVideoInput();

}

CManager::~CManager()
{
zlog_fini();
}


### 5、gbd调试


gdb a.out 调试允许程序  
 r 运行  
 b 可以接函数名或者cpp文件:行数 下断点  
 n 断点下一步  
 p 接变量名 可以查看变量的名称  
 wh 查看源码  
 bt 奔溃后查看堆栈调用


借鉴博客  
 https://blog.csdn.net/niyaozuozuihao/article/details/91802994




![img](https://img-blog.csdnimg.cn/img_convert/aace22632cca1d4fc929ead4bf2c8323.png)
![img](https://img-blog.csdnimg.cn/img_convert/8f85dc548d15625c09b75126c8be6ab6.png)

**网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。**

**[需要这份系统化的资料的朋友,可以添加戳这里获取](https://bbs.csdn.net/topics/618668825)**


**一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**

tps://bbs.csdn.net/topics/618668825)**


**一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**

  • 5
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值