0

我正在一台机器上构建 fastText 库,但在另一台具有不同 CPU 的机器上运行它。我是这样构建的:

mkdir build && cd build && cmake .. && make && make install

当我在另一台机器上运行它时,我收到“非法指令”错误。通过比较 /proc/cpuinfo 的输出,我发现后者的机器不支持以下 CPU 标志:

ss nonstop_tsc aperfmperf 3dnowprefetch rsb_ctxsw tsc_adjust hle
rtm mpx avx512f rdseed adx smap clflushopt clwb avx512cd xsavec xgetbv1 ida arat

如何防止 cmake(或 make)使用这些功能?我希望能够在一台机器上编译库并能够在另一台机器上使用它。

4

1 回答 1

0

您可能应该通过为第二个目标指定工具链来进行交叉编译。这个工具链文件必须自己写。

为了快速测试,您还可以在您的项目或 cmake 调用中覆盖CMAKE_C_COMPILE_FEATURES和。CMAKE_CXX_COMPILE_FEATUREScmake 文档

于 2018-06-21T11:43:09.310 回答