当前位置:首页 » 编程软件 » c文件再编译

c文件再编译

发布时间: 2022-04-17 11:03:08

❶ c多个文件如何编译

关于整个 C 语言中的主函数 main( ) 如何调用相关的头文件(*.h)、以及调用其它独立的模块(*.c)的方法,关键在于对于如何编写 makefile 文件的真正理解、以及真正掌握编写规则。
由于我已经有很多年没有编写过 C 语言源程序、以及编写 makefile 文件了,但是可以大概给你提供一个思路就是:

下面的文本文件假设以 my_makefile 为例,编译环境为 linux 系统,C 语言编译器为 gcc。
但是在这里注意一点:我的 my_makefile 文件中的注释语句是否是分号进行注释,我已经不太记得了,这个需要自己再参考一下。

另外就是:对源文件(*.c)、以及生成可执行文件(my_runfile)在 my_makefile 文件中的前后次序,我也记不清了,仅供参考。
myprog1.o: myprog1.c ; myprog1.o 的生成依赖于 myprog1.c 这个源程序
gcc -c myprog1.c ; 使用 Linux 系统的 C 语言编译器对 myprog1.c 只编译、不链接
myprog2.o: myprog2.c ; myprog2.o 的生成依赖于 myprog2.c 这个源程序
gcc -c myprog2.c ;使用 Linux 系统的 C 语言编译器对 myprog2.c 只编译、不链接
my_runfile: myprog1.o myprog2.o ; 可执行文件 my_runfile 的生成依赖于 myprog1.o、myprog2.o 这两个目标文件
gcc -o my_runfile myprog1.o myprog2.o ; 使用 cc 的 -o 选项生成用户自定义的可执行文件:my_runfile,如果不指定 -o 选项,cc 编译器生成的缺省可执行文件名为:a.out
运行命令为:
$make -f my_makefile (使用 -f 选项代替缺省的 make 文件名 makefile)

❷ 可以详细的说明一下如何把c文件编译出来么求你了

在windows系统中可以到网上找一个叫DevC++的软件,可以编译出来!
要是在Linux中,编译C文件,需要你安装 gcc编译器,我一般的C文件都是用vim编辑器写的。
例子:
写一个C文件保存,如 helloworld.c
然后利用gcc编译器进行编译,命令如下:gcc helloworld.c -o helloworld
如果程序正确,这个时候应该出现在当前目录下出现一个可执行文件helloworld
然后你运行这个文件:命令如下:./helloworld

vim是vi的一个升级,用法可以搜一下,gcc的用法也可以查一下,主要看命令参数,在上面的命令中用了一个“ -o ”,还有其它一些,可以网上查了看看,程序要是调试,推荐gdb调试工具。用法网上多的是!

下面是我回答别人的

在终端命令行中打命令
vim hello.c
这时会出现一个空文档,点击a,这时进入输出模式:写上代码:
#include<stdio.h>
int main(int argc,char **argv)
{
printf("hello world.\n");
return 0;
}

点ESC键,进入命令模式,点x键,回车。
在命令行中继续写
gcc hello.c -o hello
用ls命令查看一下是不是多了一个hello文件
接着在命令行中写:./hello
这个时候看结果!!!

❸ 如何编译并运行c语言程序

1、创建一个文件名为main.c,然后用任意一个款你熟悉的文本编辑软件,比如说记事本,在里面输入下面的代码,记住,要用文本文件编辑软件,不能用word的。

(3)c文件再编译扩展阅读:

c语言小游戏实现原理

1、二维数组实现棋盘

二维数组,用两个for 循环,随便输出一个固定符号做棋盘,如 *

2、判定玩家

设计一个计步变量step, 每走一步 step++, 则玩家=step%2+1;

3、判定输赢(重点)

设计方向数组 dircX[4] ,dircY[4],因为如果要判断是否练成五子,只有1竖着2横着3斜下4斜上

竖着的话就是 x-1,y不变

横着的话就是x不变,y+1; 斜下: x+1,y+1; 斜上 x-1;y+1

这样你就可以赋值dircX={-1,0,1,-1} dercY={0,1,1,1}

每当玩家落下一子,就全局判断每个子的四个方向有没有第二子,如果有,循环判断有没有第三子(利用 x+=dircX[1]),直到五子完成,结束。

❹ c语言中多个文件的编译问题

第一个问题
请问,我是不是该这样做:
在main.c中#include
在fun.c中同样#include
(好像是必需的,请详细解释)
这是必需的。因为编译器只是把包含文件的代码复制过来,既然你二个文件中都用到头文件的内容,那当然要包含头文件,否则就会出错。
我的观点,如果这两步都是必需的
那么当有很多个比如10个.c程序每个里头都要#include
那么文件是不是会特别大,当有100个.c程序都要包含一下的话,那么不是非常重复么?)
那当然是会重复的。不过这个对程序的运行效率没任何影响,只是在编译过程中对文件的分析时间会稍长些,这也是没有办法的事,全看代码编写者如何组织结构了。
第二个问题:
会的。解决的方法就是在可能被多次包含的头文件中开头加上#pragma
once,那样就可以保证此头文件代码只被执行一次,而不会造成头文件中函数多次重复定义至于引起这种情况的情况。当然你也可以自己用#ifdef等预编译处理来解决。你问的问题不就是这种情况么?main.c和fun.c中都包含头文件tou.h
第三个问题:
当我在main.c中这样
#define
unchar
unsigned
char
那么当我在fun.c中还需要重新创建替换宏unchar吗
可以不在创建而直接使用吗?
答案是需重新创建,不能直接使用。但你可以把一些在多个文件中使用的宏、全局变量等统一定义到一个头文件中,那这样就可以避免多次定义了。

❺ windows如何编译c文件

首先必须要在 Windows 操作系统上安装一个 C/C++ 编译器(例如:Microsoft Visual Studio C++),然后在这个集成环境中编写 C 语言源程序(扩展名为 *.c),编写完源程序之后,使用编译器自带的编译、链接选项对源程序进行编译、链接,若此时源程序没有任何问题的话,即可以生成一个扩展名为 *.exe 的可执行文件。

❻ C语言文件的编译与执行的四个阶段并分别描述

开发C程序有四个步骤:编辑、编译、连接和运行。

任何一个体系结构处理器上都可以使用C语言程序,只要该体系结构处理器有相应的C语言编译器和库,那么C源代码就可以编译并连接到目标二进制文件上运行。

1、预处理:导入源程序并保存(C文件)。

2、编译:将源程序转换为目标文件(Obj文件)。

3、链接:将目标文件生成为可执行文件(EXE文件)。

4、运行:执行,获取运行结果的EXE文件。

(6)c文件再编译扩展阅读:

将C语言代码分为程序的几个阶段:

1、首先,源代码文件测试。以及相关的头文件,比如stdio。H、由预处理器CPP预处理为.I文件。预编译的。文件不包含任何宏定义,因为所有宏都已展开,并且包含的文件已插入。我归档。

2、编译过程是对预处理文件进行词法分析、语法分析、语义分析和优化,生成相应的汇编代码文件。这个过程往往是整个程序的核心部分,也是最复杂的部分之一。

3、汇编程序不直接输出可执行文件,而是输出目标文件。汇编程序可以调用LD来生成可以运行的可执行程序。也就是说,您需要链接大量的文件才能获得“a.out”,即最终的可执行文件。

4、在链接过程中,需要重新调整其他目标文件中定义的函数调用指令,而其他目标文件中定义的变量也存在同样的问题。

❼ C语言编写好代码后,怎么编译,最后生成可执行文件

材料/工具:vc6.0

1、打开c语言编辑工具,在工具中写入程序的源代码。

❽ 怎么编译多个c语言文件

1、如果,在一个c主程序中,以include形式包含了其他所有的引用文件,在编译过程中,编译器首先会将这些文件合并到一个临时文件中,然后再对这个临时文件进行编译。
2、如果,是作为一个工程,编译器会分别编译各个独立的文件(如果文件中有include按照上一步进行),然后再将编译好的初步结果用链接程序连到一起。
简单的说,每一个.c或者.cc都是一个编译单元,每一个编译单元编辑的结果是一个.o或者obj之类的中间文件,至于是否是多文件,不需要关心,但是要保证不同的编译单元之间不要有重复的符号,这就是要避免重复包含。
每一个编译单元生成的目标文件.o或者obj都会引用一些不在本目标文件中的符号,这些符号定义在别的.o或者.obj文件中, 链接器把他们联系在一起,所有的符号也就都有定义了,编译链接简单说来就是这样。

❾ 如何编译C文件

编译C文件用GCC。
编译C文件常用方法:
单个文件:
g++
file.cpp
这是最简单形式,缺省输出为a.out,可以用-o命令指定输出文件,比如g++
file.cpp
f.out
多个文件:
g++
-c
1.cpp
-o
1.o
g++
-c
2.cpp
-o
2.o
g++
1.o
2.o
-o
prog.out
链接成可执行文件:
一般用g++
-o
file
file.cpp
多个文件是g++
-o
file
file1.cpp
file2.cpp
...
编译C++不是用GCC而是G++.
如果用GCC能编译但不能链接.
多个文件:
1.编译多个文件,但不连接:
g++
file1.cpp
file2.cpp
会生成两个文件:file1.o,
file2.o
2.连接:
g++
-o
outFileName
file1.o
file2.o
会生成一个可执行文件:outFileName。
如果想,一步就完成编译和连接,那么:
g++
-o
outFileName
file1.cpp
file2.cpp
-o选项控制是否连接。

❿ windows怎么编译.c文件

(1)先用记事本编写如下所示的代码,并另存为hello.cpp,假设其保存路径为
C:\Users\Administrator\Desktop。
#include<iostream>
using namespace std;
int main()
{
cout<<"hello world!"<<endl;
return 0;
}
(2)用记事本写一段简单的批处理文件,内容如下所示,在保存文件时选择另存为,文件名
假设为batch.bat,bat是批处理文件的后缀,保存类型选择:所有文件(这个尤其需要注意),
假设其保存路径也是:C:\Users\Administrator\Desktop。
set path=D:\Softwares\en_Visual_Studio2010_Professional_x86_x16-81637\VC\bin
set include=D:\Softwares\en_Visual_Studio2010_Professional_x86_x16-81637\VC\include
set lib=D:\Softwares\en_Visual_Studio2010_Professional_x86_x16-81637\VC\lib
上面批处理文件的第一句话表示设置环境变量,这个也可以通过:计算机/属性/高级系统设置/
环境变量/用户变量,把D:\Softwares\en_Visual_Studio2010_Professional_x86_x16-81637\VC\bin
放到path的值里去,记得与之前已有值之间用";"隔开。这个path文件夹是我们装载VS2010时自
带的,在设置路径时要根据自己的安装路径进行修改,里面包含微软在Windows下给我们提供的
C/C++编译器cl.exe程序(编译器自身也是一个软件程序,只是它的作用是用来编译其它的程序),
当然还有link.exe链接程序,调用cl时,系统会自动调用link程序(后面将看到我们只用了cl命令就
可以进行C/C++程序的编译、链接)。后面两句话分别表示包含C++中自带的头文件库和静态链接
库,静态理解库包含了头文件中函数对应的实现部分,为了不让人们看到其中的源代码,它以二进
制文件形式编码,若要查看其内容需要进行反汇编。
(3)通过cmd命令进入DOS操作界面,输入cd C:\Users\Administrator\Desktop进入cpp文件和bat
批处理文件所在的位置,然后键入batch.bat进行批处理,这些操作在VS2010集成开发环境中都为我
设置好了,所以我们在里面写C/C++程序时并没有这样设置路径的繁琐操作,但是通过自己手动的
路径设置,我们会对程序的编译、链接、执行有更加深入的认识。
(4)键入cl hello.cpp,我们会看到计算机报出了“无法启动此程序,因为计算机中丢失mspdb100.dll。
尝试重新安装该程序以解决此问题”的系统储物,dll文件是动态链接库文件,其是在cl.exe程序运行时
才被加载进来的文件,这个静态链接库lib文件不同。这说明在D:\Softwares\en_Visual_Studio2010_
Professional_x86_x16-81637\VC\bin路径里没有找到mspdb100.dll,原来此文件在文件夹D:\Softwares\
en_Visual_Studio2010_Professional_x86_x16-81637\VC\Common7\IDE里,我们可以将此文件拷到bin
文件夹里,或将D:\Softwares\en_Visual_Studio2010_Professional_x86_x16-81637\Common7\IDE加到
批处理的path环境变量里,或者将其加到cpp文件所在的文件夹里,这只会引起在搜索顺序上的不同。
(5)再次键入cl hello.cpp,我们看到在C:\Users\Administrator\Desktop文件夹里得到了hello.obj文件,
这是编译后的输出文件,但是没有得到可执行exe文件,DOS界面里出现这样的错误“LINK:fatal error LNK
1104:cannot open file 'kernel32.lib' “这样的链接错误,kernel32.lib是Windows系统文件,通过Windows
自带的搜索工具,我们看到此文件在文件夹C:\Program Files\Microsoft SDKs\Windows\v7.0A\Lib里,我们
可以将其加到cpp文件所在的文件夹或bin文件里。再次键入cl hello.cpp,我们发现这次程序被成功编译链接
了,cpp文件所在的文件夹里多了两个文件:hello.obj和hello.exe。
(6)在DOS界面键入hello.exe,程序被执行,输出了我们预想的hello world!,至此,在Windows下模拟
linux命令行操作,编译C/C++文件全部完成了。

热点内容
虚荣安卓怎么充值 发布:2025-03-19 01:12:27 浏览:889
如何更改报考密码 发布:2025-03-19 01:08:12 浏览:415
python日期类型 发布:2025-03-19 01:02:28 浏览:414
android飞机大战源码 发布:2025-03-19 00:56:52 浏览:736
javaset方法 发布:2025-03-19 00:44:21 浏览:246
淘宝上传文件夹 发布:2025-03-19 00:36:30 浏览:73
oracle数据库备份数据 发布:2025-03-19 00:35:04 浏览:547
蚕丝算法 发布:2025-03-19 00:34:16 浏览:660
录制测试脚本 发布:2025-03-19 00:33:33 浏览:376
x3000r存储卡 发布:2025-03-19 00:12:22 浏览:221