首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >查找缺省情况下未包含的C库

查找缺省情况下未包含的C库
EN

Stack Overflow用户
提问于 2019-11-10 19:21:50
回答 1查看 226关注 0票数 0

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

例如,#include <threads.h>会触发错误threads.h file not found。我发现编译器通过发出gcc -print-prog-name=cpp -v来查找/Library/Developer/CommandLineTools/usr/include/c++/v1中的头文件。我不确定这是否是一个完整的文件夹列表?我如何找到默认找不到的那些?我在OSX上,但Windows解决方案也是理想的。

EN

回答 1

Stack Overflow用户

发布于 2019-11-13 02:08:46

这个问题实际上并没有说明您是在构建自己的项目,还是在构建其他人的项目,也没有说明您是在使用IDE还是某个构建系统。我将尝试给出一个适用于大多数场景的通用答案。

但首先,它是头文件,而不是库(顺便说一句,这是一种不同的痛苦)。您需要显式地使它们可供编译器使用,除非它们驻留在标准搜索路径上。遗憾的是,有时需要大量的手动工作,特别是当您需要构建一个具有大量依赖项的第三方项目时。

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

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

如何找到默认找不到的?

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

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

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

如果您正在构建自己的项目,一个更好的解决方案是使用CMake及其find_package command。但是,只有CMake支持的库才能通过这种方式被发现。幸运的是,他们支持的库集合非常广泛,您可以制作自己的find_package脚本。此外,CMake是跨平台的,它可以为您处理版本控制。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58788152

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档