a我考网

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 41|回复: 0

[C语言] C技巧:VC中编译、运行程序的知识点(1)

[复制链接]
发表于 2012-7-31 21:48:08 | 显示全部楼层 |阅读模式
C技巧:VC中编译、运行程序的知识点(1)
) X: M! j, w2 N; g7 S. I1、Run-Time Library ( A0 A0 Y! J' I4 M0 \* r9 h" ]
  Run-Time Library是编译器提供的标准库,提供一些基本的库函数和系统调用。" J+ }5 P& U  Z3 N, k3 r" e
  我们一般使用的Run-Time Library是C Run-Time Libraries。当然也有Standard C++ libraries。; J& ?+ ~7 Y  C2 R8 F. Y" V9 M
  C Run-Time Libraries实现ANSI C的标准库。VC安装目录的CRT目录有C Run-Time库的大部分源代码。
8 E. g$ X: m+ w" m2 P  C Run-Time Libraries有静态库版本,也有动态链接库版本;有单线程版本,也有多线程版本;还有调试和非调试版本。; D8 E, K9 z% X4 I. z2 y  j2 M
  可以在"project"-"settings"-"C/C++"-"Code Generation"中选择Run-Time Library的版本。2 e7 h2 x0 d2 B1 O9 f
  动态链接库版本:
, O* T" c( o' u  /MD Multithreaded DLL 使用导入库MSVCRT.LIB
, u$ R6 K7 T  ~( p  }7 @  /MDd Debug Multithreaded DLL 使用导入库MSVCRTD.LIB0 p6 N8 `4 _3 ]
  静态库版本:
3 x$ H0 U/ l) r. A& Z! I  /ML Single-Threaded 使用静态库LIBC.LIB% C5 D. L" @6 b- B
  /MLd Debug Single-Threaded 使用静态库LIBCD.LIB
' J' a) ], x, j/ v3 `, a& [2 N  /MT Multithreaded 使用静态库LIBCMT.LIB
4 Z4 j/ V" }% ]; X  /MTd Debug Multithreaded 使用静态库LIBCMTD.LIB
1 B- e# W( I0 q2 y  C Run-Time Library的标准io部分与操作系统的关系很密切,在Windows上,CRT的io部分代码只是一个包装,底层要用到操作系统内核kernel32.dll中的函数,在编译时使用导入库kernel32.lib。这也就是为什么在嵌入式环境中,我们一般不能直接使用C标准库。
" g6 A6 ?2 B, D$ c4 N  在Linux环境当然也有C标准库,例如:
# H/ s' a8 o( l% [  ld -o output /lib/crt0.o hello.o -lc3 H( {- q+ P* P& k6 P# v
  参数"-lc"就是在引用C标准库libc.a。猜一猜"-lm"引用哪个库文件?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|Woexam.Com ( 湘ICP备18023104号 )

GMT+8, 2024-5-22 18:29 , Processed in 0.161206 second(s), 21 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表