我为一些与工作相关的数据分析编写了一个名为arbintools
的R包,并将其放在Github上。我写了它并且已经在我的Mac上使用它一段时间没有问题;今天,我尝试在Windows 7笔记本电脑上安装dev-1 branch,与编译某些Rcpp功能相关的东西似乎出错:
devtools::install_github("mjlacey/arbintools", ref = "dev1")
我明白了:
Downloading GitHub repo mjlacey/arbintools@dev1
from URL https://api.github.com/repos/mjlacey/arbintools/zipball/dev1
Installing arbintools
"C:/PROGRA~1/R/R-33~1.0/bin/x64/R" --no-site-file --no-environ --no-save \
--no-restore --quiet CMD INSTALL \
"C:/Users/matla332.USER/AppData/Local/Temp/Rtmp8WWkKC/devtools124c45026af1/mjlacey-arbintools-41dc363" \
--library="C:/Users/matla332.USER/Documents/R/win-library/3.3" \
--install-tests
* installing *source* package 'arbintools' ...
** libs
*** arch - i386
C:\Rtools\mingw_32\bin\nm.exe: RcppExports.o: File format not recognized
C:\Rtools\mingw_32\bin\nm.exe: Rcpp_functions.o: File format not recognized
c:/Rtools/mingw_32/bin/g++ -shared -s -static-libgcc -o arbintools.dll tmp.def RcppExports.o Rcpp_functions.o -Ld:/Compiler/gcc-4.9.3/local330/lib/i386 -Ld:/Compiler/gcc-4.9.3/local330/lib -LC:/PROGRA~1/R/R-33~1.0/bin/i386 -lR
RcppExports.o: file not recognized: File format not recognized
collect2.exe: error: ld returned 1 exit status
no DLL was created
ERROR: compilation failed for package 'arbintools'
* removing 'C:/Users/matla332.USER/Documents/R/win-library/3.3/arbintools'
* restoring previous 'C:/Users/matla332.USER/Documents/R/win-library/3.3/arbintools'
Error: Command failed (1)
安装需要编译的其他软件包(如dplyr
)工作正常。我还将我的Mac上的R更新为相同版本(3.3.0)并成功重新安装了软件包,它只是在Windows PC上无法正常工作。这超出了我的理解,如果有人有建议或解决方案我会非常感激。
答案 0 :(得分:9)
问题是.so
和.o
文件仅适用于相同的架构,例如OS X为64位,Windows为32位(mingw_32
)。请从dev-1/src删除它们然后你应该好好去。这些文件是在程序包安装时自动构建的,因为它们是使用编译器的结果。
删除它们后,尝试使用以下内容创建.gitignore
文件:
src/*.o
src/*.so
src/*.dll
这将使操作系统特定文件无法用于登台,反过来也可以提交。
作为一般经验法则,在使用.cpp
时,只能在.h
内保留/src
或Rcpp
个文件。