c语言编译库文件
开发C程序有四个步骤:编辑、编译、连接和运行。
任何一个体系结构处理器上都可以使用C语言程序,只要该体系结构处理器有相应的C语言编译器和库,那么C源代码就可以编译并连接到目标二进制文件上运行。
1、预处理:导入源程序并保存(C文件)。
2、编译:将源程序转换为目标文件(Obj文件)。
3、链接:将目标文件生成为可执行文件(EXE文件)。
4、运行:执行,获取运行结果的EXE文件。
(1)c语言编译库文件扩展阅读:
将C语言代码分为程序的几个阶段:
1、首先,源代码文件测试。以及相关的头文件,比如stdio。H、由预处理器CPP预处理为.I文件。预编译的。文件不包含任何宏定义,因为所有宏都已展开,并且包含的文件已插入。我归档。
2、编译过程是对预处理文件进行词法分析、语法分析、语义分析和优化,生成相应的汇编代码文件。这个过程往往是整个程序的核心部分,也是最复杂的部分之一。
3、汇编程序不直接输出可执行文件,而是输出目标文件。汇编程序可以调用LD来生成可以运行的可执行程序。也就是说,您需要链接大量的文件才能获得“a.out”,即最终的可执行文件。
4、在链接过程中,需要重新调整其他目标文件中定义的函数调用指令,而其他目标文件中定义的变量也存在同样的问题。
② C语言如何生成库文件
有一些代码,我们编程时经常用到,或者我们对某些部分很熟悉,并写出了一些可用的接口。这时,我们会考虑把这些c文件做成一个lib库,以方便自己使用,或这给别人调用。
我这里介绍下在vc++6.0下如何来制作静态库:
第一步:创建一个工程,选择Win32Static Library,输入工程名。这时就创建好了。
第二步:工程创建好了,再点击新建,这时选择文件,选择c++ source file选项,创建一个.c
文件。
在这个文件中,你可以写入你要做成库的c函数。当然,可以继续创建其他c文件,然后将要供外部使用的接口单独放到头文件中,一般而言,一个c文件对应一个头文件。
第三步:完成以上步骤后,我们就可以生成库了。事实上,我们点击编译即可,这时就可以生成.lib文件了。
一般情况下,是可以正常生成lib文件的。有头文件和lib文件就可以给别人用了。然后我们可以写一个测试函数来试试可不可以使用。
要调用生成的lib中的函数,就要引入头函数。这时,你把lib和头文件放入当前工程中,但build的时候却显示了连接错误。那是因为你没有把lib文件包含进来。加入下面这句话即可了:
#pragma comment(lib, "mylib.lib ")
Ok,自己的lib库就这样做成了。以后可以随便调用了。
③ c语言文件用什么编译
如果你使用vc2010,则可以用nmake来编译。方法如下:
1)设置环境,在命令行中输入:
c:\"Program Files"\"Microsoft Visual Studio 10.0"\Common7\Tools\vsvars32.bat
这样就自动将nmake.exe, cl.exe等等的路径加入到环境变量path中去了。
2)编写一个最简单的c程序:test.cpp,内容为:
#include <stdio.h>
void main()
{
printf( "ok!\n" );
}
3)编写一个最简单的makefile(文件名就叫makefile,没有后缀名),和test.cpp在同一个目录。内容为:
test.exe: test.cpp
cl.exe test.cpp
注意,内容虽然只与2行,但第2行的cl.exe前要有一个tab。
4)在cmd窗口,cd到makefile所在的目录,nmkae,回车,即生成了test.exe。
5)更加复杂的nmake应用和makefile的编写请网络。
④ c璇瑷婧愮▼搴忔枃浠剁粡杩囩紪璇戝悗鐢熸垚鏂囦欢镄勬墿灞曞悕
c璇瑷婧愮▼搴忔枃浠剁粡杩囩紪璇戝悗鐢熸垚鏂囦欢镄勬墿灞曞悕.obj銆
褰揅璇瑷婧愪唬镰佽缂栬疟钖庯纴阃氩父浼氱敓鎴愪竴涓钬.o钬濓纸object file锛夋枃浠躲傝繖涓鏂囦欢鍖呭惈浜嗙紪璇戝櫒镓浜х敓镄勬満鍣ㄤ唬镰侊纴浣嗘槸瀹冭缮娌℃湁琚阈炬帴鍒板叾浠栨ā鍧楁垨搴扑腑銆傜浉搴斿湴锛屽湪涓嶅悓镄勬搷浣灭郴缁熶笂鍙鑳戒细链変笉钖岀殑钖庣紑钖嶅拰浜岃繘鍒舵牸寮忋备緥濡傦纴Windows涓婄殑Visual C++缂栬疟鍣ㄤ娇鐢ㄢ.obj钬濅綔涓虹洰镙囨枃浠剁殑镓╁𪾢钖嶃
鍦ㄥぇ澶氭暟𨱍呭喌涓嬶纴C璇瑷缁忚繃缂栬疟钖庣敓鎴愮殑鏂囦欢钖庣紑钖嶆槸钬.o钬濓纴涔熷彲浠ユ槸钬.obj钬濇垨鍏朵粬镎崭綔绯荤粺鐗瑰畾镄勬牸寮忋傝繖浜涙枃浠跺寘钖浜嗙紪璇戝櫒镓浜х敓镄勬満鍣ㄤ唬镰侊纴骞朵笖阃氩父闇瑕侀摼鎺ュ埌涓璧锋墠鑳界敓鎴愬彲镓ц屾枃浠躲
C璇瑷绠浠
C璇瑷鏄涓闂ㄩ溃钖戣繃绋嬬殑璁$畻链虹紪绋嬭瑷锛屼笌C++銆丆#銆丣ava闱㈠悜瀵硅薄缂栫▼璇瑷链夋墍涓嶅悓銆侰璇瑷镄勮捐$洰镙囨槸鎻愪緵涓绉嶈兘浠ョ亩鏄撶殑鏂瑰纺缂栬疟銆佸勭悊浣庣骇瀛桦偍鍣ㄣ佷粎浜х敓灏戦噺镄勬満鍣ㄧ爜浠ュ强涓嶉渶瑕佷换浣曡繍琛岀幆澧冩敮鎸佷究鑳借繍琛岀殑缂栫▼璇瑷銆
C璇瑷鎻忚堪闂棰樻瘆姹囩紪璇瑷杩呴熴佸伐浣滈噺灏忋佸彲璇绘уソ銆佹槗浜庤皟璇曘佷慨鏀瑰拰绉绘嶏纴钥屼唬镰佽川閲忎笌姹囩紪璇瑷鐩稿綋銆侰璇瑷涓鑸鍙姣旀眹缂栬瑷浠g爜鐢熸垚镄勭洰镙囩▼搴忔晥鐜囦绠10%钬20%锛屽洜姝C璇瑷鍙浠ョ紪鍐欑郴缁熻蒋浠躲
褰揿墠阒舵碉纴鍦ㄧ紪绋嬮嗗烟涓锛孋璇瑷镄勮繍鐢ㄩ潪甯镐箣澶氾纴瀹冨吋椤句简楂樼骇璇瑷鍜屾眹缂栬瑷镄勪紭镣癸纴鐩歌缉浜庡叾瀹幂紪绋嬭瑷鍏锋湁杈冨ぇ浼桦娍銆傝$畻链虹郴缁熻捐′互鍙婂簲鐢ㄧ▼搴忕紪鍐欙纴鏄疌璇瑷搴旂敤镄勪袱澶ч嗗烟銆傚悓镞讹纴C璇瑷镄勬櫘阃傝缉寮猴纴鍦ㄨ稿氲$畻链烘搷浣灭郴缁熶腑閮借兘澶熷缑鍒伴傜敤锛屼笖鏁堢巼鏄捐宪銆
⑤ C璇瑷绋嫔簭缂栬疟钖庝骇鐢熷摢浜涚被鍨嬬殑鏂囦欢锛熻繖浜涙枃浠剁殑浣灭敤鏄浠涔
1銆佷互GCC缂栬疟鍣ㄤ负渚嬶纴鍙浠ュ垎涓哄洓姝ャ
绗涓姝ユ槸棰勫勭悊锛屽寘𨰾璇娉曟镆ョ瓑宸ヤ綔銆
gcc -P abc.c
绗浜屾ョ敱婧愮▼搴忕敓浜ф眹缂栬瑷浠g爜銆
gcc -S abc.c
浼氱敓鎴恒bc.s鏂囦欢锛岃繖涓鏂囦欢閲屽氨鏄姹囩紪浠g爜銆
绗涓夋ョ紪璇戝櫒鐢熸垚鐩镙囦唬镰侊纴涓涓婧愭枃浠剁敓鎴愪竴涓鐩镙囦唬镰併
gcc -c abc.c
浼氱敓鎴恒bc.o
绗锲涙ヨ繛鎺ュ櫒浠庣洰镙囦唬镰佺敓鎴愬彲镓ц屾枃浠躲
gcc abc.o
2銆佺洰镙囦唬镰佸寘𨰾链哄櫒镰佸拰绗﹀彿琛锛埚嚱鏁板强鍙橀噺钖嶏级銆傝繛鎺ュ櫒镄勪富瑕佷綔鐢ㄦ槸阃氲繃绗﹀彿琛ㄥ湪搴撴枃浠跺拰鍏朵粬妯″潡涓镓惧埌鍦ㄧ洰镙囦唬镰佷腑寮曞叆鎴栨湭瀹氢箟镄勭﹀彿锛埚嚱鏁板强鍙橀噺钖嶏级锛屽皢鍑犱釜鐩镙囦唬镰佸悎鎴愬彲镓ц屾枃浠躲
⑥ C语言程序怎么编译成dll文件供其他语言调用
C程序编译成dll文件只不过是在要公开的接口函数声明前面加上几个特定的修饰符而已。
下面是个例子,用dev-cpp建了个dll的默认文档
/*dll.h文件*/
#ifndef _DLL_H_
#define _DLL_H_
#if BUILDING_DLL
# define DLLIMPORT __declspec (dllexport)
#else /* Not BUILDING_DLL */
# define DLLIMPORT __declspec (dllimport)
#endif /* Not BUILDING_DLL */
DLLIMPORT void HelloWorld (void);
#endif /* _DLL_H_ */
/*dllmain.c文件*/
/* Replace "dll.h" with the name of your header */
#include "dll.h"
#include <windows.h>
#include <stdio.h>
#include <stdlib.h>
DLLIMPORT void HelloWorld ()
{
MessageBox (0, "Hello World from DLL!/n", "Hi", MB_ICONINFORMATION);
}
BOOL APIENTRY DllMain (HINSTANCE hInst /* Library instance handle. */ ,
DWORD reason /* Reason this function is being called. */ ,
LPVOID reserved /* Not used. */ )
{
switch (reason)
{
case DLL_PROCESS_ATTACH:
break;
case DLL_PROCESS_DETACH:
break;
case DLL_THREAD_ATTACH:
break;
case DLL_THREAD_DETACH:
break;
}
/* Returns TRUE on success, FALSE on failure */
return TRUE;
}
具体请参考jilei08124的CSDN博客
⑦ 怎样用vc编译C语言文件,请详细说明步骤
如果只是想简单用VC编译c语言文件,可以不用那么复杂,你可以这样做:
在你想保存的文件夹下,新建一个.txt的文本文件,名字就取你要新建立的c文件的名字,但是注意后缀名改为.c;
让后右键(如果只装了vc的话,也可以直接双击打开)选择vc方式打开;
在打开的窗口中编写你的代码,写完后保存,点击!符号(也可以找菜单项中的build下的build all或execute都可以),进行编译和链接,弹出对话框就选择是,如果没有错误就可以通过编译,程序就直接运行
如果是按步骤来会稍微麻烦点,如下:
(1)打开vc环境
(2)选择“File”—“New”
在弹出的对话框中选择"projects"项,先建立工程文件:
i:对话框的左边选择Win32 console Application项
ii:在对话框的右边可以选择路径Location和输入工程名Project name,下边的单选一般默认为Create new workspace即可(因为是新建)
iii:以上设置好后,单击ok,下面的对话框按默认即可,点击finish,然后在下一个对话框中点击ok,工程建所在文件夹就建好了。此时如果按你刚才设定的路径去查看,就可以找到建立的工程文件夹。
(3)建立文件
让后同样在“File”—“New”下,本次选择Files项,在左边选择c++source file项,右边file下可以输入文件名,上边的为指定该文件所在的工程,一般默认即可建立在你刚刚建立的工程文件中,下边的Location为该源文件的路径,都按要求填写好后,点击ok即可进行文件的代码的编写了
(4)代码写好后,如上一部分简单操作时所说的进行编译和链接,让后运行就可以查看结果了。
至于工程是做什么用的,就好比是一个“单位或者说工厂”一样,而源文件好比是单位中的“车间”,这样理解简单点,具体的过程你按我所说的试试吧
附:如果你的英文好的话,很容易理解和看懂出现的各种提示的意思,如果你装的是汉化版的vc,那就更好办了,很容易就看懂的,试试看,祝你成功!
刚开始学习c语言,用的也是vc环境,更本不知道从哪里进入,哪里写代码,所以想了上面的简单的办法,后来看书就慢慢的会用了,相信你很快就会很熟练了,呵呵
⑧ C语言编译产生的.OBJ文件和汇编编译产生的.OBJ文件,如何连接
一同学习。。。
Trubo C的命令行编译连接
所谓命令行编译,是指在dos下,调用Trubo C的tcc.exe程序.来完成对turbo C源程序的编译连接工作.当选择对后缀为*.asm的汇编程序文件编译时,tcc还要调用TASM后才能对后缀为.asm的文件进行编译,这种方式适合于c程序与汇编语言混合编程的编译连接,当c程序嵌入汇编指令时,也必须用此方法编译连接。
命令行编译的格式为:
tcc [选项1 选项2 ...]文件名1 文件名2...其中选项是指对后面给出的文件进行连接时的选择项,可选的常用选择项如下所示:每个选项前都带有"-"号,且大小写是区分的。文件名是指源文件.c或目标文件.obj或库文件.lib当不指定只编译不连接时,tcc将完成编译和连接两个步骤,对.lib库只进行形式上的连接,标准库用户不用进行连接。
例如:
tcc -ib:\include -lb:\lib -etest start.c body.obj myc当执行该命令时,表示将start.c源文件和body.obj目标文件及myc.c(命令行中该文件无后缀),分别进行编译(对body.obj文件不再编译),然后连接生成名为test的执行文件test.exe(由-test给出).
-ib:\include 表示包含文件的路径是b:\include
-ib:\lib 表示库文件的路径是b:\lib
又例如:
tcc -ms -efile -lc:\tc\lib file1 file2.obj graphics.lib
其中-ms表示选择小内存模式进行编译,它也是turbo c的缺省编译模式,将file1进行编译,然后和file2.obj 及graphics.lib进行连接.生成file.exe的可执行文件.其中graphcis.lib库的路径为c:\tc\lib,即意为在c:\tc\lib目录下去寻找graphics.lib文件.当进行混合编程时,如果已有汇编程序s3.asm其命令行可写为
tcc ic:\tc\include -lc:\tc\lib -mm s1 s2 s3.asm mylib.lib
表示用中模式(-mm)编译源文件s1.c和s2.c,调用TASM对s3.asm进行编译,然后连接生成可执行文件s1.exe,编译时,到c:\tc\include目录中去找包含文件,到
c:\tc\lib目录中去找库文件mylib.lib.
---------------------------------------
http://topic.csdn.net/t/20010308/22/81569.html
http://www.down22.org/plus/view.php?aid=15882
比VC难用。。。