zoukankan      html  css  js  c++  java
  • linux下C程序printf没有立即输出的问题及我的Makefile文件

    昨天在linux下运行一个C程序,是处理一段视频中的每一帧的,本来在程序中是要每处理完一帧就要输出一条信息的,但是在运行是却不显示,而是在程序运行完成之后一块输出的,但是在windows中运行程序就没有这个问题。如果是这样的话,就非常不爽了,因为本来是想通过程序的输出来得到程序当前的运行状况,现在却达不到这种效果。然后上网上搜索了一下,看来果然有解决方案。存在这个问题的主要原因就是在调用printf输出信息后,程序并不是立即输出,而是将其输出到了缓存中,所以,我们要做的就是在printf之后立即将缓存中的信息输出到终端。所以可以在printf之后添加fflush(stdout),这样就能立即将缓存中的数据输出了。

    另外,附上Makefile文件,这是我以后在linux下写程序的时候的一个模板。

    TARGET:=attention
    INCDIR:=inc
    SRCDIR:=src
    OBJDIR:=obj
    $(shell if !([ -d $(OBJDIR) ]);then mkdir $(OBJDIR);fi)
    LIBDIR:=lib
    $(shell if !([ -d $(LIBDIR) ]);then mkdir $(LIBDIR);fi)

    CC :=g++

    FLAGS:=-Wall -W -I$(INCDIR) -D_DEBUG
    LIBS :=-lm

    OPENCV=1 #switch of opencv
    ifdef OPENCV
    FLAGS+=`pkg-config --cflags opencv`
    LIBS +=`pkg-config --libs opencv`
    endif

    #DBG=0
    ifdef DBG
    FLAGS+=-g
    else
    FLAGS+=-O2
    endif

    SRC:=$(wildcard $(SRCDIR)/*.cpp)
    OBJ:=$(patsubst %.cpp,$(OBJDIR)/%.o,$(notdir $(SRC)))

    #all:
    # @echo $(OBJ)
    #

    $(TARGET):$(OBJ)
    $(CC) -o $@ $^ $(FLAGS) $(LIBS)
    $(OBJDIR)/%.o:$(SRCDIR)/%.cpp
    $(CC) -c $< -o $@ $(FLAGS)
    .PHONY: clean
    clean:
    rm -f $(OBJDIR)/*.o *~ core

    Makefile其实还是很强大的,现在初学阶段只是简单的使用。
    这儿有几个比较好的makefile模板

  • 相关阅读:
    linux查看硬件信息的方法
    linux最常用命令
    研究php单例模式实现数据库类
    HTML5语义元素
    第一次博客作业
    2020系统综合实践 第7次实践作业 06组
    2020系统综合实践 第6次实践作业 06组
    2020系统综合实践 第5次实践作业
    2020系统综合实践 第4次实践作业
    2020系统综合实践 第3次实践作业
  • 原文地址:https://www.cnblogs.com/xkfz007/p/2222389.html
Copyright © 2011-2022 走看看