gcc 目标文件链接

gcc object file linking

我正在通过复习一些 Project Euler 问题来学习 C,正如我在 Python 中所做的那样。在 Python 中,我创建了一个通用数学实用程序文件,例如质数检查,我在需要时从中提取函数。我想知道是否有一种方法可以简单地用 C 做类似的事情,而不是每次都与实用程序文件一起编译?

我是 运行 Linux 并使用 gcc 作为我的编译器,如果有帮助的话。

看来您需要一些关于单独编译和库(存档和共享库)的基本知识。您可以在

的“2.3 编写和使用库”一章中阅读相关内容

这本书也可以从 http://www.advancedlinuxprogramming.com/ 获得 PDF 版本(尽管该网站目前已关闭)。或许你可以搜索其他地方合法下载PDF。

速成班:

  • 您通过

    创建了多个 object (*.o) 个文件
    gcc name.c -o name.o
    
  • 每个文件都有一个 header 声明源文件中的函数。如果函数相关,您可能有多个源文件使用单个 header。 name.c 等源文件包含 header。使用这些函数的代码还包括 header.

  • 你用ar

    创建了一个静态库(存档)
    ar ruv libXYZ.a name1.o name2.o ... nameN.o
    

    前缀lib很重要。

  • 你link和

    一起去图书馆
    gcc prog.o -lXYZ -o prog
    

    此命令将从 object 文件 prog.o 和从 libXYZ.a 中提取的 object 文件创建一个名为 prog 的可执行文件,这些文件是必需的满足来自 prog.o.

  • 的符号引用