升级到Mojave后,还有一个问题不能在Mac上编译C程序,而该问题的答案已涵盖了发生问题的大多数变体。
现在-从2019年10月7日星期一开始-您可以升级到macOS Catalina 10.15。再次,在升级过程中/usr/include,即使在从Mojave 10.14.6升级到Catalina之前安装了XCode 11.0 ,该目录也被更新所破坏。因此,编译器期望没有/usr/include目录就不再起作用。
建议的解决Mojave问题的主要步骤-使用以下命令:
Run Code Online (Sandbox Code Playgroud)open /Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pkg
由于目录/Library/Developer/CommandLineTools/Packages/不存在(因此尚无.pkg要打开的文件),因此无法正常工作。
有没有一种好的(官方)方法来创建和填充目录/usr/include?
我有一个简单的 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) 我的命令:
/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) 我希望使我的操作系统、R 和 R 软件包保持最新。我不知不觉地升级到 OSX 10.15.6 并升级到 R 4.0.2,陷入了深渊。目前,Rcpp无法编译 C++ 代码,我认为这会导致某些软件包的 CRAN 安装失败(例如glmmTMB),并且还会导致从源安装失败。我将描述我所做的事情,希望有人能够阐明解决方案。
粗略地说,这就是我所做的:
\n我不记得日期了,但那是最近的事。我不知道这与问题有多密切相关,我在安装之前rstan需要的其他 R 软件包(例如)时遇到问题。Rcpp
glmmTMB尝试运行一些旧模型时遇到问题确切的错误与此问题相同。我遵循了该线程上的各种解决方案,但无济于事。也许最令人沮丧的是当尝试从源代码安装时,它无法编译一些 C++。
\n这不是我第一次看到类似的错误。当我尝试安装时发生了类似的情况,因此我在类似问题rstan下向他们的存储库寻求一些帮助。没有任何帮助。
这是 R 3.6 上的,所以我想也许值得更新 R 和glmmTMB. 在执行此操作之前,我想安装 Xcode,而不仅仅是安装命令行开发工具,希望安装后能够确保我能将与 clang 和 c++ 编译器相关的所有内容都解决掉。
相对轻松,我能够构建和编译相当简单的 C++ 项目。
\n我刚刚更新到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)