gcc对象文件链接

时间:2015-08-09 15:06:15

标签: c gcc linker

我通过重复一些Project Euler问题来学习C,就像我为Python做的那样。在Python中,我创建了一个通用数学实用程序的文件,例如素数检查,我在需要时将函数拉出来。我想知道是否有办法简单地用C做一个类似的事情,除了每次编译与实用程序文件一起?

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

1 个答案:

答案 0 :(得分:3)

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

的“2.3编写和使用库”一章中阅读

本书也可以http://www.advancedlinuxprogramming.com/的形式提供PDF(尽管该网站目前处于停止状态)。也许您可以搜索其他地方合法下载PDF。

速成课程:

  • 您可以通过

    创建多个对象(*.o)文件
    gcc name.c -o name.o
    
  • 每个文件都有一个标头,用于声明源文件中的函数。如果函数相关,则可能有多个源文件使用单个标头。 name.c等源文件包含该标头。您使用这些函数的代码也包含该标题。

  • 使用ar

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

    前缀lib很重要。

  • 您使用

    链接到库
    gcc prog.o -lXYZ -o prog
    

    此命令将从目标文件prog和从prog.o中提取的目标文件创建名为libXYZ.a的可执行文件,这些文件是满足prog.o符号引用所必需的