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)
checkinstall
programu zamiastmake install
), system dpkg nie będzie wiedział nic o programach zainstalowanych w ten sposób ze źródła.pkg-config --modversion eigen3
mówi Jaką wersję faktycznie otrzymujesz, kiedy próbujesz zbudować coś?Odpowiedzi:
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:oraz, zakładając, że twój kompilator jest
gcc
i nagłówki własne,/usr/local/include/eigen3/unsupported/
a nazwa twojego pliku źródłowego tomy_favorite_cpp_source_file.cpp
, kompilujesz i kodujesz i łączysz go z nagłówkami własnymi, wykonując:(z twojego kodu wyjściowego opublikowanego powyżej, nagłówki własne znajdują się
/usr/local/include/eigen3/
na twoim komputerze)źródło
# Add Eigen dependencies FIND_PACKAGE(Eigen 3.2.90 REQUIRED)
. Nie znalazłem żadnej ścieżki ustawiania lib w CmakeList.txtgedit /usr/local/include/eigen3/Eigen/src/Core/util/Macros.h
spojrzeć na linie#define EIGEN_WORLD_VERSION
, aby#define EIGEN_MINOR_VERSION
skopiować i wysłać ci.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-dev
wystarczy zainstalować istniejący pakiet: np.Ręczne pobieranie i instalowanie Eigen 3 jest prawdopodobnie przesadą w większości przypadków użycia.
źródło
libeigen3-dev
instaluje Eigen 3.2, prosi o 3.3, więc ta odpowiedź jest błędna, jeśli potrzebujesz 3.3.dpkg
wie 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 takidpkg
go nie zna. Dane wyjściowedpkg -p libeigen3-dev
nie 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
.źródło
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:
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!
źródło