我正在尝试在 macOS 11.7.7 上的 R 4.1.2 下构建并安装MASS7.3-54(用于恢复环境)。renv我认为问题可能是旧版本clang(我认为是 12.5 之类的),但删除并重新安装 Xcode 命令行工具并没有解决问题。
* installing *source* package \xe2\x80\x98MASS\xe2\x80\x99 ...\n** package \xe2\x80\x98MASS\xe2\x80\x99 successfully unpacked and MD5 sums checked\n** using staged installation\n** libs\nusing C compiler: \xe2\x80\x98Apple clang version 13.0.0 (clang-1300.0.29.30)\xe2\x80\x99\nusing SDK: \xe2\x80\x98MacOSX12.1.sdk\xe2\x80\x99\nclang -arch x86_64 -I"/Library/Frameworks/R.framework/Resources/include" -DNDEBUG -I/opt/R/x86_64/include -fPIC -falign-functions=64 -Wall -g -O2 -c MASS.c -o MASS.o\nMASS.c:37:23: error: unknown type name 'Sint'; did you mean 'int'?\nVR_sammon(double *dd, Sint *nn, Sint *kd, double *Y, Sint *niter,\n ^~~~\n int\nMASS.c:37:33: error: unknown type name 'Sint'; did you mean 'int'?\nVR_sammon(double *dd, Sint *nn, Sint *kd, double *Y, Sint *niter,\n ^~~~\n int\nMASS.c:37:54: error: unknown type name 'Sint'; did you mean 'int'?\nVR_sammon(double *dd, Sint *nn, Sint *kd, double *Y, Sint *niter,\n ^~~~\n int\nMASS.c:38:20: error: unknown type name 'Sint'; did you mean 'int'?\n double *stress, Sint *trace, double *aa, double *tol)\n ^~~~\n int\nMASS.c:168:8: error: unknown type name 'Sint'; did you mean 'int'?\nstatic Sint *ord; /* ranks of dissimilarities */\n ^~~~\n int\nMASS.c:169:8: error: unknown type name 'Sint'; did you mean 'int'?\nstatic Sint *ord2; /* inverse ordering (which one is rank i?) */\n ^~~~\n int\nMASS.c:170:8: error: unknown type name 'Sint'; did you mean 'int'?\nstatic Sint n; /* number of dissimilarities */\n ^~~~\n int\nMASS.c:171:8: error: unknown type name 'Sint'; did you mean 'int'?\nstatic Sint nr; /* number of data points */\n ^~~~\n int\nMASS.c:172:8: error: unknown type name 'Sint'; did you mean 'int'?\nstatic Sint nc; /* # cols of fitted configuration */\n ^~~~\n int\nMASS.c:181:31: error: unknown type name 'Sint'; did you mean 'int'?\nVR_mds_fn(double *, double *, Sint *, double *, Sint *,\n ^~~~\n int\nMASS.c:181:49: error: unknown type name 'Sint'; did you mean 'int'?\nVR_mds_fn(double *, double *, Sint *, double *, Sint *,\n ^~~~\n int\nMASS.c:182:14: error: unknown type name 'Sint'; did you mean 'int'?\n double *, Sint *, Sint *, double *, Sint *, double *);\n ^~~~\n int\nMASS.c:182:22: error: unknown type name 'Sint'; did you mean 'int'?\n double *, Sint *, Sint *, double *, Sint *, double *);\n ^~~~\n int\nMASS.c:182:40: error: unknown type name 'Sint'; did you mean 'int'?\n double *, Sint *, Sint *, double *, Sint *, double *);\n ^~~~\n int\nMASS.c:188:18: error: unknown type name 'Sint'; did you mean 'int'?\nVR_mds_init_data(Sint *pn, Sint *pc, Sint *pr, Sint *orde,\n ^~~~\n int\nMASS.c:188:28: error: unknown type name 'Sint'; did you mean 'int'?\nVR_mds_init_data(Sint *pn, Sint *pc, Sint *pr, Sint *orde,\n ^~~~\n int\nMASS.c:188:38: error: unknown type name 'Sint'; did you mean 'int'?\nVR_mds_init_data(Sint *pn, Sint *pc, Sint *pr, Sint *orde,\n ^~~~\n int\nMASS.c:188:48: error: unknown type name 'Sint'; did you mean 'int'?\nVR_mds_init_data(Sint *pn, Sint *pc, Sint *pr, Sint *orde,\n ^~~~\n int\nMASS.c:189:4: error: unknown type name 'Sint'; did you mean 'int'?\n Sint *ordee, double *xx, double *p)\n ^~~~\n int\nfatal error: too many errors emitted, stopping now [-ferror-limit=]\n20 errors generated.\nmake: *** [MASS.o] Error 1\nERROR: compilation failed for package \xe2\x80\x98MASS\xe2\x80\x99\nRun Code Online (Sandbox Code Playgroud)\n
我\xe2\x80\x99m 不会回答原来的问题,而是尝试在你的评论末尾可能是问题的部分答案:“如果你告诉我如何生成它,很高兴提供其他重要信息。”
\n您的系统需要在特定日期构建,该日期可能是从 MASS 的包档案页面中提取的。(可能MASS_7.3-54.tar.gz 2021-05-03 11:03是从包的存档目录中提取的。该日期一个月后,MacOS 的 R 开发人员页面表示:
\n\nR-4.1.0.pkg(经过公证和签名)\nSHA1 哈希:df4d6fc17bbf6b7a27d4e015c0084d4bb6f7b428\n(约 87MB)R 4.1.0 二进制文件,适用于 macOS 10.13 (High Sierra) 及更高版本,Intel 64 位版本,)。
\n
...我认为这解决了 BenBolker 的问题。
\n您应该研究您的 MASS 版本时最新的 R-FAQ。您可能还需要学习 \xe2\x80\x9cWriting R Extensions\xe2\x80\x9d。sessionInfo()您对设置的粗略描述可以通过包含和的输出来填写Sys.getenv()。(我无法说出我的想法,甚至无法告诉您在哪里可以找到此类信息,即截至两年前的任何特定日期当前且内部一致的操作系统和编译器版本的数量,因此您可以需要从其他来源组装它。)我会观察到这些数字暗示着某种程度的差异,但我不记得苹果是否保持其 sdk、编译器和操作系统版本的前导数字一致,但我确实在Apple 开发者页面:
\n\nmacOS 12.1 SDK 支持为运行 macOS Monterey 12.1 的 Mac 计算机开发应用程序。该 SDK 与 Xcode 13.2 捆绑在一起,
\n
...这让我认为您在 sdk 和操作系统版本方面不一致。\n从当前的https://mac.r-project.org/页面:
\n\n\n自 R 4.3.0 构建以来的变化
\n
\n\nR 4.3.0 CRAN 构建使用 Xcode 14.2/14.3、macOS 11.3 SDK,并针对 macOS 11 (Big Sur) 和 GNU Fortran 12.2。现在对于 x86_64 和 arm64 版本都是如此。相应的封装类型 (.Platform$pkgType) 为 Intel 的“mac.binary.big-sur-x86_64”和 Apple 芯片 Mac 的“mac.binary.big-sur-arm64”。
\n
https://cran.r-project.org/bin/macosx/RMacOSX-FAQ.html#Installation-of-source-packages上的信息显示了一个典型的 Makeconf 文件,并且可能需要位于该文件的某个版本中截至您指定的目标日期当前的页面。您可以尝试互联网档案馆的网站,即 Wayback Machine。
\n有时您可以在 SO 上获得此类问题的专业答案,但有时您需要订阅 R-SIG-Mac 邮件列表,当且仅当您提供所有以下内容时,可能能够生成良好答案的人会查看该邮件列表上述信息。
\n这个答案无疑是一个猜测。
\n对我来说,您的错误看起来不像编译器版本问题:该消息明确指出类型名称Sint未知。R NEWS 文件指出,从 R 4.3.0 开始
\n\n不再定义标头中
\nSint已弃用的旧版 typedef ...SfloatR.h
(它们在 R 4.2.1 中已弃用);请参阅此提交。在我看来,您很可能意外地针对 R 4.3.0 或更高版本中的一组头文件进行编译...我建议检查R.h编译器调用中指定的 \'include\' 目录中的文件(/opt/R/x86_64/include和/Library/Frameworks/R.framework/Resources/include)。(我的系统目录中的副本R.h没有包含明确的版本号,唉,但是您可以 grep/搜索文件中的字符串“Sint”\xe2\x80\x94 如果您有一个足够旧的版本...)
| 归档时间: |
|
| 查看次数: |
725 次 |
| 最近记录: |