关于整个编译过程和库文件的问题

论述1在C中编译器单独编译(Compile)每个源文件(.c)生成相应的目标文件(.obj)链接器链接(Link)各个目标文件(.obj)和资源文件(.res)生成可执行... 论述1
在C中
编译器单独编译(Compile)每个源文件(.c)生成相应的目标文件(.obj)
链接器链接(Link)各个目标文件(.obj)和资源文件(.res)生成可执行文件(.exe)
其中,obj是Complie的产物,同时也是Link的对象,而exe是Link的产物

问题1(可多选)
静态库文件(lib)是
A、Compile的产物
B、Link的对象
C、Link的产物
D、其他(请详细说明)

论述2
link成功会生成可执行文件(exe),此时运行程序(Execute Program)就相当于运行exe文件

问题2(可多选)
动态库文件(dll)是
A、Link的产物
B、Execute时链接的对象
C、其他(请详细说明)

问题3
一个程序从编译、链接、生成可执行文件到运行它,是不是系统自动并且一定会生成lib和dll?
如果不是,如何手动去生成lib和dll?
展开
 我来答
FrankHB1989
2010-08-09 · TA获得超过4.2万个赞
知道大有可为答主
回答量:4569
采纳率:100%
帮助的人:3079万
展开全部
问题1:
BD
D:通过目标文件归档程序(VC++中是lib.exe)和其它方式(例如由dll文件生成lib文件)得到的产物 。
问题2:
AB
问题3:
不一定。首先,一个完整的程序的全编译过程可以仅依赖于现有的库文件,且不在这个程序的编译过程生成库文件。其次,库文件的格式不一定是lib和dll文件。至于手动生成lib和dll,这个和使用的工具相关。例如VC++的命令行可以用编译程序cl.exe编译源文件为目标文件,用归档程序lib.exe连接obj和lib文件生成静态库,用链接程序link.exe链接目标文件和资源文件生成exe和dll。
====
[原创回答团]

参考资料: 原创 + Google确认

栩箭
2010-08-09 · TA获得超过5310个赞
知道大有可为答主
回答量:3036
采纳率:0%
帮助的人:1629万
展开全部
1 ABD, 会加载到生成的可执行文件中
2 ABC, 不会加载到生成的可执行文件中
3 不是. 编译器会有对应的选项去帮助你生成所需的文件, 比如
gcc a.c -shared -o a.dll -Wl,--output-def,a.def,--out-implib,liba.a
就可以给你生成个.dll
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式