macOS系统R 3.5环境下devEMF源码编译失败求助
解决macOS旧版本下从源码编译devEMF包失败的问题
我在旧版macOS上也遇到过类似的R包源码编译失败的问题,结合你的环境(10.11.6/10.13.4 + Homebrew安装的R),大概率是以下几个原因导致的,给你几个排查和解决的方向:
首先先还原你的安装日志片段:
Installing package into ‘/Users/lpuerto/Library/R/3.x/library’ (as ‘lib’ is unspecified)
trying URL 'https://cran.rstudio.com/src/contrib/devEMF_3.6.tar.gz'
Content type 'application/x-gzip' length 201425 bytes (196 KB)
=================...
可能的原因与解决办法
1. 系统编译器版本过低
旧版macOS(10.11/10.13)自带的clang/gcc版本太老,无法支持devEMF源码里的新编译特性,而Homebrew的R虽然自带部分工具,但底层依赖系统编译器。
- 解决步骤:
- 用Homebrew安装适配旧系统的高版本gcc(比如
gcc@8,更高版本的gcc不再支持10.11/10.13):brew install gcc@8 - 在R中指定新编译器后重新安装:
Sys.setenv(CC="/usr/local/bin/gcc-8", CXX="/usr/local/bin/g++-8") install.packages("devEMF", type="source") - 同时确保安装了对应macOS版本的Xcode Command Line Tools:10.11对应Xcode 8.2.1的CLT,10.13对应Xcode 9.4.1的CLT。
- 用Homebrew安装适配旧系统的高版本gcc(比如
2. devEMF版本与R版本不兼容
你使用的是R 3.x,而devEMF_3.6可能对R版本有更高要求(比如需要R 3.5+以上),或者旧版R无法适配新包的编译逻辑。
- 解决步骤:
尝试安装适配R 3.x的旧版devEMF,从CRAN归档包中获取源码安装:install.packages("https://cran.r-project.org/src/contrib/Archive/devEMF/devEMF_3.1.tar.gz", repos=NULL, type="source")
3. Homebrew R的环境配置冲突
Homebrew安装的R可能在环境变量(如PKG_CONFIG_PATH、LDFLAGS)上和系统自带工具冲突,导致编译时找不到依赖库。
- 解决步骤:
在R中手动设置编译相关环境变量后重试:
也可以尝试切换到系统自带的R(而非Homebrew版本)安装,排查是否是Homebrew环境的问题。Sys.setenv(LDFLAGS="-L/usr/local/lib", CPPFLAGS="-I/usr/local/include") install.packages("devEMF", type="source")
4. 缺失图形依赖库
devEMF依赖libpng、freetype等图形相关库,旧版macOS上这些库可能缺失或版本过低。
- 解决步骤:
先用Homebrew安装必要依赖:
回到R中重新执行安装命令。brew install libpng freetype
内容的提问来源于stack exchange,提问作者lpuerto
相关产品推荐
相关产品推荐

