使用--enable-R-shlib安装R 3.5.0

hps*_*hps 5 ubuntu gcc makefile r linux-mint

我正在尝试使用Linux Mint下的标志--enable-R-shlib从源代码安装R 3.5.0。在没有标志的情况下进行配置和安装可以正常工作,但是RStudio要求设置标志。但是,运行时

./configure --enable-R-shlib
make
Run Code Online (Sandbox Code Playgroud)

我得到错误

/usr/bin/ld: CommandLineArgs.o: relocation R_X86_64_32 against `.rodata.str1.1' can not be used when making a shared object; recompile with -fPIC
CommandLineArgs.o: error adding symbols: Bad value
collect2: error: ld returned 1 exit status
Makefile:177: recipe for target 'libR.so' failed
make[3]: *** [libR.so] Error 1
make[3]: Leaving directory '/home/hps/Downloads/R-3.5.0/src/main'
Makefile:135: recipe for target 'R' failed
make[2]: *** [R] Error 2
make[2]: Leaving directory '/home/hps/Downloads/R-3.5.0/src/main'
Makefile:28: recipe for target 'R' failed
make[1]: *** [R] Error 1
make[1]: Leaving directory '/home/hps/Downloads/R-3.5.0/src'
Makefile:60: recipe for target 'R' failed
make: *** [R] Error 1
Run Code Online (Sandbox Code Playgroud)

我尝试按照[1]的建议设置错误消息中提到的-fPIC标志

CC="gcc -fPIC" ./configure --enable-R-shlib
Run Code Online (Sandbox Code Playgroud)

无济于事,我仍然收到相同的错误消息。

[1] 通过makefile传递gcc标志

Tun*_*ung 5

添加这些经过PPAsUbuntu,我能更新R3.5.0我的Linux Mint的17.3罗莎。

sudo add-apt-repository ppa:marutter/rrutter3.5
sudo add-apt-repository ppa:marutter/c2d4u
sudo apt-get update
Run Code Online (Sandbox Code Playgroud)

参考:https : //cran.r-project.org/bin/linux/ubuntu/

编辑:要从源代码进行编译,请按照此处的建议进行操作

sudo apt-get update
sudo apt-get build-dep r-base
wget https://cran.r-project.org/src/base/R-3/R-3.5.0.tar.gz
tar -xvf R-3.5.0.tar.gz
cd R-3.5.0
./configure --enable-R-shlib
make
Run Code Online (Sandbox Code Playgroud)


小智 2

以防万一其他人遇到这个问题。

问题是目标文件“.o”已经在没有该-fpic选项的情况下编译。

正确的解决方案是从第一次构建中删除目标文件并重新编译:

make clean
./configure --enable-R-shlib
make -j 4

sudo make install
Run Code Online (Sandbox Code Playgroud)

告诉-j 4make 一次生成四个编译进程。调整数量以匹配处理器核心的数量。