【问题标题】:Installing ROracle in Linux: /usr/bin/ld: cannot find -lclntsh在 Linux 中安装 ROracle:/usr/bin/ld: 找不到 -lclntsh
【发布时间】:2021-02-28 12:49:45
【问题描述】:

我正在尝试在 Linux 机器上安装 ROracle。 Oracle 客户端已安装并设置。但是,当我尝试安装 ROracle 时,出现错误。到目前为止我遵循的步骤:

安装oracle客户端:

oracle-instantclient19.6-sqlplus-19.6.0.0.0-1.i386 
oracle-instantclient19.6-devel-19.6.0.0.0-1.i386
oracle-instantclient19.6-basic-19.6.0.0.0-1.i386
oracle-instantclient19.6-odbc-19.6.0.0.0-1.i386
oracle-instantclient19.6-jdbc-19.6.0.0.0-1.i386
oracle-instantclient19.6-tools-19.6.0.0.0-1.i386

检查libclntsh.so 是否与libclntsh.so.11.1 链接。在 LD_LIBRARY_PATH 中设置 lib 路径

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib64:/usr/lib/oracle/19.6/client/lib/

运行安装脚本:

R CMD INSTALL --configure-args='--with-oci-lib=/usr/lib/oracle/19.6/client/lib/ --with-oci- 
inc=/usr/include/oracle/19.6/client' ROracle_1.3-1.tar.gz

我收到以下错误:

* installing to library ‘/opt/wolf_workspace/R_Libraries’
* installing *source* package ‘ROracle’ ...
** package ‘ROracle’ successfully unpacked and MD5 sums checked
configure: creating ./config.status
config.status: creating src/Makevars
** libs
gcc -I/opt/R/3.3.3/lib/R/include -DNDEBUG -I/usr/include/oracle/19.6/client -I/usr/local/include -fpic -g -O2 -c rodbi.c -o rodbi.o
gcc -I/opt/R/3.3.3/lib/R/include -DNDEBUG -I/usr/include/oracle/19.6/client -I/usr/local/include -fpic -g -O2 -c rooci.c -o rooci.o
gcc -shared -L/opt/R/3.3.3/lib/R/lib -L/usr/local/lib -o ROracle.so rodbi.o rooci.o -L/usr/lib/oracle/19.6/client/lib/ -lclntsh -L/opt/R/3.3.3/lib/R/lib -lR
/usr/bin/ld: skipping incompatible /usr/lib/oracle/19.6/client/lib//libclntsh.so when searching for -lclntsh
/usr/bin/ld: cannot find -lclntsh
collect2: error: ld returned 1 exit status
make: *** [/opt/R/3.3.3/lib/R/share/make/shlib.mk:6: ROracle.so] Error 1
ERROR: compilation failed for package ‘ROracle’
* removing ‘/opt/wolf_workspace/R_Libraries/ROracle’

我正在尝试在 R 3.3.3 和 Linux Redhat/Centos 8 上进行设置。任何帮助将不胜感激。

【问题讨论】:

  • i386 是 32 位库。您可能需要 64 位的(我认为名称中的 x64 或 x86_64)。

标签: r linux oracle roracle


【解决方案1】:

同样的clntsh 问题在这里,即使是 x64 Basic Light 和 SDK 包。

我正在尝试来自 CRAN 的 ROracle_1.3-1.1.tar.gz

使用来自 Oracle 的 ROracle_1.3-2_R_x86_64-linux-gnu.tar.gz,安装命令效果很好。

LD_LIBRARY_PATH=/usr/lib/oracle/21/client64/lib:...
OCI_LIB=/opt/oracle/instantclient_21_4

$ R CMD INSTALL ROracle_1.3-2_R_x86_64-linux-gnu.tar.gz
* installing to library ‘/usr/local/lib/R/site-library’
* installing *binary* package ‘ROracle’ ...
* DONE (ROracle)

【讨论】:

    【解决方案2】:

    对于 ROracle,只需要 Basic(或更小的 Basic Light)和 SDK 包。其他的不需要。

    要回应现有的评论,您很可能需要 64 位版本,但您已经安装了 32 位版本。

    由于您正在安装 RPM 包(不是 ZIP),因此您不需要设置 LD_LIBRARY_PATH,因为 RPM 安装为您做了等效的设置。

    最新的 ROracle 位于 https://www.oracle.com/database/technologies/roracle-downloads.html 而不是 CRAN(由于一些 CRAN 问题)

    【讨论】:

      猜你喜欢
      • 2014-08-17
      • 1970-01-01
      • 2021-05-07
      • 2020-04-21
      • 2019-02-23
      • 2018-10-01
      • 1970-01-01
      • 2011-07-16
      • 1970-01-01
      相关资源
      最近更新 更多