I'm trying to install an R package called treatSens with conda to use it in Jupyter notebook. The commands I executed:
conda install conda-build
conda skeleton cran treatSens
conda build r-treatsens
conda install -c local r-treatsens
And I got the error about C compiler
* installing *source* package ‘dbarts’ ...
** package ‘dbarts’ successfully unpacked and MD5 sums checked
checking for gcc... x86_64-apple-darwin13.4.0-clang
checking whether the C compiler works... no
configure: error: in `/Users/myusername/anaconda3/conda-bld/r-dbarts_1543961434509/myenvname':
configure: error: C compiler cannot create executables
See `config.log' for more details
ERROR: configuration failed for package ‘dbarts’
My clang version:
clang version 4.0.1 (tags/RELEASE_401/final)
Target: x86_64-apple-darwin18.2.0
Thread model: posix
InstalledDir: /Users/myusername/anaconda3/envs/myenvname/bin
Looking into the config.log file I see
configure:3570: x86_64-apple-darwin13.4.0-clang -V >&5
clang-4.0: error: argument to '-V' is missing (expected 1 value)
clang-4.0: error: no input files
configure:3581: $? = 1
configure:3570: x86_64-apple-darwin13.4.0-clang -qversion >&5
clang-4.0: error: unknown argument: '-qversion'
clang-4.0: error: no input files
configure:3581: $? = 1
configure:3601: checking whether the C compiler works
configure:3623: x86_64-apple-darwin13.4.0-clang -march=core2 -mtune=haswell -mssse3 -ftree-vectorize -fPIC -fPIE -fstack-protector-strong -O2 -pipe -I/Users/myusername/anaconda3/envs/work/conda-bld/r-dbarts_1543961045662/_h_env_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehol/include -fdebug-prefix-map=/Users/myusername/anaconda3/envs/work/conda-bld/r-dbarts_1543961045662/work=/usr/local/src/conda/r-dbarts-0.9_5 -fdebug-prefix-map=/Users/myusername/anaconda3/envs/work/conda-bld/r-dbarts_1543961045662/_h_env_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehol=/usr/local/src/conda-prefix -D_FORTIFY_SOURCE=2 -mmacosx-version-min=10.9 -I/Users/myusername/anaconda3/envs/work/conda-bld/r-dbarts_1543961045662/_h_env_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehol/include -Wl,-pie -Wl,-headerpad_max_install_names -Wl,-dead_strip_dylibs -Wl,-rpath,/Users/myusername/anaconda3/envs/work/conda-bld/r-dbarts_1543961045662/_h_env_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehol/lib -L/Users/myusername/anaconda3/envs/work/conda-bld/r-dbarts_1543961045662/_h_env_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehol/lib conftest.c >&5
ld: warning: ignoring file /Library/Developer/CommandLineTools/SDKs/MacOSX10.14.sdk/usr/lib/libSystem.tbd, file was built for unsupported file format ( 0x2D 0x2D 0x2D 0x20 0x21 0x74 0x61 0x70 0x69 0x2D 0x74 0x62 0x64 0x2D 0x76 0x33 ) which is not the architecture being linked (x86_64): /Library/Developer/CommandLineTools/SDKs/MacOSX10.14.sdk/usr/lib/libSystem.tbd
ld: dynamic main executables must link with libSystem.dylib for architecture x86_64
clang-4.0: error: linker command failed with exit code 1 (use -v to see invocation)
It seems it's a problem about Conda build using the certain version of Apple C compiler. My guess is that I need to customize the C compiler for conda build. So my question becomes
- What correct gcc version do I need.
- How to set it for conda build.
As a quick and dirty workaround (from this comment), I was able to install packages in R using below code in RStudio (opened in conda env)
Sys.setenv(CONDA_BUILD_SYSROOT="/")
Now, you can install any R package via RStudio Console e.g.
install.packages("tidyverse")
Hope this helps.
There are several things you must do to get things building properly in MacOS Mojave. For reasons mysterious to me, the Anaconda folks are not keen to make this smooth, which is especially maddening for those of us who use esoteric R packages. I will write what seems current as of 2019-04-20:
1. Install Xcode (v10.2.1)
2. Install headers in the place open source tends to expect finding them. From the command line:
open /Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pkg
3. Install the command-line tools
- As a belt-and braces approach, I downloaded and installed the DMG
Command_Line_Tools_macOS_10.14_for_Xcode_10.2.1
from https://developer.apple.com/download/more/ - I believe this is also what is done by
xcode-select --install
. If your run that command, you should see the message
xcode-select: error: command line tools are already installed, use "Software Update" to install updates
4. Download a copy of older MacOS SDK files. For example, from here
5. Create a directory /opt
sudo mkdir /opt
6. Copy the SDK files there
sudo cp -r ~/Downloads/MacOSX10.9.sdk /opt/
sudo chmod -R a+rX /opt
7. Create a conda_build_config.yaml
file that will be referenced by Conda-build and related software. It should contain the following
macos_min_version: - 10.9 macos_machine: - x86_64-apple-darwin13.4.0 MACOSX_DEPLOYMENT_TARGET: - 10.9 CONDA_BUILD_SYSROOT: # [osx] - /opt/MacOSX10.9.sdk # [osx]
In a terminal you can do that with:
mkdir ~/.conda || echo 'Dir already present'
cat "macos_min_version:" >> ~/.conda/conda_build_config.yaml
cat " - 10.9" >> ~/.conda/conda_build_config.yaml
cat "macos_machine:" >> ~/.conda/conda_build_config.yaml
cat " - x86_64-apple-darwin13.4.0" >> ~/.conda/conda_build_config.yaml
cat "MACOSX_DEPLOYMENT_TARGET:" >> ~/.conda/conda_build_config.yaml
cat " - 10.9" >> ~/.conda/conda_build_config.yaml
cat "CONDA_BUILD_SYSROOT:" >> ~/.conda/conda_build_config.yaml
cat " - /opt/MacOSX10.9.sdk" >> ~/.conda/conda_build_config.yaml
8. Tell Conda about your YAML file via your .condarc
. It should contain the lines:
conda_build: config_file: ~/.conda/conda_build_config.yaml
which can be accomplished using
cat "conda_build:" >> ~/.condarc
cat " config_file: ~/.conda/conda_build_config.yaml" >> ~/.condarc
来源:https://stackoverflow.com/questions/53637414/conda-build-r-package-fails-at-c-compiler-issue-on-macos-mojave