|
|
T001:启动 |
|
|
作者:未知 来源:月光软件站 加入时间:2005-2-28 月光软件站 |
利用最少的工具,不用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............

|
|
相关文章:相关软件: |
|