如何使用 --enable-R-shlib 配置 R-3.1.2
How to configure R-3.1.2 with --enable-R-shlib
我在 Ubuntu 上使用命令
安装了 R-3.1.2
wget http://cran.r-project.org/src/base/R-3/R-3.1.2.tar.gz
tar xvfz R-3.1.2.tar.gz
cd R-3.1.2
./configure
make
sudo make install
当我尝试启动 RStudio 时出现错误
R shared library (/usr/local/lib/R/lib/libR.so) not found. If this is a custom build of R, was it built with the --enable-R-shlib option?
所以我回去尝试重新配置
./configure --enable-R-shlib=yes
make
但是我得到了错误
collect2: error: ld returned 1 exit status
make[3]: *** [libR.so] Error 1
make[3]: Leaving directory `/usr/local/lib/R-3.1.2/src/main'
make[2]: *** [R] Error 2
make[2]: Leaving directory `/usr/local/lib/R-3.1.2/src/main'
make[1]: *** [R] Error 1
make[1]: Leaving directory `/usr/local/lib/R-3.1.2/src'
make: *** [R] Error 1
在搜索堆栈溢出时,我在这里找到了答案:
How to configure R-3.0.1 with --enable-R-shlib
这表明问题是我试图在我之前编译的目录中编译而没有“--enable-R-shlib”选项
我尝试使用命令解决问题
make uninstall
许多 "Nothing to be done for `uninstall'." 语句没有给出错误,但它确实成功卸载了 R
./configure --enable-R-shlib=yes
给出了错误
config.status: error: cannot find input file: `src/library/base/DESCRIPTION.in'
然后
make
这给出了与我之前尝试时相同的错误。
你能帮我看看哪里做错了吗?
make uninstall
仅撤消 make install
步骤,该步骤通常根据需要将文件从编译目录复制到系统上的目录,并将二进制文件放入 /usr/bin
所以他们在路上。如果你想清理你以前编译的目录,使用 make clean
(或 make distclean
,我忘记了现在就 R 而言有什么区别,但惯例是它应该 return 预配置的构建目录,预构建状态。)。
一般来说,您也不想在包含 R 源的目录中构建(./configure
建议您这样做)。
make clean
是要走的路;在这里补充一些进一步的说明,说明正在发生的事情。
您尝试使用错误的选项构建 R(即,没有使用 --enable-R-shlib
作为与 RStudio 一起使用所需的选项),并且在此过程中完成了 R 的完整构建或部分构建。
您的错误消息说问题出现在 ./src/main
,较早的 make
将那里的 .c
文件编译到 .o
文件中。当您 re-run make
在重新 ./configure
-ing 使用正确的选项后,它会看到那些 .o
文件并说“我不需要 re-compile .c
个文件,.o
个文件已存在”并尝试继续。
然而,那些 .o
文件是在不同的配置下编译的,所以它们在这个意义上是“陈旧的”——make clean
删除了那些 .o
文件(以及任何早期版本的其他人工制品现已过时)。
可能有一种更简单的方法来重置您的构建(make clean
从早期的 make
中删除了 所有 个构建文件,但可能只是一些子集那些是必需的),但这可能取决于早期 ./configure
选项和新选项之间的确切区别,而且你很可能会花更多的时间来修补而不是仅仅做一个干净的构建(就个人而言,删除所有 ./src/main/*.o
文件还不够,我放弃了)。
我在 Ubuntu 上使用命令
安装了 R-3.1.2wget http://cran.r-project.org/src/base/R-3/R-3.1.2.tar.gz
tar xvfz R-3.1.2.tar.gz
cd R-3.1.2
./configure
make
sudo make install
当我尝试启动 RStudio 时出现错误
R shared library (/usr/local/lib/R/lib/libR.so) not found. If this is a custom build of R, was it built with the --enable-R-shlib option?
所以我回去尝试重新配置
./configure --enable-R-shlib=yes
make
但是我得到了错误
collect2: error: ld returned 1 exit status
make[3]: *** [libR.so] Error 1
make[3]: Leaving directory `/usr/local/lib/R-3.1.2/src/main'
make[2]: *** [R] Error 2
make[2]: Leaving directory `/usr/local/lib/R-3.1.2/src/main'
make[1]: *** [R] Error 1
make[1]: Leaving directory `/usr/local/lib/R-3.1.2/src'
make: *** [R] Error 1
在搜索堆栈溢出时,我在这里找到了答案: How to configure R-3.0.1 with --enable-R-shlib 这表明问题是我试图在我之前编译的目录中编译而没有“--enable-R-shlib”选项
我尝试使用命令解决问题
make uninstall
许多 "Nothing to be done for `uninstall'." 语句没有给出错误,但它确实成功卸载了 R
./configure --enable-R-shlib=yes
给出了错误
config.status: error: cannot find input file: `src/library/base/DESCRIPTION.in'
然后
make
这给出了与我之前尝试时相同的错误。
你能帮我看看哪里做错了吗?
make uninstall
仅撤消 make install
步骤,该步骤通常根据需要将文件从编译目录复制到系统上的目录,并将二进制文件放入 /usr/bin
所以他们在路上。如果你想清理你以前编译的目录,使用 make clean
(或 make distclean
,我忘记了现在就 R 而言有什么区别,但惯例是它应该 return 预配置的构建目录,预构建状态。)。
一般来说,您也不想在包含 R 源的目录中构建(./configure
建议您这样做)。
make clean
是要走的路;在这里补充一些进一步的说明,说明正在发生的事情。
您尝试使用错误的选项构建 R(即,没有使用 --enable-R-shlib
作为与 RStudio 一起使用所需的选项),并且在此过程中完成了 R 的完整构建或部分构建。
您的错误消息说问题出现在 ./src/main
,较早的 make
将那里的 .c
文件编译到 .o
文件中。当您 re-run make
在重新 ./configure
-ing 使用正确的选项后,它会看到那些 .o
文件并说“我不需要 re-compile .c
个文件,.o
个文件已存在”并尝试继续。
然而,那些 .o
文件是在不同的配置下编译的,所以它们在这个意义上是“陈旧的”——make clean
删除了那些 .o
文件(以及任何早期版本的其他人工制品现已过时)。
可能有一种更简单的方法来重置您的构建(make clean
从早期的 make
中删除了 所有 个构建文件,但可能只是一些子集那些是必需的),但这可能取决于早期 ./configure
选项和新选项之间的确切区别,而且你很可能会花更多的时间来修补而不是仅仅做一个干净的构建(就个人而言,删除所有 ./src/main/*.o
文件还不够,我放弃了)。