【问题标题】:How to compile and generate .exe?如何编译生成.exe?
【发布时间】:2016-03-28 05:41:16
【问题描述】:

我的任务:我必须编译一些 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”参数究竟是做什么的? 请问有人有这个或教程的链接吗?

【问题讨论】:

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

标签: linux bash gcc


【解决方案1】:

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

sudo zypper install gcc g++

编译名为 myfile.c 的 c 源文件以创建名为 myfile 的二进制文件。

cd /path/to/myfile/
gcc -o myfile myfile.c

对于 c++ 源文件。

$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

【讨论】:

    猜你喜欢
    • 2014-03-09
    • 1970-01-01
    • 2016-06-07
    • 1970-01-01
    • 1970-01-01
    • 2019-01-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多