https://www.jianshu.com/p/eae8da7caac6
clang -g -o aa aa.c
把 aa.c文件编译成aa 可执行文件
-g 输出错误信息
-O 指令优化的级别
-o 输入文件
-I 指定头文件的位置
-L 第三方库的文件的位置
-l 指定使用哪个库
./aa 执行aa文件
=========编译过程
预编译
正式编译
链接库
静态链接库
将没有main方法的 c文件编译成一个 .o文件 库文件 供其他应用使用 将生成一个 app.o文件
clang -g -c app.c
==编译一个静态库
libtool -static -o libmylib.a app.o 将app.o文件编译成一个静态库
clang -g -o aa aa.c -I . -L . -lmylib
-I 所应用需要的头文件的位置
. 点代表当前目录下面
-L 链接文件的位置
. 点代表当前位置下
-lmylib 链接文件的文件名
============== c文件调试
lldb aa 将aa文件放在 可执行调试中
b main 在main方法上设置断点
break list 查看有多少断点
l 查看源码(list)
r 运行(run)
s 到函数里面去
p 打印变量(printf)
finish 退出当前函数 到上一个函数中去
n 执行下一行 (next)
c 结束调试
quit 退出调试
== 会生成一个 .dYSM文件
cd dYSM--Contents--Resources--DWARF
dwarfdump aa
=============ffpeg 输入日志信息
ffpeg 日志系统
#include <libavutil/log.h>
int main(int argc,char* argv[]){
av_log_set_level(AV_LOG_DEBUG);
av_log(NULL,AV_LOG_INFO,"hello word===\n");
return 0;
}
==============ffpeg 文件 的删除与重命名
avpriv_io_delete();
avpriv_io_remov();
clang -g -o ffpeg ffpeg.c -lavutil
clang -g -o ffpeg ffpeg.c `pkg-config --libs libavformat`
pkg-config --libs libavformat 找到 libavformat的位置
#include <stdio.h>
#include <libavutil/log.h>
#include <libavformat/avformat.h>
int main(int argc,char* argv[]){
// av_log_set_level(AV_LOG_DEBUG);
av_log(NULL,AV_LOG_INFO,"hello word===%s\n","bbbb");
int result;
result=avpriv_io_delete("./abc.txt");
av_log(NULL,AV_LOG_ERROR,"hello word===%d\n",result);
if(result>=0){
av_log(NULL,AV_LOG_INFO,"hello word===%s\n","删除成功");
}else{
av_log(NULL,AV_LOG_ERROR,"hello word===%s\n","删除失败");
return -1;
}
return 0;
}
重命名
#include <stdio.h>
#include <libavutil/log.h>
#include <libavformat/avformat.h>
int main(int argc,char* argv[]){
// av_log_set_level(AV_LOG_DEBUG);
av_log(NULL,AV_LOG_INFO,"hello word===%s\n","bbbb");
int result;
result=avpriv_io_move("./abc.txt","./abc11.txt");
if(result<0){
av_log(NULL,AV_LOG_ERROR,"hello word===%s\n","重命名失败");
return -1;
}
return 0;
}
打开文件夹
avio_open_dir()
avio_read_dir() 读取文件中的每一项
avio_close_dir() 关闭文件夹
AVIODirContext 炒作目录的上下文
AVIODirEntry 目录项
#include <stdio.h>
#include <libavutil/log.h>
#include <libavformat/avformat.h>
int main(int argc,char* argv[]){
AVIODirContext *ctx=NULL;
AVIODirEntry *entry =NULL;
int ret;
av_log_set_level(AV_LOG_DEBUG);
ret=avio_open_dir(&ctx,"./",NULL);
if(ret<0){
av_log(NULL,AV_LOG_ERROR,"hello word===%s\n","打开文件失败");
return -1;
}
while (1) {
ret= avio_read_dir(ctx,&entry);
if(ret<0){
av_log(NULL,AV_LOG_ERROR,"hello word===%s\n","读取文件失败");
return -1;
}
if(!entry){
break;
}
av_log(NULL,AV_LOG_INFO,"%12"PRId64" %s \n",entry->size,entry->name);
}
avio_close_dir(&ctx);
return 0;
}
编译
clang -g -o ffpeg ffpeg.c `pkg-config --libs libavformat` -lavutil
运行
./ffpeg