如何在clang中链接experimental::simd

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

我在 MacOS Ventura 上的

std::experimental::simd
中链接
clang++
操作时遇到问题。这是我最小的失败:

#include <experimental/simd>

using std::experimental::simd;

int main()
{
    simd<float> x;
    x = -x;
}

我正在编译:

$ clang++ -std=c++20 minimal.cpp

我收到链接器错误:

Undefined symbols for architecture x86_64:
  "std::experimental::parallelism_v2::simd<float, std::experimental::parallelism_v2::__simd_abi<(std::experimental::parallelism_v2::_StorageKind)1, 4> >::operator-() const", referenced from:
      _main in minimal-d275bc.o
ld: symbol(s) not found for architecture x86_64

我的标准库中缺少这个吗?是否还需要包含其他链接器标志,或者什么?谢谢。

叮当版本:

Apple clang version 14.0.3 (clang-1403.0.22.14.1)
clang simd clang++ c++-experimental
1个回答
0
投票

这是因为 macOS 上的 apple clang 使用 libc++,而 chtz 的 godbolt 链接使用 clang 和 libstdc++,添加 -stdlib=libc++ 会出现相同的链接错误

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