Làm cách nào để cài đặt eigen 3.3 trong Ubuntu 14.04?


12

Tôi đang sử dụng Ubuntu 14.04 và tôi muốn cài đặt eigen 3.3 trong Ubuntu. Tôi đã cố tải xuống phiên bản mới nhất của Eigen 3 (3.3) và cài đặt như sau

mkdir build
cd build
cmake ..
make
sudo make install 

Sản lượng thích

-- Installing: /usr/local/include/eigen3/unsupported/Eigen/src/Skyline/SkylineStorage.h
-- Installing: /usr/local/include/eigen3/unsupported/Eigen/src/SparseExtra/RandomSetter.h
-- Installing: /usr/local/include/eigen3/unsupported/Eigen/src/SparseExtra/MarketIO.h
-- Installing: /usr/local/include/eigen3/unsupported/Eigen/src/SparseExtra/BlockOfDynamicSparseMatrix.h
-- Installing: /usr/local/include/eigen3/unsupported/Eigen/src/SparseExtra/DynamicSparseMatrix.h
-- Installing: /usr/local/include/eigen3/unsupported/Eigen/src/SparseExtra/MatrixMarketIterator.h
-- Installing: /usr/local/include/eigen3/unsupported/Eigen/src/Splines/SplineFwd.h
-- Installing: /usr/local/include/eigen3/unsupported/Eigen/src/Splines/SplineFitting.h
-- Installing: /usr/local/include/eigen3/unsupported/Eigen/src/Splines/Spline.h

Tuy nhiên, khi tôi kiểm tra phiên bản eigen hiện tại của mình dpkg -p libeigen3-dev, đầu ra là

Package: libeigen3-dev
Priority: extra
Section: libdevel
Installed-Size: 3729
Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
Architecture: all
Source: eigen3
Version: 3.2.0-8
Provides: libeigen2-dev
Depends: pkg-config
Suggests: libeigen3-doc, libmrpt-dev
Size: 494158

Nó cho thấy thiết lập của tôi không hoàn thành. Làm cách nào tôi có thể cài đặt phiên bản eigen trong Ubuntu? Cảm ơn tất cả

Đây là lỗi khi tôi biên dịch với CmakeList.txt tại mã nguồn

-- ===============================================================
-- ============ Configuring CompileSettings  =====================
-- ===============================================================
-- ============= Look for required libraries =====================
-- Looking for Eigen Library with minimum version 3.2.90
-- Looking for Eigen via User Provided (or Cached) location
-- Eigen version 3.2.0 found in /usr/include/eigen3
CMake Warning at cmake/FindEigen.cmake:62 (message):
  Eigen version is less than requred version 3.2.90
Call Stack (most recent call first):
  cmake/FindEigen.cmake:73 (Eigen_Check_Version)
  CMakeLists.txt:23 (FIND_PACKAGE)


CMake Error at /usr/local/share/cmake-3.5/Modules/FindPackageHandleStandardArgs.cmake:148 (message):
  Could NOT find Eigen (missing: EIGEN_VERSION_OK) (Required is at least
  version "3.2.90")
Call Stack (most recent call first):
  /usr/local/share/cmake-3.5/Modules/FindPackageHandleStandardArgs.cmake:388 (_FPHSA_FAILURE_MESSAGE)
  cmake/FindEigen.cmake:74 (find_package_handle_standard_args)
  CMakeLists.txt:23 (FIND_PACKAGE)

1
Trừ khi bạn thực hiện các bước bổ sung (chẳng hạn như sử dụng checkinstallchương trình thay thế make install), hệ thống dpkg sẽ không biết gì về các chương trình được cài đặt từ nguồn theo cách này.
Steeldo

Lấy làm tiếc. Nó có nghĩa là gì? Làm thế nào tôi có thể khắc phục vấn đề của tôi. Tôi chắc chắn rằng tôi đã không cài đặt phiên bản 3.3 thành công
John

Điều gì khiến bạn nghĩ rằng nó đã không thành công? Nó pkg-config --modversion eigen3nói gì Phiên bản nào bạn thực sự có được khi bạn cố gắng xây dựng công cụ?
Steeldo

Bởi vì tôi chạy mã nguồn yêu cầu phiên bản Eigen> = 3.2.90 và nó cho thấy phiên bản hiện tại của tôi vẫn là 3.2.0
John

Câu trả lời:


10

Eigen c ++ là một thư viện chỉ có tiêu đề: bạn không cần phải cài đặt nó, bạn chỉ cần tải xuống, giải nén và liên kết mã của bạn với nó.

Ví dụ: nếu mã của bạn nằm trong my_favorite_cpp_folder, bạn làm:

cd my_favorite_cpp_folder

và, giả sử trình biên dịch của bạn là gccvà các tiêu đề eigen nằm trong /usr/local/include/eigen3/unsupported/và tên của tệp nguồn của bạn là my_favorite_cpp_source_file.cpp, bạn biên dịch và mã và liên kết nó với các tiêu đề eigen bằng cách thực hiện:

g++ -I /usr/local/include/eigen3/ my_favorite_cpp_source_file.cpp -o my_favorite_cpp_source_file

(từ đầu ra mã của bạn được đăng ở trên, các tiêu đề eigen nằm trong /usr/local/include/eigen3/máy tính của bạn)


Cảm ơn bạn. Tuy nhiên, tôi biên dịch mã nguồn mở từ cmake. Nó sử dụng dòng để kiểm tra phiên bản Eigen 3 # Add Eigen dependencies FIND_PACKAGE(Eigen 3.2.90 REQUIRED). Tôi không tìm thấy bất kỳ đường dẫn lib thiết lập nào trong CmakeList.txt
John

trong mọi trường hợp, vấn đề của bạn không phải là cài đặt eigen, mà là cài đặt thư viện nguồn mở đó. Bạn nên đưa ra các thông báo lỗi bạn nhận được khi cài đặt thư viện đó trong câu hỏi của bạn, chúng sẽ có nhiều thông tin.
dùng2413

Đúng. Tôi đã cập nhật lỗi và liên kết nguồn
John

làm gedit /usr/local/include/eigen3/Eigen/src/Core/util/Macros.h cái nhìn cho các dòng #define EIGEN_WORLD_VERSIONđể #define EIGEN_MINOR_VERSIONsao chép và đăng tải những.
dùng2413

1
Cảm ơn. Nó đã làm việc bây giờ. Phần mềm cài đặt của tôi chỉ là một dự án.
Giăng

20

Đối với những người chỉ cần yêu cầu phiên bản hợp lý gần đây của Eigen 3 trên Ubuntu và các bản phân phối dựa trên Debian tương tự ( ... đó là trường hợp phổ biến ), cài đặt libeigen3-devgói hiện có đủ: vd

sudo apt install libeigen3-dev

Tải xuống và cài đặt thủ công Eigen 3 có thể là quá mức cần thiết cho hầu hết các trường hợp sử dụng.


1
Có vẻ đơn giản nhưng thất bại đối với tôi :(
Yair Daon

6
libeigen3-devcài đặt Eigen 3.2, anh ta yêu cầu 3.3, vì vậy câu trả lời này là sai nếu bạn cần 3.3.
Gines Hidalgo

trên Ubuntu 19.04, gói cung cấp cho bạn 3.3.7 ... trong khi đó, khi bạn cài đặt từ cây src github.com/PX4/eigen, bạn nhận được 3.3.90 vào năm 20190712
Scott Stensland

2

dpkgchỉ biết về phần mềm mà bạn đã cài đặt bằng các công cụ quản lý gói tiêu chuẩn của Ubuntu. Nhưng đó không phải là cách bạn cài đặt eigen. Bạn đã cài đặt từ mã nguồn và như vậy dpkgkhông biết điều đó. Đầu ra của dpkg -p libeigen3-devkhông phải là về eigen mà bạn đã cài đặt, mà là về một phiên bản khác của eigen, được cài đặt bằng các công cụ quản lý gói tiêu chuẩn.

Dựa trên đầu ra của bạn sudo make install, phiên bản eigen mà bạn đã cài đặt từ nguồn đã sẵn sàng để sử dụng, các tệp của nó có sẵn /usr/local/include/eigen3/unsupported/Eigen/src.


1

Sau khi giải nén thư mục nén, kiểm tra tệp INSTALL. Tôi đã sử dụng tùy chọn thứ hai của cài đặt bằng cách sử dụng cmake. Sau đó, thư mục "eigen3" với các tệp tiêu đề đã được tạo trong /usr/local/include/thư mục.

Trong dự án của bạn, bạn có thể bao gồm các tiêu đề eigen như thế này:

#include <eigen3/Eigen/Dense>

Tôi quên đề cập đến điều này. Vì các tệp tiêu đề nằm trong /usr/local/include/thư mục, bạn không cần phải biên dịch các tệp mã nguồn của mình theo chúng bằng cách sử dụng " g++ -I....."

Chúc may mắn!

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.