2012-03-09 40 views
12

Tôi nhận được lỗi sau khi tôi cố gắng để một file mex chạy trong MATLAB:libgfortran: phiên bản 'GFORTRAN_1.4' không tìm thấy

??? Invalid MEX-file 
'findimps3.mexa64': 
/MATLAB/bin/glnxa64/../../sys/os/glnxa64/libgfortran.so.3: version `GFORTRAN_1.4' not found (required by /usr/lib/libblas.so.3gf) 

Bất kỳ ý tưởng làm thế nào để giải quyết vấn đề này?

cập nhật: Tôi phát hiện ra rằng "chuỗi MATLAB /.../ libgfortran.so.3 | grep GFORTRAN" đầu ra GFORTRAN_1.0. Tôi đã cố gắng thay đổi libgfortran bên trong MATLAB nhưng nó không hoạt động. Không phải tôi nghĩ tốt hơn là tìm một libblas phù hợp hoạt động với GFORTRAN_1.0.

Trả lời

12

đọc this link, nó giải thích cách định cấu hình MATLAB trên một số hệ thống Linux.

đây các bước có liên quan đến bạn:

Để kích hoạt chạy chương trình bên ngoài, [...] thư viện fortran cần phải được cập nhật đúng và liên kết. Nhìn vào kết quả của lệnh này:

ll "$MATLABDIR/bin/glnxa64/" 

Có khả năng là [link này] tồn tại:

libgfortran.so.3 -> libgfortran.so.3.0.0 

Tìm kiếm [thư viện này] trên máy tính của bạn:

locate libgfortran.so 

[ …] Cập nhật liên kết của Matlab để trỏ đến các phiên bản mới hơn này:

sudo ln -sf [location of libgfortran.so.3.0.0] "$MATLABDIR/bin/glnxa64/libgfortran.so.3" 
+0

Cảm ơn, câu trả lời này phải được chấp nhận –

0

Trong trường hợp của tôi, cố định bằng
$ ln -sf /usr/lib64/libgfortran.so.3.0.0 /opt/matlab/sys/os/glnxa64/libgfortran.so.3

Lỗi I đáp ứng khi sử dụng CDSP:
csdp: /opt/matlab/sys/os/glnxa64/libgfortran.so.3: phiên bản GFORTRAN_1.4' not found (required by /usr/lib64/atlas/libptf77blas.so.3)
csdp: /opt/matlab/sys/os/glnxa64/libgfortran.so.3: version
GFORTRAN_1.4 'không được tìm thấy (yêu cầu bởi /usr/lib64/atlas/libf77blas.so.3)

2

Trong trường hợp của tôi lệnh sau làm việc:

sudo ln -sf /usr/lib/gcc/i686-linux-gnu/4.7/libgfortran.so /usr/local/MATLAB/R2012a/sys/os/glnx86/libgfortran.so.3 

Matlab đã phàn nàn họ không thể tìm ra GFORTRAN1.4 ở vị trí sau:

/usr/lib/gcc/i686-linux-gnu/4.7/libgfortran.so 

Vì vậy, tôi liên kết vị trí này vào thư viện tôi đã:

/usr/local/MATLAB/R2012a/sys/os/glnx86/libgfortran.so.3 

tôi tìm thấy vị trí của thư viện này bằng cách sử dụng các lệnh xác định vị trí như được đưa ra ở trên :) Thanks for the help :)

3

I (nghĩ I) cố định vấn đề này bằng cách chạy matlab với LD_PRELOAD, như thế này

LD_PRELOAD=/usr/lib/x86_64-linux-gnu/libfreetype.so:/usr/lib/x86_64-linux-gnu/libgfortran.so.3 matlab

Thông báo freetype là một thư viện khác mà tôi gặp sự cố tương tự.

+0

Lưu ý rằng nếu bạn không có quyền chỉnh sửa '$ MATLABDIR/bin' thì đây có thể là lựa chọn duy nhất của bạn. Dường như làm việc cho tôi. – patrickvacek

0

Tôi vừa gặp phải vấn đề tương tự (lỗi usr/lib64/libgfortran.so.3: phiên bản 'gfortran_1.4' không được tìm thấy) và thực sự không khó khắc phục.Vấn đề có vẻ là phiên bản libgfortran.so.3 của gfortran_1.4 xuất phát từ bản phát hành gcc-4.6.2 (tức là fortran 4.6).

Những gì tôi đã tải xuống gcc-4.6.2 và được xây dựng, sử dụng các bước: tar -xvf gcc-4.6.2.tar.gz cd gcc-4.6.2 ./contrib/download_prerequisites cd .. mkdir objdir cd objdir $ PWD /../ gcc-4.6.2/configure --prefix = $ HOME/gcc-4.6.2 --có thể sử dụng ngôn ngữ = c, fortran, C++, hãy thực hiện cài đặt

Sau đó, khi mọi thứ đã được thực hiện, tôi đã đi đến thư mục, mới libgfortran.so.3 đang ngồi (trong trường hợp của tôi nó là /home/testuser/objdir/x86_64-unknown-linux-gnu/32/libgfortran/.libs/)

Tôi đã sao chép phiên bản libgfortran.so.3 này và đi tới thư mục nơi chương trình của tôi đang chờ tìm libgfortran.so.3. Tôi thay thế cái cũ (libgfortran.so.3 cũ) bằng cái mới (cái chúng ta vừa sao chép).

Sự cố ngay lập tức biến mất. Tôi hy vọng điều này sẽ giúp bạn quá!

Các vấn đề liên quan