gcc 目标文件链接

use*_*911 0 c linker gcc

我正在通过重新整理一些欧拉项目问题来学习 C,就像我对 Python 所做的那样。在 Python 中,我创建了一个包含通用数学实用程序(例如素数检查)的文件,当我需要它们时,我可以从中提取函数。我想知道是否有一种方法可以简单地用 C 做类似的事情,而不是每次都与实用程序文件一起编译?

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

chi*_*ill 5

看来您需要一些有关单独编译和库(存档和共享库)的基本知识。您可以在“2.3 编写和使用库”一章中阅读相关内容

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

速成课程:

  • 您可以通过以下方式创建多个对象 ( *.o) 文件

    gcc name.c -o name.o
    
    Run Code Online (Sandbox Code Playgroud)
  • 每个文件都有一个标头,用于声明源文件中的函数。如果函数相关,您可能有多个使用单个标头的源文件。源文件例如name.c包含该标头。使用这些函数的代码也包含该标头。

  • 您使用以下命令创建静态库(存档)ar

    ar ruv libXYZ.a name1.o name2.o ... nameN.o
    
    Run Code Online (Sandbox Code Playgroud)

    前缀lib很重要。

  • 您可以使用以下链接链接到该库

    gcc prog.o -lXYZ -o prog
    
    Run Code Online (Sandbox Code Playgroud)

    此命令将创建一个prog从目标文件prog.o和从 中提取的目标文件命名的可执行文件libXYZ.a,这些文件需要满足来自 的符号引用prog.o