Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/162.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/57.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++ GNU Make:自定义Makefile中的库搜索路径_C++_C_Makefile_Static Libraries_Gnu Make - Fatal编程技术网

C++ GNU Make:自定义Makefile中的库搜索路径

C++ GNU Make:自定义Makefile中的库搜索路径,c++,c,makefile,static-libraries,gnu-make,C++,C,Makefile,Static Libraries,Gnu Make,目前,要在我的项目repo中包含一个自定义静态库,我需要告诉编译器库的完整路径,如 $(CXX) $(CXXFLAGS) -o $@ $^ ../lib/libnt.a $(LDFLAGS) 但我实际上想添加一个自定义搜索路径,这样我就可以编写 $(CXX) $(CXXFLAGS) -o $@ $^ -lnt $(LDFLAGS) 相反。可能吗?我试图指定PATH环境变量,但这不起作用。PATH环境变量是用于shell的,我不明白为什么您甚至认为它会起作用。请改用-L链接器标志: LDFLA

目前,要在我的项目repo中包含一个自定义静态库,我需要告诉编译器库的完整路径,如

$(CXX) $(CXXFLAGS) -o $@ $^ ../lib/libnt.a $(LDFLAGS)
但我实际上想添加一个自定义搜索路径,这样我就可以编写

$(CXX) $(CXXFLAGS) -o $@ $^ -lnt $(LDFLAGS)

相反。可能吗?我试图指定
PATH
环境变量,但这不起作用。

PATH环境变量是用于shell的,我不明白为什么您甚至认为它会起作用。请改用
-L
链接器标志:

LDFLAGS = ... stuff you put here ... -L/search/path/for/custom/libs
                                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
                                     This part

您可以使用一个简单的make-var定义

LIBLDIR =   ../lib/
#
#
#
$(CXX) $(CXXFLAGS) -o $@ $^  -L$(LIBLDIR) -lnt $(LDFLAGS)

这并不是说
路径
是用于shell的。这是因为
PATH
用于查找可作为命令运行的可执行文件,这些命令可以来自shell或其他可执行文件或脚本(Python、Perl等。在尝试运行程序时,所有这些文件都使用
PATH
)。但是,
PATH
从不用于查找非程序的内容,其中包括库。我的坏消息。我应该仔细阅读链接器选项文档。@KevinSayHi不客气。是的,谷歌对“使用GCC”等有点了解。这肯定会有帮助(我就是这样学会使用它的)。最好的是大多数标志也适用于
clang
。请使用
-L
(注意大写)指定用于搜索库的目录。您可以给
-L
多次搜索多个目录。他们将按给定的顺序被搜查。