查找默认不包含的C库

问题描述 投票:0回答:1

来自支持程序包管理器的编程环境,我在安装和使用默认项目中未包含的库时遇到很多不适。

例如,#include <threads.h>触发未找到错误threads.h文件。我发现编译器通过发出/Library/Developer/CommandLineTools/usr/include/c++/v1gcc -print-prog-name=cpp -v中查找头文件。我不确定这是否是完整的文件夹列表吗?如何找到默认情况下找不到的那些?我在OSX上,但也需要Windows解决方案。

c include
1个回答
0
投票

这个问题并没有真正说明您是在构建自己的项目还是在其他人的项目,以及是否使用IDE或某些构建系统。我将尝试给出适合大多数情况的通用答案。

但是首先是头文件,而不是库(顺便说一句,这是另一种痛苦)。除非它们驻留在标准搜索路径上,否则您需要显式使它们可用于编译器。 las,有时候这需要大量的人工工作,尤其是当您需要构建具有大量依赖关系的第三方项目时。

我不确定这是否是完整的文件夹列表吗?

弄清编译器的标准包含路径可能很棘手。这是一个有一些提示的问题:What are the GCC default include directories?

如何找到默认情况下找不到的那些?

它们可能会或可能不会出现在您的计算机上。如果是,则必须找出它们的位置。否则,您必须弄清楚它们属于哪个库,然后下载并解压缩(并可能构建)它。无论哪种方式,您都必须在IDE(或Makefile或您使用的任何文件)中指定该库的头文件的路径。哦,您需要确保库版本与项目所需的版本匹配。好玩!

在macOS上,您可以使用第三方软件包管理器(例如brew)来为您处理库安装。

pkg-config在macOS上不可用,除非您从第三方来源安装它。

如果您正在构建自己的项目,则更好的解决方案是使用CMake及其find_package command。但是,只能通过这种方式发现CMake支持的库。幸运的是,它们支持的库非常丰富,您可以制作自己的find_package脚本。而且,CMake是跨平台的,它可以为您处理版本控制。

© www.soinside.com 2019 - 2024. All rights reserved.