在 OS X 上安装 C++ 库

2023-11-25

我试图理解一些基本概念,但我似乎无法弄清楚它们。

我真的很困惑为 C++ 安装(我认为它们被称为库)意味着什么。我正在尝试安装 OpenCV,但我不知道安装它需要做什么,如何检查,或者 OpenCV 到底是什么(它是一个库、框架还是其他东西?)。

我的理解是,OpenCV(和其他库/框架)仅作为源代码分发,因此能够跨平台工作。然后,下载后,您必须构建它(虽然我不知道构建意味着什么),然后将编译器链接到它,以便它可以访问文件?我不知道这一切将如何完成,也不知道这意味着什么。我认为其中很多工作都是由 CMake 完成的,但我不知道 CMake 到底做了什么、如何使用它,或者如何在代码中利用库/框架。另外,像 OpenCV 这样的库将安装在哪里,clang(或任何其他编译器/链接器)如何知道在哪里可以找到它们,以及它们是什么类型的文件(.a、.dylib、.cpp、.hpp、可执行文件) ,或所有内容的集合)?这个结构是 C++ 和 OS X 特有的还是更广泛的?

我并不是在寻找有关如何安装 OpenCV 或其他库的教程,而是尝试了解其实际工作原理,这样我将来就不需要教程了。


在 Mac 上进行任何 C/C++ 开发工作之前,您需要前往 App Store 并下载Xcode免费 - 这是 Apple 的 IDE -集成开发环境。没有Xcode,你将没有编译器(即clang or gcc or g++)并且没有构建工具,(即make).

安装Xcode

如果您是 Mac 新手,App Store看起来像这样:

enter image description here

and Xcode看起来像这样:

enter image description here

安装命令行工具

Next you must install Xcode's command-line tools, so start a Terminal - by pressing +SPACE and starting to type Terminal and when it guesses correctly, just hit Enter/Return. Copy and paste the following into Terminal and hit Enter/Return.

xcode-select --install

上面的称为“热点搜索”是在 Mac 上查找任何内容的最简单方法。

安装自制软件

然后,如果你想安装OpenCV在 Mac 上,安装包管理器,例如homebrew这是从以下内容复制并粘贴一行的问题自制网站进入您的终端。我不会在这里显示这条线,以防它发生变化并且几年后有人会看到它,但如果您转到上面的链接,很容易看到。

查找套餐

然后你可以找到你想要的任何包:

brew search opencv    # Look for packages called "opencv"

or

brew search boost     # Look for "boost" libraries

安装 OpenCV

因此,对于普通(无特殊选项)安装和构建OpenCV做这个:

brew install opencv

删除包

您可以稍后删除不再需要的任何软件包:

brew rm opencv

更新包

您还可以使用以下命令更新所有已安装的软件包:

brew update && brew upgrade && brew cleanup

建立一个项目

安装完成后,您就可以开始编译和构建您自己的项目。如果您使用pkg-config包来获取您需要的所有必要的编译器/链接器设置,所以我建议:

brew install pkg-config

现在您可以使用非常简单的命令进行编译和链接,例如:

g++ $(pkg-config --cflags --libs opencv) process.cpp -o process

然后就可以继续使用Xcode如果您愿意,稍后再使用 IDE。

使用 Xcode 构建

一旦开始了基本编译,您可能想要开始使用Xcode要编辑你的程序,要做到这一点,你必须告诉Xcode头文件在哪里,库在哪里以及要链接哪些库。这将根据您的 OpenCV 版本而有所不同,但您需要更改下面两个图中标记的位置。如果您按顺序单击它们,您将很容易找到它们 - 首先是绿色区域,然后是黄色区域,然后是蓝色区域,然后是红色区域。

enter image description here

enter image description here

需要进入我上面标记的 Xcode 设置区域的实际信息可以通过运行相同的命令找到pkg-config我在上一节中建议的命令。所以运行:

pkg-config --cflags opencv

获取头(包含)文件的位置,然后运行

pkg-config --libs opencv

获取链接器需要填写的信息Xcode.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 OS X 上安装 C++ 库 的相关文章

随机推荐

  • 从枚举类型和序数获取枚举值

    public
  • 如何从maven构建jar中排除一组包?

    这就是我所需要的 其他详细信息 我有一个 src bootstrap java 文件夹和常规 src main java 文件夹 出于显而易见的原因 每个都需要放入单独的罐子中 我能够使用以下命令生成引导程序 jarthis
  • VBscript 的 SendKeys 是否支持 Unicode?

    我发现 VBscript 的SendKeys不支持Unicode 它支持 A 65 等一些字母 但不支持希伯来字母表中的字母 Aleph 等外来字母 问题超出其支持范围 可能是 128 的十进制值 它给出一个 并且它只支持 ASCII 范围
  • 如何确定进程的“虚拟大小”(WinXP)?

    我有一个需要大量内存的程序 一旦达到 2GB 虚拟地址空间 它就会崩溃 Sysinternals 进程资源管理器将此显示为 虚拟大小 列 如何使用 C 或 C 代码确定这个 虚拟大小 好的 我必须查询 虚拟字节 的性能计数器 Perfmon
  • SQL Server 错误“由于数据移动,无法使用 NOLOCK 继续扫描。”

    我在运行查询或存储过程时遇到问题 每次运行查询时 我都会收到以下错误 由于数据移动 无法使用 NOLOCK 继续扫描 如果我删除WITH NOLOCK命令 我收到一个不同的错误 消息 824 24 级 状态 2 第 1 行 SQL Serv
  • Spring Security - 检查 web url 是否安全/受保护

    有没有办法 询问 Spring Security当前请求是否安全 因为即使我通过了身份验证 我也想检测我是否位于安全受保护的 URL 中或匿名 公共页面中 提前致谢 Spring Security 提供JSP 标签支持为了这 例如
  • 从 React 组件创建纯 Web 组件

    我正在尝试从 React 组件构建 Web 组件 一切工作正常 但有两个问题我正在尝试解决 有没有办法将此类 Web 组件转换为纯 Web 组件 使用 webpack transpile 或其他方式 以便 React 和其他依赖项不被捆绑
  • Python 中的“私有”(实现)类

    我正在编写一个由两部分组成的小型 Python 模块 一些定义公共接口的函数 上述函数使用的实现类 但在模块外部没有意义 起初 我决定通过在使用它的函数内部定义它来 隐藏 这个实现类 但这会妨碍可读性 并且如果多个函数重用同一个类 则无法使
  • OkHttp 方法 .toString() 和 .string() 有什么区别?

    我有一段代码 override fun onResponse call Call
  • 在android上的activity之间保持socket连接

    我正在 android 3 1 上开发一个应用程序 我有一个 Activity A 它有一个从 aSyncTask 扩展的子类 该子类创建一个套接字并连接到服务器 我所有的沟通都很好 我收到消息并向服务器发送命令 但是当我收到特定命令时 我
  • Jquery,如何知道输入何时有:无效选择器?

    我有这个代码 HTML
  • 选择 CSS 中的每第 N 个元素

    是否可以选择一组元素中的每四个元素 例如 我有 16 个 div 元素 我可以写一些类似的东西 div nth child 4 div nth child 8 div nth child 12 div nth child 16 有一个更好的
  • 将控制台输出镜像到 C++ 中的文件

    在 C 中 是否有一种智能方法可以将 stdout 的输出镜像到控制台和文件 我希望有一种方法可以做到这一点这个问题 编辑 如果能够仅使用标准库来完成此操作 即 没有提升 那就太好了 或者 只需启动您的程序 以便将其通过管道传输到tee命令
  • Hibernate 5 忽略@Table schema 参数

    在我的应用程序中有一个实体 Entity Table schema hr name personal data public class PersonalData 和 Spring 的 application properties 中定义的
  • use-sdk:minSdkVersion 16 不能小于声明的版本 19 [Flutter v2.8.1]

    我正在尝试将 firebase 添加到我的 flutter 项目中 我收到此错误 uses sdk minSdkVersion 16 cannot be smaller than version 19 declared in library
  • 在 Android 2.x 中是否有记录的方法来检查多个 SD 卡的内容?

    某些 Android 2 x 平板电脑 例如 HTC Flyer 和 Samsung Galaxy Tab 支持平板电脑内部存储和外部 SD 卡 例如在我的传单上 sdcard and sdcard2是分开的 前者代表平板电脑的 内部存储
  • 通过WebClient上传JSON

    我有一个网络应用程序 它使用 JQuery 与我的后端交互 后端成功接受JSON数据 例如 我可以成功发送以下 JSON id 1 firstName John lastName Smith 我现在有一个必须访问此后端的 Windows P
  • 将 xml 转换为 java bean

    如何将 xml 文件转换为简单的 java bean 它是一个简单的 xml 文件 没有任何 xsd 它是从 java bean 生成的 我无权访问该文件 我尝试使用 xmlbeans 首先从 xml 生成 xmd 然后从 xsd 生成类
  • 模板不存在

    我是 Django 新手 我使用 pydev eclipse 作为 IDE 首先 我创建了一个项目 然后在该项目上创建了一个欢迎应用程序 我在项目中创建了一个名为 Templates 的文件夹 并创建了一个文件 home html home
  • 在 OS X 上安装 C++ 库

    我试图理解一些基本概念 但我似乎无法弄清楚它们 我真的很困惑为 C 安装 我认为它们被称为库 意味着什么 我正在尝试安装 OpenCV 但我不知道安装它需要做什么 如何检查 或者 OpenCV 到底是什么 它是一个库 框架还是其他东西 我的