![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Linux C
风筝_
这个作者很懒,什么都没留下…
展开
-
Makefile编写小技巧---用gcc命令自动生成目标文件和源文件的依赖关系
下载了其他项目的源代码,是用C语言编写的,自己写的程序里要用到,但是项目里没提供Makefile文件,由于文件的数量较多较复杂,自己写Makefile文件编译的时候,总是找不清目标文件和源文件的依赖关系,不是少这就是少那,后来在网上发现了用gcc就能自动生成目标文件和源文件的依赖关系,自己在写Makefile时就会清楚很多。下面以自己的一个C程序为例,内容不重要,此处略去:gcc -M test.c得到:从上面可以看出,该命令把所有头文件都找出来了,包括很多系统头文件,如果我们不需要输原创 2020-11-28 21:36:23 · 594 阅读 · 0 评论 -
clock()与gettimeofday()
目录1.clock()2.gettimeofday()----linux C函数1.clock()是C标准库<time.h>中的函数声明为:clock_t clock(void)功能:创建程序进程到clock()函数被调用之间的cpu时钟计时单位数,即硬件滴答数。可通过下面的CLOCKS_PER_SEC换算成秒。返回值类型为clock_t,clock_t是用来保存时间的数据类型,typedef long clock_t,其实就是一个长整型。常量CLOC..原创 2020-11-23 16:45:52 · 983 阅读 · 0 评论 -
C语言源程序到可执行程序过程
C语言从源码到可执行程序的过程假设我们有源程序helloworld.c:1.预处理命令:gcc -E helloworld.c -ohelloworld.i作用:将helloworld.c预处理输出到helloworld.i文件2.编译命令:gcc -Shelloworld.i -ohelloworld.s作用:将预处理输出文件helloworld.i编译成helloworld.s文件3.汇编命令:gcc -chelloworld.s -ohellowor...原创 2020-09-18 09:51:58 · 1327 阅读 · 0 评论 -
LeetCode-155.最小栈(C实现)
题目:设计一个支持 push ,pop ,top 操作,并能在常数时间内检索到最小元素的栈。push(x) —— 将元素 x 推入栈中。pop()—— 删除栈顶的元素。top()—— 获取栈顶元素。getMin() —— 检索栈中的最小元素。方法1:这种方法只能在线性时间内检索到最小元素,而不是常数时间内检索到最小元素,但是在leetcode中提交竟然也通过了。。。准确的说,这种方法是不符合题意的。typedef struct { int a[10000]; ..原创 2020-09-06 23:52:04 · 153 阅读 · 0 评论 -
调试工具GDB的基础指令
假设现在有文件c1.c,在该目录下打开命令行,用gcc进行编译,编译的时候加上‘-g’。它的目的是向编译后的可执行程序中加入包括源代码、符号表在内的调试信息,这些额外的内容将有助于GDB更好地完成调试工作:接下来启动gdb并调试刚生成的程序a.exe:由于版本不同,这里是gdb32。-silent用于屏蔽gdb的前导信息,否则它会先在屏幕上打印一堆免责条款。启动gdb后,它输出的信息表明已经读入了a.exe的符号表。接下来,gdb会显示自己的提示符“(gdb)”,提示并等待你输入调试命令。原创 2020-09-05 17:00:42 · 168 阅读 · 0 评论 -
UNIX环境高级编程第1.5节 Linux 输入输出与重定向问题
1.文件描述符文件描述符(file descriptor)通常是一个小的非负整数,内核用以标识一个特定进程正在访问的文件。当内核打开一个现有文件或创建一个新文件时,它都返回一个文件描述符。在读、写文件时,可以使用这个文件描述符。2.标准输入、标准输出和标准错误按惯例,每当运行一个新程序时,所有的shell都为其打开3个文件描述符,即标准输入(standard input)、标准输出(standard output)和标准错误(standard error)。如果不做特殊处理,则这三个描述符.原创 2020-05-27 17:49:59 · 216 阅读 · 0 评论 -
linux ls命令的简要实现
本程序来自《unix环境高级编程》第三版 图1-3程序名:myls.c#include "apue.h"#include <dirent.h>int main(int argc,char *argv[]){ DIR *dp; struct dirent *dirp; if(argc!=2) err_quit("usage:ls directory_name"); if((dp=opendir(argv[1]))==NULL) err_sys("can't o原创 2020-05-21 11:54:39 · 318 阅读 · 0 评论 -
linux getcwd、chdir函数详解
getcwd函数:头文件:unistd.h函数原型:char *getcwd(char *buf, size_t size);功能:getcwd()会将当前工作目录的绝对路径复制到参数buffer所指的内存空间中,参数size为buf的空间大小。chdir函数:头文件:unistd.h函数原型:int chdir(const char *path);参数:path可以是绝对目录或者相对目录功能:改变当前工作目录返回值:成功返回0,失败返回-1示例程序getcwd_c.原创 2020-05-27 16:11:07 · 4683 阅读 · 0 评论