导航:首页 > 源码编译 > gcc源码编译exe

gcc源码编译exe

发布时间:2022-07-02 13:44:04

‘壹’ GCC编译器的参数与空格

按照INSTALL中的介绍,也是常用的方法,在configure的时候,加上–host=arm-linux,结果没有实现我们要的效果,没有将编译器从默认的
gcc改成arm-linux-gcc,编译器还是用的默认的gcc:
[crifan@localhost
lrzsz-0.12.20]$
CFLAGS=-O2
./configure
–host=arm-linux
loading
cache
./config.cache
………………..
checking
for
gcc…
(cached)
gcc
checking
whether
the
C
compiler
(gcc
-O2
)
works…
yes
checking
whether
the
C
compiler
(gcc
-O2
)
is
a
cross-compiler…
no
………………..
后来经过多次尝试,最后受默认的
CFLAGS=-O2
./configure
进行配置所启发,想到,是否可以将CC参数传入到configure中,
结果证实,如果没有自己的cache-file,即时加了对的CC参数,也还是无法传入:
[crifan@localhost
lrzsz-0.12.20]$
CFLAGS=-O2
CC=arm-linux-gcc
./configure
–host=arm-linux
loading
cache
./config.cache
………………..
checking
for
gcc…
(cached)
gcc
checking
whether
the
C
compiler
(gcc
-O2
)
works…
yes
checking
whether
the
C
compiler
(gcc
-O2
)
is
a
cross-compiler…
no
checking
whether
we
are
using
GNU
C…
(cached)
yes
………………..
而且,如果CC参数放在configure后面:
./configure
CC=arm-linux-gcc
则不能识别:
[crifan@localhost
lrzsz-0.12.20]$
CFLAGS=-O2
./configure
CC=arm-linux-gcc
configure:
warning:
CC=arm-linux-gcc:
invalid
host
type
………………..
参数传递必须像
CFLAGS=-O2
./configure
一样,将参数设置放在configure的前面:
CC=arm-linux-gcc./configure
才能识别的。
必须要自己制定自己的cache-file
然后用./configure进行新配置,加上CC参数,才会即时生效,编译器才可以变成我们要的arm-linux-gcc:
[crifan@localhost
lrzsz-0.12.20]$
CC=arm-linux-gcc
./configure
–cache-file=cache_file_0
–prefix=/usr/crifan/lrzsz
………………..
checking
for
gcc…
arm-linux-gcc
checking
whether
the
C
compiler
(arm-linux-gcc
)
works…
yes
checking
whether
the
C
compiler
(arm-linux-gcc
)
is
a
cross-compiler…
yes
checking
whether
we
are
using
GNU
C…
yes
………………..
否则,就无法将我们的CC参数传入了:
[crifan@localhost
lrzsz-0.12.20]$
CC=arm-linux-gcc
./configure
–prefix=/usr/crifan/lrzsz
………………..
checking
for
gcc…
(cached)
gcc
checking
whether
the
C
compiler
(gcc
)
works…
yes
checking
whether
the
C
compiler
(gcc
)
is
a
cross-compiler…
no
checking
whether
we
are
using
GNU
C…
(cached)
yes
………………..
[crifan@localhost
lrzsz-0.12.20]$
CFLAGS=-O2
CC=arm-linux-gcc
./configure
–cache-file=cache_file_0
loading
cache
cache_file_0
………………..
checking
for
gcc…
arm-linux-gcc
checking
whether
the
C
compiler
(arm-linux-gcc
-O2
)
works…
yes
checking
whether
the
C
compiler
(arm-linux-gcc
-O2
)
is
a
cross-compiler…
yes
checking
whether
we
are
using
GNU
C…
yes
最好此处在加上–prefix=/usr/crifan/lrzsz,表示具体安装到哪里
[crifan@localhost
lrzsz-0.12.20]$
CFLAGS=-O2
CC=arm-linux-gcc
./configure
–cache-file=cache_file_0
–prefix=/usr/crifan/lrzsz
loading
cache
cache_file_0
………………..
checking
for
gcc…
arm-linux-gcc
checking
whether
the
C
compiler
(arm-linux-gcc
-O2
)
works…
yes
checking
whether
the
C
compiler
(arm-linux-gcc
-O2
)
is
a
cross-compiler…
yes
checking
whether
we
are
using
GNU
C…
yes
………………..
其中,/usr/crifan/lrzsz是已经建立好的,已经存在的文件夹,上面这样表示编译后,
将生成的可执行文件安装拷贝到那个目录.

‘贰’ windows下怎么编译exe文件

根据gcc的编译选项可以看出: 不能 由于Linux和windows是完全不兼容的, Linux上不使用文件后缀名来区分文件, 所以同样是gcc编译出来的文件,在Linux上可以执行, 在windows就不能了。 可以安装Cygwin模拟Linux环境,将源代码拷到windows下, 用Cygwin编译出exe文件,可以在Windows上执行。

‘叁’ c语言如何把c程序编译成可执行的exe文件

1、编写一段简单的代码,如下图所示,编辑一段简单的输出语句。

‘肆’ 怎么用gcc编译文件

在终端中输入 gcc 文件名 -o 目标文件名
然后 ./目标文件名 就行了,没有目标文件名,自动存为 a
执行 ./a 就行了。

在使用Gcc编译器的时候,我们必须给出一系列必要的调用参数和文件名称。GCC编译器的调用参数大约有100多个,其中多数参数我们可能根本就用不到,这里只介绍其中最基本、最常用的参数。
GCC最基本的用法是∶gcc [options] [filenames]
其中options就是编译器所需要的参数,filenames给出相关的文件名称。
-c,只编译,不连接成为可执行文件,编译器只是由输入的.c等源代码文件生成.o为后缀的目标文件,通常用于编译不包含主程序的子程序文件。
-o output_filename,确定输出文件的名称为output_filename,同时这个名称不能和源文件同名。如果不给出这个选项,gcc就给出预设的可执行文件a.out。
-g,产生符号调试工具(GNU的gdb)所必要的符号资讯,要想对源代码进行调试,我们就必须加入这个选项。
-O,对程序进行优化编译、连接,采用这个选项,整个源代码会在编译、连接过程中进行优化处理,这样产生的可执行文件的执行效率可以提高,但是,编译、连接的速度就相应地要慢一些。
-O2,比-O更好的优化编译、连接,当然整个编译、连接过程会更慢。
-Idirname,将dirname所指出的目录加入到程序头文件目录列表中,是在预编译过程中使用的参数。C程序中的头文件包含两种情况∶
A)#include <myinc.h>
B)#include “myinc.h”
其中,A类使用尖括号(< >),B类使用双引号(“ ”)。对于A类,预处理程序cpp在系统预设包含文件目录(如/usr/include)中搜寻相应的文件,而B类,预处理程序在目标文件的文件夹内搜索相应文件。

GCC执行过程示例

示例代码 a.c:
#include <stdio.h>
int main()
{
printf("hello\n");
}
预编译过程:
这个过程处理宏定义和include,并做语法检查。
可以看到预编译后,代码从5行扩展到了910行。
gcc -E a.c -o a.i
cat a.c | wc -l
5
cat a.i | wc -l
910
编译过程:
这个阶段,生成汇编代码。
gcc -S a.i -o a.s
cat a.s | wc -l
59
汇编过程:
这个阶段,生成目标代码。
此过程生成ELF格式的目标代码。
gcc -c a.s -o a.o
file a.o
a.o: ELF 64-bit LSB relocatable, AMD x86-64, version 1 (SYSV), not stripped
链接过程:
链接过程。生成可执行代码。链接分为两种,一种是静态链接,另外一种是动态链接。使用静态链接的好处是,依赖的动态链接库较少,对动态链接库的版本不会很敏感,具有较好的兼容性;缺点是生成的程序比较大。使用动态链接的好处是,生成的程序比较小,占用较少的内存。
gcc a.o -o a
程序运行:
./a
hello
编辑本段
GCC编译简单例子

编写如下代码:
#include <stdio.h>
int main()
{
printf("hello,world!\n");
}
执行情况如下:
gcc -E hello.c -o hello.i
gcc -S hello.i -o hello.s
gcc -c hello.s -o hello.o
gcc hello.c -o hello
./hello
hello,world!

‘伍’ 如何在Windows下编译GCC

方法如下:

  1. 双击GCC安装包,mingw-get-setup.exe,点击Install安装。

  2. 点击Change选择安装路径,尽量不要有中文和空格,

  3. 将package 下面的mingw-***和mingw32-***和msys-**。都勾选上,等待下载安装,直到勾选框全部变成土灰色。

  4. 找到安装目录的bin目录,将路径右键复制下来。

  5. 找到计算机,右键,属性。点击 高级系统设置。

  6. 找到下面的 环境变量 点击。

  7. 在系统变量里面找到 Path变量,双击出现下面输入框,在变量值的末尾添加刚刚复制的bin目录,并在最后加上英文状态下 的分号(;)。点击确定。

  8. 测试是否安装成功,在cmd命令提示符里面输入 gcc --help 回车键,

  9. EditPlus 3 安装完成之后的界面点击File 下的 new C/C++

  10. 出现以下测试代码,保存到指定目录,最后不要有空格和中文,我保存到E:/My/Test下面测试。文件名为test.c

  11. 命令提示符窗口进入到 E:/MyTest 下 用dir 命令显示当前目录下的所有文件。

  12. 使用gcc 命令编译 命令格式 如下 gcc test.c - o test 回车键。编译完成。

  13. 直接输入test运行,输出hello,world。

  14. 测试完成。

‘陆’ linux 下可以用gcc 编译windows可用的 exe文件吗

根据gcc的编译选项可以看出: 不能
由于Linux和windows是完全不兼容的, Linux上不使用文件后缀名来区分文件, 所以同样是gcc编译出来的文件,在Linux上可以执行, 在windows就不能了。

可以安装Cygwin模拟Linux环境,将源代码拷到windows下, 用Cygwin编译出exe文件,可以在Windows上执行。

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

材料/工具:vc6.0

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

‘捌’ Linux中gcc无法编译,显示 gcc:exe.c:no such file or directory gcc:no input files 求教大神

输入ls命令截图看一下?

‘玖’ 如何将编写好的C语言源程序变成可执行文件EXE

从网上转来的
编译
F5
使用Turbo
C来调试C程序的示例:
1、首先打开turboc,方法很简单啦:找到turboc所在目录,然后双击TC.exe。
2、然后会出现一个窗口,使用Alt+F组合键打开菜单选择New选项回车新建文件
3、然后输入c语言源程序(这里特别注意要细心,千万不要输错了)
4、好当很长很长的源程序输入完以后(虽然很多同学刚刚接触c语言,还不知道自己输了半天输的是什么)接一下检查一下自己输入的程序是否语法正确,然后使用Alt+R组合键打开菜单选择Run选项回车,也就是运行选项(主要是看看输了半天的程序在计算机当中运行是个什么东东)
5、好像没有什么表示吗,不要着急不是计算机出了问题,这个时候用Alt+R组合键选择User
Scren选项回车
6、怎么样是不是有结果了.
7、好一个程序调试完毕我们需要保存一下我们辛苦劳动的结果,用Alt+F组合键选择Save选项回车保存我们的程序(注意保存的目录和文件名,文件名要以扩展名.c结尾)

‘拾’ 为什么我用gcc编译c程序到最后无法自动生成一个exe程序

gcc 是 Linux 系统下面的 C 语言编译器。它和 WINDOWS 系统下面的 Microsoft Visual Studio C++ 6.0 不同,在 WINDOWS 系统下面对任何的一个源程序,经编译、链接、到最终生成的所有可执行程序必定都是以 *.exe 结尾的,*.exe 是 WINDOWS 系统下面的可执行程序的后缀;而 gcc 对 C 语言进行编译,并没有规定可执行程序的具体名字到底是什么。举例如下:
$gcc my_program.c <cr>
如果在命令行中,没有带任何参数的话,如果 C 语言源程序没有任何语法错误的话,那么生成的缺省的可执行文件就是:a.out;
$gcc my_program.c -o my_runfile <cr>
如果在命令行中,指定:-o 参数,代表对 my_program.c 进行编译后,生成的可执行文件名为:my_runfile。

同理,在进行命令行编译过程中,只要指定了 -o 参数,那么你后面的可执行文件名,就随便由你自己决定了,这个就没有一定之规了。

阅读全文

与gcc源码编译exe相关的资料

热点内容
如何学会学习python 浏览:222
程序员钉钉 浏览:756
gcc编译器生成目标文件 浏览:156
怎么改服务器ip地址吗 浏览:55
cmd输入命令断开连接 浏览:911
二线大厂程序员员工年薪 浏览:987
程序员能从事导弹行业吗 浏览:938
林园炒股指标源码 浏览:468
pdf页面间距 浏览:66
vi命令实训操作 浏览:973
传说古代洪水肆虐谁奉帝尧的命令 浏览:693
如何卸载爱思app 浏览:43
安卓app如何不显示图标 浏览:527
桌面云服务器组建配置 浏览:926
济宁织梦源码怎么跳转到qq 浏览:293
西安java培训 浏览:299
苹果用户app如何退款 浏览:890
解压方式就是喝酒 浏览:398
麦块怎么添加到游戏服务器 浏览:963
喷油螺杆制冷压缩机 浏览:582