C++ 将静态库与gnu g+链接+;,没有这样的文件或目录

C++ 将静态库与gnu g+链接+;,没有这样的文件或目录,c++,static,linker,gnu,C++,Static,Linker,Gnu,我正在写一个软件,它依赖于。我可以在Ubuntu和Windows上编译库,但只能作为静态编译。这很好,因为我想静态使用它。然而,当我试图编译依赖于库的程序时,我得到了一个类似的错误(自由翻译): 但是,当我使用-I开关显式地告诉编译器在哪里查找库的头文件时,我得到了以下错误(但可能有20-30行类似的错误): 我已经尝试了很多不同的组合,包括直接使用g++和使用makefiles。 我是应该包括库头文件的路径,还是我没有成功地正确编译库? 如果我应该包括路径,我如何才能摆脱“未定义引用”错误 我

我正在写一个软件,它依赖于。我可以在Ubuntu和Windows上编译库,但只能作为静态编译。这很好,因为我想静态使用它。然而,当我试图编译依赖于库的程序时,我得到了一个类似的错误(自由翻译):

但是,当我使用-I开关显式地告诉编译器在哪里查找库的头文件时,我得到了以下错误(但可能有20-30行类似的错误):

我已经尝试了很多不同的组合,包括直接使用g++和使用makefiles。 我是应该包括库头文件的路径,还是我没有成功地正确编译库? 如果我应该包括路径,我如何才能摆脱“未定义引用”错误

我对C++编程很新,所以请耐心等待。
谢谢你,罗伯特这是一个很常见的错误,我也时不时地受到它的折磨

  • 您是否将.a添加到项目中
  • 如何包含标题?带或“?
    • 如果是后者,请确保文件位于include文件夹中
    • 如果是第一个,请确保已将路径添加到文件,或者文件位于g++的全局包含文件夹中
  • 库是否要编译为.so/.dll?
    • 通常,如果库是动态的,那么静态库只指向它
  • 您是否包含Poco本身所需的依赖项?就像-lpthread一样,我想你失踪了

尝试
-I
选项。在将
RegularExpression.h
作为依赖项的目标中,尝试包含包含上述头文件的目录,如下所示:


g++-I/home/../Poco

也许可以尝试添加
-lpthread
。看起来链接阶段缺少该库。谢谢!编译一个简单的测试是有效的。但是这是链接和包含标题的正确方式吗?不知道“正确方式”是什么意思,但是是的,一般来说,您必须为包含的所有标题指定包含目录,如
,并且必须针对您使用的所有库进行链接(或者您正在使用的其他库正在递归使用)。“The.a”和“as.so/.dll”有点俚语;有点像您说的“我需要新的普利司通”或“我失去了我的梦想”。我建议使用静态库或仅使用库;)谢谢,这真的让我开始了:)
Poco/RegularExpression.h: No such file or directory.
Undefined reference to (pthread_mutex...)