यह कुछ हद तक डुप्लिकेट प्रश्न है (देखें कि मेरी निर्देशिका में RAT के लिए PATH कैसे सेट किया जाए ) लेकिन मैंने R के नए संस्करण के साथ कुछ नई समस्या को पूरा किया।
मैं अपनी स्वयं की निर्देशिका में R (R 3.3.1) का नया संस्करण स्थापित करने का प्रयास कर रहा था। मैंने अपने पिछले स्थापना प्रवाह का अनुसरण किया
लेकिन मैं एक ऐसे मुद्दे से मिला, जो पहले मेरे पास नहीं था।
./configure --prefix=$HOME/Programme/R-3.3.1
.......
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
ऐसा लगता है कि zlib संस्करण बहुत कम है, इसलिए मैंने zlib का वर्तमान संस्करण स्थापित किया
tar xvf zlib-1.2.11.tar.gz
cd zlib-1.2.11
./configure --prefix=$HOME/Programme/zlib-1.2.11
make && make install
फिर मैंने R को फिर से कॉन्फ़िगर करने की कोशिश की जैसे:
./configure --prefix=$HOME/Programme/R-3.3.1 --enable-R-shlib LDFLAGS="-L/$HOME/Programme/zlib-1.2.11/lib" CPPFLAGS="-I/$HOME/Programme/zlib-1.2.11/include"
अभी भी मैं एक ही त्रुटि थी:
checking if zlib version >= 1.2.5... no
checking whether zlib support suffices... configure: error: zlib library and headers are required
तब मैंने देखा कि किसी
ने R के कॉन्फ़िगर फ़ाइल को संशोधित करके समस्या को दरकिनार
किया था, मैंने उस उदाहरण का अनुसरण किया, zlib त्रुटि को हल किया। लेकिन अन्य त्रुटियां लागू हुईं। एक लंबी कहानी को छोटा करने के लिए, मैंने अन्य आश्रित पुस्तकालयों को स्थापित किया
tar xvf zlib-1.2.11.tar.gz
cd zlib-1.2.11
./configure --prefix=$HOME$Programme/zlib-1.2.11
make && make install
tar zxvf bzip2-1.0.6.tar.gz
cd bzip2-1.0.6
make -f Makefile-libbz2_so
make clean
# modify the Makefile (original: CC=gcc after modification: CC=gcc -fPIC) as suggested [here][2]
make
make install PREFIX=/opt/bzip2-1.0.6
tar zxvf xz-5.2.3.tar.gz
cd /root/xz-5.2.3
./configure --prefix=$HOME/Programme/xz-5.2.3
make -j3
make install
tar zxvf pcre-8.40.tar.gz
cd /root/pcre-8.40
./configure --prefix=$HOME/Programme/pcre-8.40 --enable-utf8
make -j3 && make install
tar zxvf curl-7.52.1.tar.gz
cd /root/curl-7.52.1
./configure --prefix=$HOME/Programme/curl-7.52.1
make && make install
./configure --prefix=$HOME/Programme/R-3.3.1 --enable-R-shlib LDFLAGS="-L/$HOME/Programme/zlib-1.2.11/lib -L/$HOME/Programme/bzip2-1.0.6/lib -L/$HOME/Programme/xz-5.2.3/lib -L/$HOME/Programme/pcre-8.40/lib -L/$HOME/Programme/curl-7.52.1/lib" CPPFLAGS="-I/$HOME/Programme/zlib-1.2.11/include -I/$HOME/Programme/bzip2-1.0.6/include -I/$HOME/Programme/xz-5.2.3/include -I/$HOME/Programme/pcre-8.40/include -I/$HOME/Programme/curl-7.52.1/include"
कॉन्फ़िगर काम करने के लिए लग रहा था:
R is now configured for x86_64-pc-linux-gnu
Source directory: .
Installation directory: $HOME/Programme/R-3.3.1
C compiler: gcc -std=gnu99 -g -O2
Fortran 77 compiler: gfortran -g -O2
C++ compiler: g++ -g -O2
C++11 compiler: g++ -std=c++0x -g -O2
Fortran 90/95 compiler: gfortran -g -O2
Obj-C compiler:
Interfaces supported: X11, tcltk
External libraries: readline, curl
Additional capabilities: PNG, JPEG, NLS, cairo, ICU
Options enabled: shared R library, shared BLAS, R profiling
Capabilities skipped: TIFF
Options not enabled: memory profiling
Recommended packages: yes
लेकिन जब मैं फोन करता हूं
make && make install
अभी भी "बना" अंत तक नहीं बना सका:
...
gcc -std=gnu99 -Wl,--export-dynamic -fopenmp -L../../lib -L//HOME/Programme/zlib-1.2.11/lib -L//HOME/Programme/bzip2-1.0.6/lib -L//HOME/Programme/xz-5.2.3/lib -L//HOME/Programme/pcre-8.40/lib -L//HOME/Programme/curl-7.52.1/lib -o R.bin Rmain.o -lR -lRblas
/usr/bin/ld: warning: libpcre.so.1, needed by ../../lib/libR.so, not found (try using -rpath or -rpath-link)
/usr/bin/ld: warning: liblzma.so.5, needed by ../../lib/libR.so, not found (try using -rpath or -rpath-link)
../../lib/libR.so: undefined reference to `pcre_fullinfo'
../../lib/libR.so: undefined reference to `lzma_lzma_preset@XZ_5.0'
../../lib/libR.so: undefined reference to `lzma_alone_decoder@XZ_5.0'
../../lib/libR.so: undefined reference to `lzma_crc64@XZ_5.0'
../../lib/libR.so: undefined reference to `lzma_raw_encoder@XZ_5.0'
../../lib/libR.so: undefined reference to `pcre_config'
../../lib/libR.so: undefined reference to `lzma_code@XZ_5.0'
../../lib/libR.so: undefined reference to `lzma_stream_decoder@XZ_5.0'
../../lib/libR.so: undefined reference to `pcre_free'
../../lib/libR.so: undefined reference to `lzma_raw_decoder@XZ_5.0'
../../lib/libR.so: undefined reference to `pcre_exec'
../../lib/libR.so: undefined reference to `lzma_version_string@XZ_5.0'
../../lib/libR.so: undefined reference to `pcre_maketables'
../../lib/libR.so: undefined reference to `lzma_stream_encoder@XZ_5.0'
../../lib/libR.so: undefined reference to `pcre_compile'
../../lib/libR.so: undefined reference to `pcre_study'
../../lib/libR.so: undefined reference to `pcre_version'
../../lib/libR.so: undefined reference to `lzma_end@XZ_5.0'
collect2: error: ld returned 1 exit status
...
make: *** [R] Error 1
अनुवर्ती: thrig के सुझाव के आधार पर, मैंने अपनी .cshrc फ़ाइल के नीचे की पंक्तियाँ जोड़ीं
setenv LD_LIBRARY_PATH $HOME/Programme/pcre-8.40/lib
setenv LD_LIBRARY_PATH $HOME/Programme/xz-5.2.3/lib
तथा
source .cshrc
समस्या सुलझ गयी!
LD_LIBRARY_PATH
लिए आवश्यक lib
निर्देशिकाओं को शामिल करने के लिए एक त्वरित हैक सेट करना होगा ।
--prefix=/opt
(अलग-अलग उपनिर्देशिका --prefix=/opt/zlib-1.2.11
और इतने पर), और फिर कॉन्फ़िगर करने से पहले pkg-config
उदाहरण के लिए एक उपयुक्त खोज पथ सेट करनाexport PKG_CONFIG_PATH=/opt/lib/pkgconfig:$PKG_CONFIG_PATH
R
--prefix=$HOME/Programme
और-L/$HOME/Programme/zlib-1.2.11/lib
दो अलग-अलग चीजों की तरह दिखते हैं, वास्तव में ज़ालिब कहाँ है? (और यह एक*.pc
फ़ाइल के साथ जहाज करता है ताकि आप उपयोग कर सकेंpkg-config
?)