Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/55.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 是否使用-gcc自动包含多个源文件?_C++_C_Gcc - Fatal编程技术网

C++ 是否使用-gcc自动包含多个源文件?

C++ 是否使用-gcc自动包含多个源文件?,c++,c,gcc,C++,C,Gcc,我用C语言创建了一些有用的实用函数,我想在我的程序中使用它们。它们都位于../lib文件夹中。我有一个包含函数原型的头文件,我用“#include”./lib/library.h”包含这些原型。但是,在使用gcc编译时,我还必须提供包含函数定义的C文件的名称 目前../lib文件夹中只有3个C文件,但这可能会随着时间的推移而增加。在编译我的程序时,有没有办法自动告诉gcc包含所有这些文件(包括我的main.c文件) 创建一个库。如果您使用的是Linux,那么您必须选择是使用静态库还是共享库。 静

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


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

创建一个库。如果您使用的是Linux,那么您必须选择是使用静态库还是共享库。 静态库是在linux上使用archiver命令创建的。谷歌搜索“ar”

现在,您可以使用gcc或g++使用-ltest选项(ltest是您创建的libtest的缩写)链接到此归档文件。如果您的代码只有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进行编译和链接


(本文的部分内容摘自:高级Linux编程,链接:)

使用Makefile或其他构建工具
gcc -o app app.o -L. -ltest