① linux下的gcc编译后生成Linux下的可执行文件,window下gcc编译后是exe文件,为什么不一样啊是怎么做到的
首先,这win和Linux下的gcc功能是一样的,实际的gcc.exe和linux下的gcc这两个文件不是一样的,他们毕竟需要在工作在不同的平台上,而且他们做的一些工作是有区别的。
编译过程是把源文件翻译成机器码,然后链接成一个整体,拼接成一个文件。不管是win下的exe还是Linux下的ELF,都是按照一定规范来的,比如头部放什么,尾部放什么,中间又存哪些信息等。但是,如果要编译出正确的可执行的文件,不同的操作系统里就必须按照不同的规范来组织这个文件。
这些文件的执行过程,并不是说它们可以直接执行,执行的时候,系统把它们从磁盘上,读到内存中,经过一系列的前期工作,才可以最终执行起来,这个前期过程都是操作系统来搞定的。
你不应该问gcc是怎么做到的,而应该问gcc为什么需要这样。如果你需要知道细节,去看《程序员的自我修养》
② linux下多个.o文件如何链接生成可执行程序
方法和详细的操作步骤如下:
1、第一步,找到需要打开的.o后缀文件,见下图,转到下面的步骤。
③ 如何在linux下运行c生成的可执行程序
gcc
first.C
-o
first
说明:
1>编译当前目录下、名字叫做first.C的c源文件;
2>在当前目录下、生成名字叫first(这个名字可以自己随便写、符合linux命名规则就行)的可执行程序;
关于运行:
用ls
-l
命令,可以看到当前目录下有一个绿色的文件、名字叫first,就是刚刚编译得到的文件;
使用命令“./first”既可运行(无双引号、双引号是用来说明的);
④ 如何在linux环境下编辑一个c语言源程序并将其编译为可执行文件
打开安装好的Linux系统(ubuntu18.04)
1.安装编辑器
使用语句:sudo apt-get install vim安装vim,可以在安装前查看是否安装vim编辑器。(特别提示:在安装vim前最好将软件更新,使用指令sudo apt-get update.)之所以要加sudo的原因是这些安装和更新软件的时候需要使用管理员权限才可以进行。
2.安装gcc编译器
和安装vim类似使用sudo apt-get install gcc,安装完成后可以使用cc-v来查看编译器版本信息等。cc -v界面如下:
⑤ 如何在linux下编译,执行c程序
1.编译单个源文件
[例如]在屏幕上打印"Hello,Linux."
[源代码]#include<stdio.h
#include<stdlib.h
int main(int argc,char **argv){printf("Hello,Linux.\n");exit(0);}将源文件保存为hello.c,开始进行编译
$gcc -o hello hello.c
编译成功完成后,在当前路径下,生成一个名为hello的文件,然后执行
$./hello在屏幕上,你将会看到打印结果:Hello,Linux.
说明:在默认情况下,编译成功完成后,会在当前路径下,生成一个名为a.out的文件,然后执行$./a.out便可打印结果,但通常可以通过选项-o来指定自己的可执行程序名称;
2.编译多个源文件
3.使用外部函数库
4.使用共享函数库和静态函数库5.gcc选项详细描述
⑥ linux 怎么编译c的源程序的gcc,编译命令是什么
在Linux下面,如果要编译一个C语言源程序,我们要使用gcc编译器。
先将源文件编译成目标文件:gcc - c hello.c
生成hello.o文件,再将目标文件编译成可执行文件:gcc -o hello hello.o
如:
int main(int argc,char **argv)
{
printf("Hello Linux ");
}
(6)linux编译可执行文件扩展阅读:
在使用GCC编译器的时候,我们必须给出一系列必要的调用参数和文件名称。GCC编译器的调用参数大约有100多个,这里只介绍其中最基本、最常用的参数。具体可参考GCC Manual。
GCC最基本的用法是∶gcc [options] [filenames]
其中options就是编译器所需要的参数,filenames给出相关的文件名称。
网络_gcc
⑦ linux编译的内核怎么不是可执行文件
准确的说,编译生成的确实是一个可执行文件(含有代码+数据,可执行),但是你这里说的可执行是在操作系统之上的可执行。而操作系统支持的可执行是有一定的格式的。比如
windows
的pe,linux
的elf,其实是有办法把两种格式互换的。从bios加载第一扇区引导区,到后面支持整个上层用户进程,都是里面设计好的,和我们操作系统上可执行程序的不一样。不过我们可以构造这个内核文件,使它能在os上跑。
⑧ Linux下,用什么命令编译m文件为可执行文件
windows操作系统根据文件的扩展名来区分文件类型,而Linux系统不是,Linux通过查看文件内的头部信息来确定文件的类型,而与文件的名字无关。使用gcc 编译test时出现错误,不是操作系统的原因,代码文件命名为text与text.c,对于操作系统来说,它们都是text文件,没有什么区别,但对于编译程序gcc来说就不同了,gcc编译器程序是根据文件的扩展名来判断文件类型的,所以使用gcc test -o test.out命令出现的错误不是操作系统的原因,而是gcc的原因,gcc程序的输入文件一般扩展名为.c .cpp .o .asm .S .s等,具体见gcc帮助文档。
⑨ Linux怎么编译直接执行文件(C/C++)的呢
GCC是Linux操作系统下一个非常重要的源代码编译工具,C、C++都可以通过gcc编译后来执行,案例如下: 在屏幕上打印"Hello,Linux."
#include<stdio.h>
#include<stdlib.h>
intmain(intargc,char**argv)
{
printf("Hello,Linux. ");
exit(0);
}
将源文件保存为hello.c,开始进行编译
$gcc-ohellohello.c
编译成功完成后,在当前路径下,生成一个名为hello的文件,然后执行
$./hello
在屏幕上,将会看到打印结果:Hello,Linux.
⑩ 在linux中如何编译C程序,使之成为可执行文件如何调试
Gcc最基本的用法是∶gcc [options] [filenames] 其中options就是编译器所需要的参数,filenames给出相关的文件名称。 -c,只编译,不连接成为可执行文件,编译器只是由输入的.c等源代码文件生成.o为后缀的目标文件,通常用于编译不包含主程序的子程序文件。 -o output_filename,确定输出文件的名称为output_filename,同时这个名称不能和源文件同名。如果不给出这个选项,gcc就给出预设的可执行文件a.out。 -g,产生符号调试工具(GNU的gdb)所必要的符号资讯,要想对源代码进行调试,我们就必须加入这个选项。 -O,对程序进行优化编译、连接,采用这个选项,整个源代码会在编译、连接过程中进行优化处理,这样产生的可执行文件的执行效率可以提高,但是,编译、连接的速度就相应地要慢一些。 -O2,比-O更好的优化编译、连接,当然整个编译、连接过程会更慢.
例子:
gcc -o test test.c
结果生成可执行文件test