相关疑难解决方法(0)

升级到Catalina 10.15后,无法在Mac上编译C程序

升级到Mojave后,还有一个问题不能在Mac上编译C程序,而该问题的答案已涵盖了发生问题的大多数变体。

现在-从2019年10月7日星期一开始-您可以升级到macOS Catalina 10.15。再次,在升级过程中/usr/include,即使在从Mojave 10.14.6升级到Catalina之前安装了XCode 11.0 ,该目录也被更新所破坏。因此,编译器期望没有/usr/include目录就不再起作用。

建议的解决Mojave问题的主要步骤-使用以下命令:

open /Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pkg
Run Code Online (Sandbox Code Playgroud)

由于目录/Library/Developer/CommandLineTools/Packages/不存在(因此尚无.pkg要打开的文件),因此无法正常工作。

有没有一种好的(官方)方法来创建和填充目录/usr/include?

c macos xcode gcc macos-catalina

38
推荐指数
7
解决办法
7876
查看次数

clang++ 不会在 macOS Catalina 中编译 cmath

我有一个简单的 C++ 程序,可以导入cmath.

#include <cmath>

int main() {
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

我正在尝试使用以下命令编译它。

clang++ -o test main.cpp -std=c++14
Run Code Online (Sandbox Code Playgroud)

但是,我收到以下错误

In file included from main.cpp:2:
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/cmath:317:9: error: 
      no member named 'signbit' in the global namespace
using ::signbit;
      ~~^
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/cmath:318:9: error: 
      no member named 'fpclassify' in the global namespace
using ::fpclassify;
      ~~^
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/cmath:319:9: error: 
      no member named 'isfinite' in the global namespace; did you mean 'finite'?
using ::isfinite;
      ~~^
/usr/local/include/math.h:749:12: note: 'finite' declared here
extern int finite(double)
           ^
In file included …
Run Code Online (Sandbox Code Playgroud)

macos clang cmath clang++ macos-catalina

9
推荐指数
1
解决办法
1913
查看次数

clang 的 include 优先级发生了什么?

我的命令:

/usr/bin/c++ -fPIC -I/Users/me/project/include -I/usr/local/include/opencv \
-I/usr/local/include -I/opt/local/include -std=c++11 -O3 -M -c \
/Users/me/project/src/program.cpp | grep opencv
Run Code Online (Sandbox Code Playgroud)

program.cpp有:

#include "opencv2/core/core.hpp"
#include "opencv2/ml/ml.hpp"
Run Code Online (Sandbox Code Playgroud)

输出:

  /opt/local/include/opencv2/core/core.hpp \
  /opt/local/include/opencv2/core/types_c.h /usr/include/assert.h \
  /usr/include/math.h /opt/local/include/opencv2/core/version.hpp \
  /opt/local/include/opencv2/core/operations.hpp \
  /opt/local/include/opencv2/core/mat.hpp \
  /opt/local/include/opencv2/objdetect/objdetect.hpp \
  /opt/local/include/opencv2/ml/ml.hpp \
Run Code Online (Sandbox Code Playgroud)

然而,存在:/usr/local/include/opencv2/core/core.hpp、 和/usr/local/include/opencv2/ml/ml.hpp。

使用该-v标志, clang 告诉我:

ignoring duplicate directory "/usr/local/include"
  as it is a non-system directory that duplicates a system directory
#include "..." search starts here:
#include <...> search starts here:
 /Users/me/project/include
 /usr/local/include/opencv
 /opt/local/include
 /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../lib/c++/v1 …
Run Code Online (Sandbox Code Playgroud)

clang include-path

5
推荐指数
1
解决办法
6133
查看次数

经过一系列更新后,Rcpp 无法编译 C++ 代码

我希望使我的操作系统、R 和 R 软件包保持最新。我不知不觉地升级到 OSX 10.15.6 并升级到 R 4.0.2,陷入了深渊。目前,Rcpp无法编译 C++ 代码,我认为这会导致某些软件包的 CRAN 安装失败(例如glmmTMB),并且还会导致从源安装失败。我将描述我所做的事情,希望有人能够阐明解决方案。

\n
\n

粗略地说,这就是我所做的:

\n
    \n
  1. 已安装 OSX 10.15.6
  2. \n
\n

我不记得日期了,但那是最近的事。我不知道这与问题有多密切相关,我在安装之前rstan需要的其他 R 软件包(例如)时遇到问题。Rcpp

\n
    \n
  1. glmmTMB尝试运行一些旧模型时遇到问题
  2. \n
\n

确切的错误与此问题相同。我遵循了该线程上的各种解决方案,但无济于事。也许最令人沮丧的是当尝试从源代码安装时,它无法编译一些 C++。

\n

这不是我第一次看到类似的错误。当我尝试安装时发生了类似的情况,因此我在类似问题rstan下向他们的存储库寻求一些帮助。没有任何帮助。

\n

这是 R 3.6 上的,所以我想也许值得更新 R 和glmmTMB. 在执行此操作之前,我想安装 Xcode,而不仅仅是安装命令行开发工具,希望安装后能够确保我能将与 clang 和 c++ 编译器相关的所有内容都解决掉。

\n
    \n
  1. 安装了 Xcode 以帮助设置基线 C++ 环境
  2. \n
\n

相对轻松,我能够构建和编译相当简单的 C++ 项目。

\n
    \n
  1. 已安装 R 4.0.2
  2. \n …

macos r clang

5
推荐指数
1
解决办法
1831
查看次数

更新到macOS Catalina后无法使用C ++代码编译R软件包

我刚刚更新到macOS Catalina,并尝试编译我正在开发的R软件包。但是,现在不起作用。我不确定是因为操作系统还是Rcpp程序包。任何帮助,将不胜感激!

> devtools::load_all(".")
Loading phyr
Re-compiling phyr
?  installing *source* package ‘phyr’ ...
   ** using staged installation
   ** libs
   /usr/local/clang4/bin/clang++ -I"/Library/Frameworks/R.framework/Resources/include" -DNDEBUG  -I"/Users/dli/R/Rcpp/include" -I"/Users/dli/R/RcppArmadillo/include" -isysroot /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk -I/usr/local/include  -fPIC  -Wall -g -O2  -c RcppExports.cpp -o RcppExports.o
   In file included from RcppExports.cpp:4:
   In file included from /Users/dli/R/RcppArmadillo/include/RcppArmadillo.h:31:
   In file included from /Users/dli/R/RcppArmadillo/include/RcppArmadilloForward.h:26:
   In file included from /Users/dli/R/Rcpp/include/RcppCommon.h:29:
   In file included from /Users/dli/R/Rcpp/include/Rcpp/r/headers.h:59:
   In file included from /Users/dli/R/Rcpp/include/Rcpp/platform/compiler.h:100:
   /usr/local/clang4/bin/../include/c++/v1/cmath:313:9: error: no member named 'signbit' in the global namespace …
Run Code Online (Sandbox Code Playgroud)

c++ macos r rcpp

3
推荐指数
2
解决办法
1249
查看次数

标签 统计

macos ×4

clang ×3

macos-catalina ×2

r ×2

c ×1

c++ ×1

clang++ ×1

cmath ×1

gcc ×1

include-path ×1

rcpp ×1

xcode ×1