gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-28 07:22:10 25 4
gpt4 key购买 nike

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

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

最佳答案

创建一个库。如果您在 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 选项来让预处理器搜索当前目录(用于查找头文件),您必须使用 -L 选项让链接器搜索当前目录。特别是,您可以使用以下命令来指示链接器在当前目录下找到测试库:

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

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

(本文部分内容摘自:Advanced Linux Programming,链接:http://www.cse.hcmut.edu.vn/~hungnq/courses/nap/alp.pdf)

关于c++ - 使用-gcc 自动包含多个源文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19259855/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com