使用-gcc自动包含多个源文件?

时间:2013-10-08 22:45:23

标签: c++ c gcc

我在C中创建了一些我想在程序中使用的实用函数。它们都位于../lib文件夹中。我有一个头文件,其中包含我用`#include“../lib/library.h”包含的函数原型。但是,当使用gcc进行编译时,我还必须提供包含函数定义的C文件的名称。

目前,.. / lib文件夹中只有3个C文件,但这可能会随着时间的推移而增长。在编译我的程序时,有没有办法自动告诉gcc包含所有这些文件(包括我的main.c文件)?

1 个答案:

答案 0 :(得分:1)

创建一个库。如果您使用的是Linux,则必须选择是否需要静态库或共享库。 在linux上使用archiver命令创建静态库。谷歌为“ar”。

ar cr libtest.a test1.o test2.o

现在,您可以使用-ltest选项链接此存档(ltest是您创建的libtest的简写),使用gcc或g ++。如果你的代码只有C代码,那么使用gcc。如果它同时具有C和C ++,则使用g ++。

与头文件一样,链接器在某些标准位置查找库,包括 / lib和/ usr / lib目录包含标准系统库。如果你 希望链接器也能搜索其他目录,你应该使用-L选项, 这是头文件的-I选项的并行。您可以使用此行来指示 链接器在查找之前在/ usr / local / lib / MyTest目录中查找库 通常的地方:

g++ -o reciprocal main.o reciprocal.o -L/usr/local/lib/MyTest -ltest

虽然您不必使用-I选项来让预处理器进行搜索 当前目录(用于查找Header文件),您必须使用-L选项让链接器搜索 当前目录。特别是,您可以使用以下命令来指示链接器 在当前目录中找到测试库:

gcc -o app app.o -L. -ltest

共享库创建过程也类似。一旦你掌握了它,你就可以通过makefile来处理编译和链接。

(这篇文章的某些部分来自:高级Linux编程,链接:http://www.cse.hcmut.edu.vn/~hungnq/courses/nap/alp.pdf