无法导出环境路径来配置脚本

无法导出环境路径来配置脚本

R-3.4.1我正在尝试在我有权访问(但没有 root 访问权限)的服务器上进行编译。由于版本问题,脚本编译失败zlib。我按照指示操​​作这里,并且我进行编译,它在我尝试将此路径添加到两者和 $LIBRARY_PATH$zilb的路径中可用,但它不起作用。我也尝试按照上面的链接运行以下命令:/storage/users/<uname>/trm/zlib/lib$LD_LIBRARY_PATHconfigure

$ ./configure --prefix=/storage/users/<uname>/trm/R LDFLAGS="-L/storage/users/<uname>/trm/zlib/lib"

但错误仍然存​​在。配置脚本本身没有上面链接中提到的错误。可悲的是,我不知道服务器上的发行版是什么。显然,我错过了一些东西,但我不知道是什么。


编辑1

./configure这些是命令的最后几行

checking zlib.h usability... yes
checking zlib.h presence... yes
checking for zlib.h... yes
checking if zlib version >= 1.2.5... no
checking whether zlib support suffices... configure: error: zlib library and headers are required

(我按照@PSkocik的建议尝试了这个)

另外,为了确认,我将用于命令的路径复制粘贴configurels

libz.a  libz.so  libz.so.1  libz.so.1.2.11  pkgconfig

编辑2
按照@AmeyaVS的指示,我在这里发布的内容zlib.pc

prefix=/storage/users/<uname>/trm/zlib
exec_prefix=${prefix}
libdir=${exec_prefix}/lib
sharedlibdir=${libdir}
includedir=${prefix}/include

Name: zlib
Description: zlib compression library
Version: 1.2.11

Requires:
Libs: -L${libdir} -L${sharedlibdir} -lz
Cflags: -I${includedir}

答案1

您需要configure为脚本提供库的 pkg-config 脚本路径zlib

这是我在构建GNU Autotools库时通常会做的事情:

# First unzip the files from the library zipped file.
tar xvf zlib-1.2.11.tar.gz
cd zlib-1.2.11
# if it has **configure** script in the source directory
mkdir objdir
cd objdir
# Set this environment variable from where you want to install the library.
# export ZLIB_HOME=<path where you want to install zlib>
export ZLIB_HOME=$HOME/apps/zlib
../configure --prefix=$ZLIB_HOME
# Build the library
make
# Install the library
make install
# Set the PKG_CONFIG_PATH if PKG_CONFIG_PATH is not set for pkgconfig to locate the build flags for the library.
export PKG_CONFIG_PATH=$ZLIB_HOME/lib/pkgconfig
# or use this in-case the PKG_CONFIG_PATH is not empty:
# export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:$ZLIB_HOME/lib/pkgconfig

现在尝试R在同一终端会话中配置包。

笔记:
我通常做的是将库的环境变量添加到我的$HOME/.bashrc假设您使用的是 bash shell,请找到您的终端会话的相应文件)这样的文件,以便该库能够持久用于需要该库的其他软件包的更新安装:

export ZLIB_HOME=$HOME/apps/zlib
# Assuming LD_LIBRARY_PATH is already populated.
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$ZLIB_HOME/lib
# Assuming PKG_CONFIG_PATH is already populated.
export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:$ZLIB_HOME/lib/pkgconfig

更新:
您可以使用以下命令找到任何库的指定版本和包含路径:

# Check module/library version
# pkg-config --modversion <library_name>
pkg-config --modversion zlib
# Check compiler include flag for the specified library.
# pkg-config --cflags <library_name>
pkg-config --cflags zlib

如果您获取的zlib版本为 as 1.2.11,gcc 包含路径为 as,
-I/storage/users/<uname>/trm/zlib/include并且配置脚本仍然R报告zlib版本为 as,1.2.5那么配置脚本很可能正在非常指定的位置查找依赖库。

相关内容