Linux 如何编译和生成.exe?

Linux 如何编译和生成.exe?,linux,bash,gcc,Linux,Bash,Gcc,我的任务:我必须编译一些c/c++项目,这样我将得到一个.exe文件,对于c/c++文件,脚本将生成一些对象文件 从我所读的内容中,我了解到我必须使用gcc bash编译器。 我在网上寻找gcc参考资料,但没有成功。我有一些代码行: gcc -c $1.$2 -o obj/$1.o for i in $( seq $3) do gcc -c src/source$i.$2 -o obj/source$i.o done gcc

我的任务:我必须编译一些c/c++项目,这样我将得到一个.exe文件,对于c/c++文件,脚本将生成一些对象文件

从我所读的内容中,我了解到我必须使用gcc bash编译器。 我在网上寻找gcc参考资料,但没有成功。我有一些代码行:

gcc -c  $1.$2 -o obj/$1.o
      for i in $( seq $3)
      do
          gcc -c src/source$i.$2 -o obj/source$i.o
      done
      gcc $1.o obj/* -o $1
这有什么好处吗?-c和-o参数到底做什么?
有人有关于这个或教程的链接吗?

Linux对文件扩展名没有特别严格的要求,因此二进制文件通常不会以.exe结尾 从C/C++源文件创建二进制文件。您需要一个编译器,例如GCC for.c和g++for.cpp。可以从您的Linux发行版存储库管理器(例如opensuse)中获得这些信息

sudo zypper install gcc g++
编译名为myfile.c的c源文件以创建名为myfile的二进制文件

cd /path/to/myfile/
gcc -o myfile myfile.c
< C++源文件> < /p>
$cd /path/to/myfile/
$g++ -o myfile myfile.cpp
对于多个C源文件,您可以创建适当的头文件,并使用ar命令创建静态或共享库,然后链接它们,例如从2个C源文件创建静态库

$cd /path/to/sources/
$gcc -c myfile1.c myfile2.c
$ar rs libmyfiles.a myfile1.o myfile2.o
$gcc -o main main.c -I/path/to/header-files/ -L/path/to/libmyfiles.a
c标志创建包含十六进制例程的.o对象文件,这些例程由ar命令归档并索引到名为libmyfiles.a的静态库中。共享库以.so结尾,需要使用与位置无关的代码-lfpic生成

但是,当您使用线程头文件pthread.h时,要链接到现有的共享库(例如pthread),可以按如下方式链接到库

$gcc -o threadc thread.c -lpthread
在命令行上运行主程序

$./mainprog
其中mainprog可以是输出二进制文件的名称。 您还可以查看简化编译大型项目所需工作量的makefile。 还有一些手册页包含有关编译器标志的信息

man gcc
或者如果你使用KDE。您可以将其插入konqueror浏览器地址栏,以获得格式良好的输出

man:gcc

可执行文件,如它所说。为什么有必要不使用链接器?如果你想创建可执行文件,你必须运行链接器看看这个我以前也读过。我很困惑。例如,这里说g++filename.cpp-o anyname。为什么是g++而不是gcc?这个g++/gcc问题有答案。该示例gcc file.cpp-o anyname创建名为anyname的可执行文件,前提是cpp文件包含一个主函数。您可以使用命令/anyname运行它