-
2019-04-25 15:11:18
mingdu.zheng at gmail dot com
https://blog.csdn.net/zoomdy/article/details/89516574问题描述
在分步骤编译时,首先预处理成 foo.i 文件,然后编译预处理文件为 foo.o,使用命令行单独运行时,foo.i 文件被保留,使用 make 编译时 foo.i 文件被自动删除。
解决办法
Makefile 中添加 .PRECIOUS 指令,告诉 make 保留后缀为 .i 的中间文件
.PRECIOUS: %.i
或者在Makefile 中添加 .SECONDARY 指令,make 将保留所有中间文件
.SECONDARY:
参考资料
更多相关内容 -
编译产生的中间文件作用
2018-06-06 10:55:11vs下debug/release目录文件作用 pdb文件调试用,pdb记录数据和调试信息 跟踪源码,是一种调试数据库文件,不需要放到服务器上 一种 PowerBuilder 动态库,作为本地DLL的一个替代物。程序数据库文件,在建立工程时...vs下debug/release目录文件作用
- pdb文件调试用,pdb记录数据和调试信息 跟踪源码,是一种调试数据库文件,不需要放到服务器上
一种 PowerBuilder 动态库,作为本地DLL的一个替代物。程序数据库文件,在建立工程时自动生成,其中存放程序的各种信息,用来加快调试过程的速度。记录了程序有关的一些数据和调试信息。 - map文件调试用,map记录地址、长度等信息 跟踪源码 不需要放到服务器上
- exp文件
exp文件是指导出库文件的文件,简称导出库文件,它包含了导出函数和数据项的信息。例如,当A.dll 与 B.dll 同时需要导入对方的函数才能生成dll文件,此时就会创建A.exp,B.exp文件
当LIB创建一个导入库,同时它也创建一个导出库文件。如果你的程序链接到另一个程序,并且你的程序需要同时导出和导入到另一个程序中,这个时候就要使用到exp文件 - ilk文件
【ilk】一种链接临时文件。连接过程中生成的一种中间文件,只供LINK工具使用 - lib文件
A:作为生成dll库的导出库文件,记录了函数签名,数据签名等,在静态调用dll时需要引用到
B:作为静态库文件 - dll文件
动态链接库(DLL,在Unix世界中被称作共享目标即.so文件)可以帮我们节省内存空间。当我们链接到一个dll的时候,不会有代码拷贝到目标可执行文件里面,但是会有一个引用放在可执行文件里面。当可执行文件被加载执行的时候系统会检查它使用到的dll然后加载这些dll。使用dll我们可以很方便的升级我们的客户端程序,而不用再次更新可执行文件。 - exe文件 编译连接而成的可执行文件
其它中间文件
- obj文件
一种对象文件。由编译器或汇编工具生成的目标文件,是模块的二进制中间文件。 静态库.lib 文件就可以理解为obj文件的集合 - 【idb】一种 MSDev 中间层文件。开发文件。
- 【pch】一种预编译头文件。预编译头文件,比较大,由编译器在建立工程时自动生成,其中存放有工程中已经编译的部分代码,在以后建立工程时不再重新编译这些代码,以便加快整个编译过程的速度。
qt中的.pro,pri,prl,prj文件
- pdb文件调试用,pdb记录数据和调试信息 跟踪源码,是一种调试数据库文件,不需要放到服务器上
-
VS2017工程总是很大?如何删除VS2017工程一些中间文件
2019-11-15 18:01:01今天分享暴力删除所有无关文件,至少可以降低磁盘空间啊?拷贝给别人也方便啊。 一句代码搞定(这是.bat文件,直接复制到记事本改个后缀名即可): 这句话会递归的删除符合条件的文件夹,在这里是Debug、release、x...VS2017工程总是很大,你会发现你的代码不到1M,但是工程有100M+?
今天分享暴力删除所有无关文件,至少可以降低磁盘空间啊?拷贝给别人也方便啊。
一句代码搞定(这是.bat文件,直接复制到记事本改个后缀名即可):
这句话会递归的删除符合条件的文件夹,在这里是Debug、release、x64、.vs文件夹
下面是递归的!!!,他会把子文件夹符合也删了,假想你有很多vs工程,是不是很方便,全都干掉
for /r %%i in (Debug,release,x64,.vs) do rd /s /q "%%i"
或许你会想.vs是啥?这是个隐藏文件,是你自己电脑vs编译器的工程信息,一般会有100M大小,显然你把这个发给别人,是没有用的,别人电脑和你的版本系统都不一样。即使你打开别人xxx.sln了,VS也会询问你是否建立新的(会覆盖原来的.vs文件夹),所以再发给别人前删了,新环境下VS会自动创建.vs文件夹的。而且节省空间,节省时间
-
makefile将中间文件生成到临时目录
2017-11-19 17:52:19最终目录结构是这个样子,tmp存放了所有中间文件, 源码在src目录。 直接在根目录执行make就可以了。 root@ubuntu:~/projects/MakeFileProject1# tree . . ├── makefile ├── src │ └── main.cpp ...TARGET := test CC := g++ #注意每行后面不要有空格,否则会算到目录名里面,导致问题 SRC_DIR = src BUILD_DIR = tmp OBJ_DIR = $(BUILD_DIR)/obj DEPS_DIR = $(BUILD_DIR)/deps #这里添加其他头文件路径 INC_DIR = \ -I./include \ -I./src \ #这里添加编译参数 CC_FLAGS := $(INC_DIR) -g -std=c++11 LNK_FLAGS := \ -L/usr/local/lib #这里递归遍历3级子目录 DIRS := $(shell find $(SRC_DIR) -maxdepth 3 -type d) #将每个子目录添加到搜索路径 VPATH = $(DIRS) #查找src_dir下面包含子目录的所有cpp文件 SOURCES = $(foreach dir, $(DIRS), $(wildcard $(dir)/*.cpp)) OBJS = $(addprefix $(OBJ_DIR)/,$(patsubst %.cpp,%.o,$(notdir $(SOURCES)))) DEPS = $(addprefix $(DEPS_DIR)/, $(patsubst %.cpp,%.d,$(notdir $(SOURCES)))) $(TARGET):$(OBJS) $(CC) $^ $(LNK_FLAGS) -o $@ #编译之前要创建OBJ目录,确保目录存在 $(OBJ_DIR)/%.o:%.cpp if [ ! -d $(OBJ_DIR) ]; then mkdir -p $(OBJ_DIR); fi;\ $(CC) -c $(CC_FLAGS) -o $@ $< #编译之前要创建DEPS目录,确保目录存在 #前面加@表示隐藏命令的执行打印 $(DEPS_DIR)/%.d:%.cpp @if [ ! -d $(DEPS_DIR) ]; then mkdir -p $(DEPS_DIR); fi;\ set -e; rm -f $@;\ $(CC) -MM $(CC_FLAGS) $< > $@.$$$$;\ sed 's,\($*\)\.o[ :]*,$(OBJ_DIR)/\1.o $@ : ,g' < $@.$$$$ > $@;\ rm -f $@.$$$$ #前面加-表示忽略错误 -include $(DEPS) .PHONY : clean clean: rm -rf $(BUILD_DIR) $(TARGET)
最终目录结构是这个样子,tmp存放了所有中间文件, 源码在src目录。
直接在根目录执行make就可以了。
root@ubuntu:~/projects/MakeFileProject1# tree .
.
├── makefile
├── src
│ └── main.cpp
├── test
└── tmp
├── deps
│ └── main.d
└── obj
└── main.o -
IAR 编译完毕时自动删除 .obj 中间文件的方法
2017-09-26 19:04:52IAR 编译完毕时自动删除 .obj 中间文件的方法 本文介绍了如何配置 IAR 编译器使得其自动删除编译过程中生产的 .obj 中间文件。 并且,在本文末尾顺带提及了在CCS编译器中可以使用 bat 文件删除 .obj 中间文件的... -
.gitignore模板,忽略Clion, vscode, C++, CMake产生的中间文件。
2019-06-28 10:06:03.gitignore模板,忽略Clion, vscode, C++, CMake产生的中间文件。 -
VS2003 fetal error C1083 无法打开编译器中间文件:“C:\COCUMEN~1\ADMINI~1\LOCALS~1\Temp\_CL_~~~” ...
2018-03-05 11:47:45在XP 上运行VS2003 生成解决方案时出现了:fetal error C1083 无法打开编译器中间文件:“C:\COCUMEN~1\ADMINI~1\LOCALS~1\Temp\_CL_~~~” permission denied的错误。在C盘中寻找上述文件也不存在,说明不是上述文件... -
Git 将一些生成的中间文件或者文件夹忽略。禁止提交。
2017-02-15 14:31:33为了避免出现大量的改动记录会将一些编译中间生成的文件夹 或者文件在git中配置 忽略掉他们。具体的步骤如下: 1.通过Git Bash 进入命令行,在需要创建隐藏的文件目录下创建.gitignore文件 touch .gitignore 生成 ... -
错误 19 error C1088: 无法刷新编译器中间文件:“C:\U...: No space left 【by徐玉丽】
2016-11-08 16:47:04error C1088: 无法刷新编译器中间文件:“C:\Users\ADMINI~1\AppData\Local\Temp\_CL_bd98e4afgl”: No space left on device (..\editor-support\cocostudio\CCComRender.cpp) C:\Program Files (x -
Linux Makefile自动生成头文件依赖的过程中,中间文件 .d 的创建与更新
2016-11-22 20:32:24参考资料: ... by 陈晧 初次编译时,.d 不存在: ... 包含 .d(注意:该文件定义 .d 依赖于 .cpp .h,由于 .d 是新建文件,肯定不过时) 从最终目标开始推导依赖关系链 后续编译时,.d 已存在: 包含 .d -
关于编译过程中生成的中间文件和库文件
2014-05-16 10:11:09目标文件和静态库文件比较类似,函数和数据被编译为机器码之后存入一个二进制文件中,在使用目标文件或者静态库文件时,链接器(Linker)从目标文件或静态库中找到这些代表函数和数据的二进制代码并把它们复制到exe... -
gcc编译中间文件查看
2009-08-31 00:48:00gcc编译流程有:预处理、编译、汇编、链接每个过程分别产生相应的中间文件。预处理:.i编译:.s汇编:.o连接:.exe 下面以一个例子说明,仅main.h和main.c两个文件。main.h 内容char str[] = "hello"; main.c 内容... -
Linux编译安装后清理中间文件方法
2011-09-18 21:48:12make clean 不过这个命令会把编译出来的程序一起删掉。所以 make install 后再执行,不然 make install 会因为找不到需要安装的东西而重新 make 。 -
makefile中的all和.PHONY的作用(主要在于自动删除中间文件)
2013-01-25 04:11:18假如你想生成的最终文件的名字就叫APP,而且想删除中间生成的文件,则makefile可以这样写: OBJ= app1.o app2.o CC = gcc all: APP clean APP: $(OBJ) # 这一行不能省,要不然还没生成APP 所有.o文件就已经被... -
VC/VS中间文件清理批处理
2012-12-03 20:27:24今天整理电脑中的东西,拿着奥卡姆剃刀,把多余的东西都Del掉吧,看到平时建立VC工程的目录实在是大的离谱,记得之前写过一个删除中间文件的程序不过找不到了,确翻出来一个批处理,放到根目录就能遍历文件夹,删除... -
Qt:QML生成翻译中间文件ts
2016-10-25 10:53:07在.pro文件中加入这段代码就可以生成翻译中间文件tsTRANSLATIONS+=zh_...text: qsTr("systemdiagnostics")但是按上图的lupdate更新翻译后,发现需要翻译的文字没有导出到翻译中间文件,在.pro中再加入一段代码lupd -
atal error C1088: 无法刷新编译器中间文件:“C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\_CL_ae41746agl”
2011-09-09 10:25:04关于fatal error C1088: 无法刷新编译器中间文件:“C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\_CL_ae41746agl”: No space left on device 报错的原因是:C盘空间不足造成的。 -
GCC编译器生成可执行文件中间过程
2015-10-09 21:43:34编译器将源文件.c编译成可执行文件.out,有以下中间过程: 1、预处理 .c -> .i gcc -o helloworld.i helloworld.c -E 展开头文件,将头文件内容写入.c文件。宏替换。 2、编译 .i -> .s 3、汇编 .s -> .o ... -
在keil工程中删除编译文件的方法
2020-07-15 09:28:07所以我们在coding只有提交之前必须要把调试过程中生成的编译链接的中间文件如.obj .axf .elf .map文件等等。 1. 利用keil自身的软件功能 可以清理部分编译产生的中间文件,但是不能删除所有。 2.利用.bat文..... -
如何清理cmake产生的各种文件
2020-02-28 16:11:51办法很简单,删除build目录即可: rm -rf build -
vscode 配置 Latex 编译后自动清理多余文件(.log .out等文件)
2019-05-27 09:10:56在使用vscode配置Latex时我们都会安装一个环境,就是:Latex Wordshop,在setting中是可以设置生成pdf后清理这些文件,但是版本不同的设置的方法也不同,因此: 新版: setting中配置: "latex-workshop.latex.... -
Linux文件截取前几行,后几行,中间几行命令
2021-05-17 11:11:23查看文件中间一段,你可以使用sed命令,如: sed -n ‘100,200p’ filename 这样你就可以只查看文件的第100行到第200行。 截取的文件可以用重定向输入到新的文件中: head -100 filename >a.txt ... -
linux shell文件截取前几行,后几行,中间几行命令
2022-02-08 08:56:45如果你只想看文件的前100行,可以使用head命令,如 head-100 filename ... 查看文件中间一段,你可以使用sed命令,如: sed-n ‘100,200p’ filename 这样你就可以只查看文件的第100行到第200行 ... -
打开运行.ipynb和将.ipynb生成.py文件的操作
2017-07-12 21:15:58打开运行.ipynb和将.ipynb生成.py文件的操作一、打开运行.ipynb进入到python的Scripts文件中 按顺序执行下面三个命令 pip install ipython pip install “ipython[notebook]” ipython notebook 浏览器会打开... -
nacos(二)--读取不到配置中心文件问题
2020-09-11 14:07:40测试nacos配置中心时,一直获取不到nacos配置文件中的内容,搞了半天发现两点问题: spring.cloud.nacos.config.namespace:xxx,要和nacos 配置中心(页面配置)的命名空间的ID一致 如果bootstrap.yml文件中没有... -
【Linux】查看文件中的某几行(中间几行)
2020-09-11 17:54:21n +100:从100行开始显示,显示100行以后的 head -n 100:显示前面100行 2、sed命令 sed -n '5,10p' filename # 只查看文件的第5行到第10行。 3、grep命令 grep -C 5 foo filename # 显示file文件中匹配foo字符串那... -
VS error C1083: 无法打开编译器生成的文件: Permission denied
2019-12-23 15:52:53概述 在将一个项目移到另一个地方时,出现了这个问题,一直是拒绝访问,以为是权限的问题,其实不是。 解决方法 将 x64\Debug 底下的文件全部删除,重新编译生成即可。 ... -
Linux环境下文件写入失败可能原因
2019-02-10 17:50:11Linux环境下文件写入失败可能原因 一.空间爆满 df -h #查看空间占用情况 二.文件数量inodes超出限制 df -i 解决办法 <1> 使用NetApp的存储服务器则修改inodes数量 maxfiles volname [new_number_of_... -
idea的文件目录缩放中间缩放的解决办法
2020-09-22 19:59:57设置,关闭Compact Middle Packages -
linux 如何显示一个文件的某几行(中间几行)
2020-03-30 13:47:37Linux统计文件行数 语法:wc [选项] 文件… 说明:该命令统计给定文件中的字节数、字数、行数。如果没有给出文件名,则从标准输入读取。wc同时也给出所有指定文件的总统计数。字是由空格字符区分开的最大字符串。 ...
收藏数
1,027,107
精华内容
410,842