T001:启动

王朝other·作者佚名  2006-01-09
宽屏版  字体: |||超大  

利用最少的工具,不用CRT,建立一个简单的可执行文件。

揭开面纱,找到vc crt的真正入口。

1、建立环境:

D:\>mkdir mycrt

D:\>cd mycrt

D:\>mkdir bin lib include t001

拷贝Microsoft的cl和link以及相关文件到bin目录

cl.exe

link.exe

c1.dll

c2.dll

msdb71.dll

这是Microsoft Visual Studio .NET 2003中的文件,最初是用vc6试验成功的。

2、建立初始化环境文件

在mycrt目录下建立crtenv.bat,内容如下:

d:

cd d:\mycrt

set path=d:\mycrt\bin;d:\tools;"C:\Program Files\Tools\UltraEdit"

set LIB=d:\mycrt\lib

set INCLUDE=d:\myvc\include

set VS71COMNTOOLS=

最好先用set命令,看看当前的环境设置,去除所有影响环境纯度的环境变量。

每次在控制台下执行此bat文件,设置环境变量。

在d:\tools目录下游borland的grep.exe。

3、建立crt入口函数

在t001目录中建立文件mycrt0.c:

void mainCRTStartup(void)

{

int mainret;

mainret = main();

}

4、建立测试文件

在t001目录中建立文件mytest.c:

int main()

{

return 0;

}

5、建立编译的批处理(暂不用makefile,省得用nmake.exe)

在t001目录中建立文件build.bat:

cl /nologo /ML /X /Zl /c mytest.c

cl /nologo /ML /X /Zl /c mycrt0.c

link /nologo /NODEFAULTLIB mytest.obj mycrt0.obj

dir

其中,

***cl的命令行选项含义如下:

/ML :单线程

/X :忽略标准Include目录

/Zl :产生的obj文件不包括默认库名

/c :只编译不连接

***link的命令行选项含义如下:

/NODEFAULTLIB :不连接默认的库

6、compile & link

D:\mycrt\t001>build

ok,没有报错,可以看到mytest.exe了。

7、执行

D:\mycrt\t001>mytest.exe

没有任何反应,回到控制台提示符,说明程序正常执行。

中午休息的时间太短了,已经迟到了。

tbc............

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
© 2005- 王朝网络 版权所有