g ++-10编译器中的ltbb标志

问题描述

我已经用以下命令安装了tbb库: brew install tbb。 但是当我尝试使用以下程序编译程序时:

g++-10 hello.cpp -o hello --std=c++2a -Wall -ltbb -lpthread -O3

我遇到了错误

ld: library not found for -ltbb
collect2: error: ld returned 1 exit status

所有其他标志正常工作。

如果我使用-tbb而不是ltbb,我会得到

g++-10: error: unrecognized command-line option '-tbb'

我如何进行这项工作?

解决方法

出现此错误是因为链接器在您的 Mac 上找不到 libtbb.dylib。它找不到它,因为 Homebrew 将 TBB 库安装在一个非标准文件夹中(默认情况下,该文件夹不在您的 DYLD_LIBRARY_PATH 环境变量中,这是 ld 用于搜索 {{1 }}s).

我遇到了同样的问题,发现 .dylib(以及所有其他使用 libtbb.dylib 安装的库的符号链接)在 brew 中。因此,您可以在运行 /opt/homebrew/lib 命令之前执行类似 export DYLD_LIBRARY_PATH=/opt/homebrew/lib:${DYLD_LIBRARY_PATH} 的操作,或者如果您使用的是 CMake 之类的构建系统,则可以在 {{1} }).

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...