Đây là một câu hỏi hơi trùng lặp (xem Cách đặt PATH cho R được cài đặt trong thư mục của tôi ) nhưng tôi đã gặp một số vấn đề mới với phiên bản mới của R.
Tôi đã thử cài đặt phiên bản mới của R (R 3.3.1) trong thư mục của riêng tôi. Tôi đã theo dòng cài đặt trước đó của tôi
Nhưng tôi đã gặp một vấn đề mà trước đây tôi không có.
./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
Có vẻ như phiên bản zlib quá thấp, vì vậy tôi đã cài đặt phiên bản hiện tại của 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
sau đó tôi đã thử làm lại cấu hình cho R như sau:
./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"
tôi vẫn có lỗi tương tự:
checking if zlib version >= 1.2.5... no
checking whether zlib support suffices... configure: error: zlib library and headers are required
Sau đó, tôi nhận thấy ai đó khắc phục sự cố bằng cách sửa đổi tệp cấu hình của R
Tôi đã làm theo ví dụ đó, đã giải quyết lỗi zlib. nhưng các lỗi khác xảy ra sau đó. Để viết một câu chuyện dài, tôi đã cài đặt các thư viện phụ thuộc khác
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"
Cấu hình dường như hoạt động:
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
nhưng khi tôi gọi
make && make install
vẫn "làm" không thể làm cho đến khi kết thúc:
...
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
Theo dõi: Dựa trên đề xuất của thrig, tôi đã thêm các dòng bên dưới vào tệp .cshrc của mình
setenv LD_LIBRARY_PATH $HOME/Programme/pcre-8.40/lib
setenv LD_LIBRARY_PATH $HOME/Programme/xz-5.2.3/lib
và
source .cshrc
Vấn đề được giải quyết!
LD_LIBRARY_PATH
để bao gồm các lib
thư mục cần thiết .
--prefix=/opt
(chứ không phải các thư mục con riêng biệt --prefix=/opt/zlib-1.2.11
, v.v.), sau đó đặt đường dẫn tìm kiếm thích hợp, pkg-config
ví dụ như export PKG_CONFIG_PATH=/opt/lib/pkgconfig:$PKG_CONFIG_PATH
trước khi định cấu hìnhR
--prefix=$HOME/Programme
và-L/$HOME/Programme/zlib-1.2.11/lib
trông giống như hai điều khác nhau, zlib thực sự ở đâu? (Và nó xuất xưởng với một*.pc
tập tin để bạn có thể sử dụngpkg-config
?)