Jak zainstalować eigen 3.3 w Ubuntu 14.04?

13

Używam Ubuntu 14.04 i chcę zainstalować eigen 3.3 w Ubuntu. Próbowałem pobrać najnowszą wersję Eigen 3 (3.3) i zainstalować w następujący sposób

mkdir build
cd build
cmake ..
make
sudo make install 

Wynik lubi

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

Jednak gdy sprawdzam bieżącą wersję własną za pomocą dpkg -p libeigen3-dev, wynik jest następujący

Package: libeigen3-dev
Priority: extra
Section: libdevel
Installed-Size: 3729
Maintainer: Ubuntu Developers <[email protected]>
Architecture: all
Source: eigen3
Version: 3.2.0-8
Provides: libeigen2-dev
Depends: pkg-config
Suggests: libeigen3-doc, libmrpt-dev
Size: 494158

Pokazało, że moja konfiguracja się nie kończy. Jak mogę zainstalować wersję własną w moim Ubuntu? Dzięki wszystkim

Jest to błąd podczas kompilacji z CmakeList.txt w kodzie źródłowym

-- ===============================================================
-- ============ 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)
Jan
źródło
1
O ile nie wykonasz dodatkowych kroków (takich jak użycie checkinstallprogramu zamiast make install), system dpkg nie będzie wiedział nic o programach zainstalowanych w ten sposób ze źródła.
steeldriver,
Przepraszam. Co to znaczy? Jak mogę rozwiązać problem? Na pewno nie udało mi się zainstalować wersji 3.3
John
Co sprawia, że ​​myślisz, że to się nie powiodło? Co pkg-config --modversion eigen3mówi Jaką wersję faktycznie otrzymujesz, kiedy próbujesz zbudować coś?
steeldriver,
Ponieważ uruchamiam kod źródłowy, który wymaga wersji Eigen> = 3.2.90 i pokazuje, że moja bieżąca wersja to nadal 3.2.0
Jan

Odpowiedzi:

9

Eigen c ++ to biblioteka zawierająca tylko nagłówki: nie musisz jej instalować, wystarczy ją pobrać, rozpakować i połączyć z nią kod.

Na przykład, jeśli masz kod my_favorite_cpp_folder, to:

cd my_favorite_cpp_folder

oraz, zakładając, że twój kompilator jest gcci nagłówki własne, /usr/local/include/eigen3/unsupported/a nazwa twojego pliku źródłowego to my_favorite_cpp_source_file.cpp, kompilujesz i kodujesz i łączysz go z nagłówkami własnymi, wykonując:

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

(z twojego kodu wyjściowego opublikowanego powyżej, nagłówki własne znajdują się /usr/local/include/eigen3/na twoim komputerze)

użytkownik2413
źródło
Dziękuję Ci. Jednak kompiluję otwarty kod źródłowy z cmake. Za pomocą linii sprawdza wersję Eigen 3 # Add Eigen dependencies FIND_PACKAGE(Eigen 3.2.90 REQUIRED). Nie znalazłem żadnej ścieżki ustawiania lib w CmakeList.txt
John
w każdym razie twoim problemem nie jest instalacja eigen, tylko instalacja biblioteki open source. Powinieneś umieścić komunikaty o błędach, które otrzymujesz podczas instalowania tej biblioteki w swoim pytaniu, będą one pouczające.
user2413
Tak. Zaktualizowałem błąd i link źródłowy
John
zrobić gedit /usr/local/include/eigen3/Eigen/src/Core/util/Macros.h spojrzeć na linie #define EIGEN_WORLD_VERSION, aby #define EIGEN_MINOR_VERSIONskopiować i wysłać ci.
user2413
1
Dzięki. Teraz działało. Moje zainstalowane oprogramowanie to tylko projekt.
John,
21

Dla tych, którzy po prostu potrzebują dość nowej wersji Eigen 3 na Ubuntu i podobnych dystrybucjach opartych na Debianie ( ... co jest częstym przypadkiem ), libeigen3-devwystarczy zainstalować istniejący pakiet: np.

sudo apt install libeigen3-dev

Ręczne pobieranie i instalowanie Eigen 3 jest prawdopodobnie przesadą w większości przypadków użycia.

Cecil Curry
źródło
2
Wydaje się proste, ale dla mnie nie powiodło się :(
Yair Daon,
7
libeigen3-devinstaluje Eigen 3.2, prosi o 3.3, więc ta odpowiedź jest błędna, jeśli potrzebujesz 3.3.
Gines Hidalgo,
na Ubuntu 19.04 pakiet daje 3.3.7 ... podczas gdy podczas instalacji z drzewa src github.com/PX4/eigen otrzymujesz 3.3.90 od 20190712
Scott Stensland
2

dpkgwie tylko o oprogramowaniu zainstalowanym przez standardowe narzędzia do zarządzania pakietami Ubuntu. Ale nie tak zainstalowałeś własny. Zainstalowałeś z kodu źródłowego i jako taki dpkggo nie zna. Dane wyjściowe dpkg -p libeigen3-devnie dotyczą zainstalowanego własnego, ale innej wersji własnego zainstalowanego przy użyciu standardowych narzędzi do zarządzania pakietami.

W zależności od danych wyjściowych sudo make install, wersja eigen, którą zainstalowałeś ze źródła, jest gotowa do użycia, jej pliki są dostępne w /usr/local/include/eigen3/unsupported/Eigen/src.

janos
źródło
1

Po rozpakowaniu skompresowanego folderu sprawdź plik INSTALL. Użyłem drugiej opcji instalacji za pomocą cmake. Następnie utworzono folder „eigen3” z plikami nagłówkowymi w /usr/local/include/folderze.

W swoim projekcie możesz dołączyć takie nagłówki:

#include <eigen3/Eigen/Dense>

Zapomniałem o tym wspomnieć. Ponieważ pliki nagłówkowe znajdują się w /usr/local/include/folderze, nie musisz kompilować z nimi plików kodu źródłowego za pomocą „ g++ -I....”.

Powodzenia!

Onesphore Ndayishimiye
źródło