R-3.4.1
我正在尝试在我有权访问(但没有 root 访问权限)的服务器上进行编译。由于版本问题,脚本编译失败zlib
。我按照指示操作这里,并且我进行编译,它在我尝试将此路径添加到两者和 $LIBRARY_PATH$zilb
的路径中可用,但它不起作用。我也尝试按照上面的链接运行以下命令:/storage/users/<uname>/trm/zlib/lib
$LD_LIBRARY_PATH
configure
$ ./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的建议尝试了这个)
另外,为了确认,我将用于命令的路径复制粘贴configure
到ls
:
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
那么配置脚本很可能正在非常指定的位置查找依赖库。