Bagaimana cara menginstal eigen 3.3 di Ubuntu 14.04?


12

Saya menggunakan Ubuntu 14.04 dan saya ingin menginstal eigen 3.3 di Ubuntu. Saya mencoba mengunduh versi terbaru Eigen 3 (3.3) dan menginstalnya sebagai berikut

mkdir build
cd build
cmake ..
make
sudo make install 

Output suka

-- 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

Namun, ketika saya memeriksa versi eigen saya saat ini dpkg -p libeigen3-dev, hasilnya adalah

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

Ini menunjukkan pengaturan saya tidak selesai. Bagaimana saya bisa menginstal versi eigen di Ubuntu saya? Terimakasih semua

Ini kesalahan ketika saya kompilasi dengan CmakeList.txt pada kode sumber

-- ===============================================================
-- ============ 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
Kecuali Anda mengambil langkah-langkah tambahan (seperti menggunakan checkinstallprogram di tempat make install), sistem dpkg tidak akan tahu apa-apa tentang program yang diinstal dari sumber dengan cara ini.
steeldriver

Maaf. Apa artinya? Bagaimana saya bisa memperbaiki masalah saya. Saya pasti tidak berhasil menginstal versi 3.3
John

Apa yang membuat Anda berpikir itu tidak berhasil? Apa yang pkg-config --modversion eigen3dikatakan? Versi apa yang sebenarnya Anda dapatkan ketika Anda mencoba membangun barang?
steeldriver

Karena saya menjalankan kode sumber yang memerlukan versi Eigen> = 3.2.90 dan itu menunjukkan bahwa versi saya saat ini masih 3.2.0
John

Jawaban:


10

Eigen c ++ adalah pustaka header saja: Anda tidak harus menginstalnya, cukup unduh, unzip, dan tautkan kode Anda.

Misalnya, jika kode Anda ada my_favorite_cpp_folder, Anda melakukannya:

cd my_favorite_cpp_folder

dan, dengan anggapan kompiler Anda berada gccdan header eigen ada di dalam /usr/local/include/eigen3/unsupported/dan nama file sumber my_favorite_cpp_source_file.cppAnda, Anda mengkompilasi dan kode dan menautkannya ke header eigen dengan melakukan:

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

(dari output kode Anda yang diposting di atas, header eigen ada di /usr/local/include/eigen3/komputer Anda)


Terima kasih. Namun, saya mengkompilasi kode sumber terbuka dari cmake. Ini menggunakan garis untuk memeriksa versi Eigen 3 # Add Eigen dependencies FIND_PACKAGE(Eigen 3.2.90 REQUIRED). Saya tidak menemukan pengaturan lib path di CmakeList.txt
John

bagaimanapun masalah Anda bukan dengan menginstal eigen, itu adalah dengan menginstal perpustakaan open source itu. Anda harus memasang pesan kesalahan yang Anda dapatkan ketika menginstal perpustakaan itu dalam pertanyaan Anda, itu akan informatif.
user2413

Iya. Saya memperbarui tautan kesalahan dan sumber
John

jangan gedit /usr/local/include/eigen3/Eigen/src/Core/util/Macros.h mencari baris #define EIGEN_WORLD_VERSIONuntuk #define EIGEN_MINOR_VERSIONmenyalin dan mempostingnya.
user2413

1
Terima kasih. Itu berhasil sekarang. Perangkat lunak yang saya instal hanyalah sebuah proyek.
Yohanes

20

Bagi mereka yang hanya membutuhkan versi terbaru dari Eigen 3 di Ubuntu dan distro berbasis Debian serupa ( ... yang merupakan kasus umum ), menginstal libeigen3-devpaket yang ada sudah cukup: misalnya,

sudo apt install libeigen3-dev

Mengunduh dan menginstal Eigen 3 secara manual mungkin berlebihan untuk sebagian besar kasus penggunaan.


1
Tampak sederhana tetapi gagal untuk saya :(
Yair Daon

6
libeigen3-devmenginstal Eigen 3.2, ia meminta 3.3, jadi jawaban ini salah jika Anda membutuhkan 3.3.
Gines Hidalgo

pada Ubuntu 19.04 paket memberi Anda 3.3.7 ... sedangkan ketika Anda menginstal dari src tree github.com/PX4/eigen Anda mendapatkan 3.3.90 pada 20190712
Scott Stensland

2

dpkghanya tahu tentang perangkat lunak yang telah Anda instal oleh alat manajemen paket standar Ubuntu. Tapi bukan itu cara Anda menginstal eigen. Anda telah menginstal dari kode sumber, dan karena dpkgitu tidak mengetahuinya. Output dari dpkg -p libeigen3-devbukan tentang eigen yang Anda instal, tetapi tentang versi eigen yang berbeda, diinstal menggunakan alat manajemen paket standar.

Berdasarkan output Anda dari sudo make install, versi eigen yang Anda instal dari sumber siap digunakan, file-nya tersedia di /usr/local/include/eigen3/unsupported/Eigen/src.


1

Setelah mengekstrak folder terkompresi, periksa file INSTALL. Saya menggunakan opsi kedua menginstal menggunakan cmake. Setelah itu folder "eigen3" dengan file header dibuat di /usr/local/include/folder.

Dalam proyek Anda, Anda dapat memasukkan header eigen seperti ini:

#include <eigen3/Eigen/Dense>

Saya lupa menyebutkan ini. Karena file header ada di /usr/local/include/folder, Anda tidak perlu mengkompilasi file kode sumber Anda dengan menggunakan " g++ -I...."

Semoga berhasil!

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.