手动编译链接一个HelloWorld

集成开发环境让我们对程序的调试编译链接都变得如何轻松.作为一名极客怎会止步于这种表象?你或许听说过"编译""链接"这种最熟悉的生僻词.编译和链接到底是怎么完成的?今天我们来动手链接一个自己的程序:

1寻找"cl"编译器

你需要一个编译器,什么?没有?如果你安装了集成开发环境的话,编译器已经自动被安装到了你计算机中.不信?搜索cl.exe
手动编译链接一个HelloWorld_第1张图片
看找到了吧.打开它们所在的位置,用命令行工具在windows下是cmd定位到这个目录.

2编写一个HelloWorld

打开你的文本编辑器,在里面输入类似这样的内容,保存为xxx.c到一个目录
手动编译链接一个HelloWorld_第2张图片
本人偷懒就直接放在cl.exe下了.如果你也这样做,请在实验完毕后删掉我们的三个文件.

3看,我要编译了

在定位在cl.exe 的命令行输入 按照以下命令格式输入:
cl 文件路径文件名 /I "包含库所在地址"
输入回车
包含库所在地址指的是stdio.h所在的地址.
我这里具体输入的是:
cl hello.c /I "C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include"
如果此时命令行不报错而是显示:
hello.obj
那么我们的工作就是成功了.

4链接成exe

在上一步骤我们已经生成了一个目标文件:hello.obj
我们尝试下面的命令:
link hello.obj /LIBPATH:"C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\lib" /SUBSYSTEM:CONSOLE /MACHINE:X86 "kernel32.lib" "user32.lib" "gdi32.lib" "winspool.lib" "comdlg32.lib" "advapi32.lib" "shell32.lib" "ole32.lib" "oleaut32.lib" "uuid.lib" "odbc32.lib" "odbccp32.lib"
请将上面的路径替换成你自己电脑上的kernel32.lib等文件所在路径.
如果有报错:找不到xxx.lib,尝试搜索它的位置.你可能会发现它在另外的一个目录.我也不知道怎么同时使用多个链接目录.如果你知道可以告诉我一声哟.但是我们也有解决方案:
计算机->属性->高级设置->环境变量
在"系统变量"一栏,寻找是否有LIB一项,如果不存在,则新建一个,将我们前面找到的那两个路径填入其中,但是要用;作为每个路径的结尾.
手动编译链接一个HelloWorld_第3张图片
重启你的计算机.
回到命令行那一步,输入:
link hello.obj
回车.
一个金光闪闪的exe就生成在我们目录下面了.
运行一番后记得删除它们三个哟.
想看到更多有趣好玩的内容继续关注本博客.(~ o ~)~

关于更丰富的编译链接命令,你可以参考这里

修改于2018年12月13日
为代码添加了高亮

原时间:
2015年06月01日 21:35:01

你可能感兴趣的:(实践)