编译后出现obj
A. c 语言编译后产生的obj文件是做什么的
obj文件是编辑好的文本文件进行成功编译后生成的目标程序
B. c语言源程序文件经过编译连接之后生成一个后缀为_____的文件。是.obj还是.exe
看来出题人的眼光很窄,.obj、.exe是PC机的特色,一般教科书上说编译后生成.obj,连接后为.exe。
C. 编程编译时生成的obj文件和exe文件本质上有什么区别
本质上都是2进制代码,
但是
obj
没有经过链接的重定位,不是可执行的代码。
而且一个obj对应一个cpp编译单元,里面的外部符号都没解析出来。
比如a.cpp
通过b.h使用了一个
b.cpp里定义的函数
func();
那么a.cpp生成的obj里面只会有func()
这个函数名的调用而已,也就是一个(对a.obj来说的)外部符号。
只有经过链接成为了.exe,
相应于a.obj里面的func()的调用才会更新成实际的b.obj里面的func()的实际地址。
对全局变量也是同样的道理。
D. linux 中对C文件编辑后为什么不产生OBJ文件,或产生的OBJ文件到哪里了
如果你不指定编译成什么文件,gcc默认一步到位,直接生成可执行文件
你可以试试以下几个参数
-c
只激活预处理,编译,和汇编,也就是他只把程序做成obj文件
例子用法:
gcc -c hello.c
他将生成.o的obj文件
-S
只激活预处理和编译,就是指把文件编译成为汇编代码。
例子用法
gcc -S hello.c
他将生成.s的汇编代码,你可以用文本编辑器察看
-E
只激活预处理,这个不生成文件,你需要把它重定向到一个输出文件里面.
例子用法:
gcc -E hello.c > pianoapan.txt
gcc -E hello.c | more
-o
制定目标名称,缺省的时候,gcc 编译出来的文件是a.out,
例子用法
gcc -o hello.exe hello.c (哦,windows用习惯了)
gcc -o hello.asm -S hello.c
E. 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难用。。。
F. 易语言中的link文件没错 但静态编译后 出现obj文件 怎么办
应该是权限问题引起的,如果没有没有提示编译失败的话,直接删除obj文件就行了
G. 编译后得到一个.obj文件
编译后得到obj很正常啊,make后就是obj,link后才会得到exe
H. 如何打开C语言编译出的OBJ格式文件
OBJ 文件是二进制的文件,代码已经是机器码了,可用反汇编程序打开试试,不过看到的是汇编语言的程序若你会用debug,可以用它来试试
I. obj文件是怎么产生的
程序编译后的二进制文件,目标文件,编译时就产生了。
J. VC++ 6.0 编c语言 编译后出现yxy.obj - 1 error(s), 0 warning(s) 是怎么回事啊
方法1:
启动VC时不要用图形界面,通过在命令提示符下输入:Msdev /useenv运行(注意啦/前面有个空格).它会强制使系统环境变量全高设置成正确值.而且,只需要使用一次这样的方式运行VC,以后再次通过双击图标的方式启动也不会有问题。
方法2:
使用你的VC安装盘修复一下。
方法3:
在VC中点击“Tools”—>“Option”—>“Directories”,发现路径有误,重新设置“Excutable Fils,Include Files,Library Files,Source Files”的路径。
要是显示“找不到mspdb60.dll”,去能正常运行VC++的电脑中搜索mspdb60.dll文件,拷贝到你的机器上Microsoft Visual Studio\Common\MSDev98\Bin下。缺失其他文件类似操作O(∩_∩)O。
方法4:
可能很多人在安装VC 6.0后有过点击“Compile”或者“Build”后被出现的
“Compiling... ,Error spawning cl.exe”错误提示给郁闷过。很多人的
选择是重装,实际上这个问题很多情况下是由于路径设置的问题引起的,
“CL.exe”是VC使用真正的编译器(编译程序),其路径在“VC根目录\VC98\Bin”下面,
你可以到相应的路径下找到这个应用程序。
因此问题可以按照以下方法解决:打开vc界面 点击VC“TOOLS(工具)”—>“Option(选择)”
—>“Directories(目录)”重新设置“Excutable Fils、Include Files、
Library Files、Source Files”的路径。很多情况可能就一个盘符的不同
(例如你的VC装在C,但是这些路径全部在D),改过来就OK了。
如果你是按照初始路径安装vc6.0的,路径应为:
executatble files:
C:\Program Files\Microsoft Visual Studio\Common\MSDev98\Bin
C:\Program Files\Microsoft Visual Studio\VC98\BIN
C:\Program Files\Microsoft Visual Studio\Common\TOOLS
C:\Program Files\Microsoft Visual Studio\Common\TOOLS\WINNT
include files:
C:\Program Files\Microsoft Visual Studio\VC98\INCLUDE
C:\Program Files\Microsoft Visual Studio\VC98\MFC\INCLUDE
C:\Program Files\Microsoft Visual Studio\VC98\ATL\INCLUDE
library files:
C:\Program Files\Microsoft Visual Studio\VC98\LIB
C:\Program Files\Microsoft Visual Studio\VC98\MFC\LIB
source files:
C:\Program Files\Microsoft Visual Studio\VC98\MFC\SRC
C:\Program Files\Microsoft Visual Studio\VC98\MFC\INCLUDE
C:\Program Files\Microsoft Visual Studio\VC98\ATL\INCLUDE
C:\Program Files\Microsoft Visual Studio\VC98\CRT\SRC
如果你装在其他盘里,则仿照其路径变通就行(我就是装在D盘)。
关键是microsoft visual studio\ 后面的东西要相同。
本人深受其害,重装多次不管用,上面中文部分为高手借鉴,
下面路径为本人深思所得,终于解决。与君分享。