Ubuntu 14.04'te eigen 3.3 nasıl kurulur?


13

Ubuntu 14.04 kullanıyorum ve eigen 3.3'ü Ubuntu'ya kurmak istiyorum. Eigen 3'ün (3.3) en yeni sürümünü indirmeye ve aşağıdaki gibi yüklemeye çalıştım

mkdir build
cd build
cmake ..
make
sudo make install 

Çıktı beğeni

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

Ancak, şu anki öz sürümümü ile kontrol ettiğimde dpkg -p libeigen3-dev, çıktı

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

Kurulumumun bitmediğini gösterdi. Ubuntu'uma eigen sürümünü nasıl yükleyebilirim? Herkese teşekkürler

Kaynak kodunda CmakeList.txt ile derlediğimde bu hata

-- ===============================================================
-- ============ 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
Ek adımlar atmadığınız sürece ( checkinstallprogramı yerinde kullanmak gibi make install), dpkg sistemi bu şekilde yüklenen programlar hakkında hiçbir şey bilmez.
steeldriver

Afedersiniz. Bunun anlamı ne? Sorunumu nasıl düzeltebilirim? Kesinlikle 3.3 sürümünü başarıyla yüklemedim
John

Başarısız olduğunu düşündüren nedir? Ne pkg-config --modversion eigen3diyor? Bir şeyler yapmaya çalıştığınızda aslında hangi sürümü alıyorsunuz?
steeldriver

Çünkü Eigen> = 3.2.90 sürümünü gerektiren bir kaynak kodu çalıştırıyorum ve mevcut sürümümün hala 3.2.0 olduğunu gösterdi
John

Yanıtlar:


9

Eigen c ++ yalnızca başlık içeren bir kitaplıktır: yüklemeniz gerekmez, indirmeniz, sıkıştırmanız ve kodunuzu buna bağlamanız yeterlidir.

Örneğin, kodunuz girilmişse my_favorite_cpp_folderşunları yaparsınız:

cd my_favorite_cpp_folder

ve derleyicinizin olduğunu gccve özbilgi başlıklarının bulunduğunu /usr/local/include/eigen3/unsupported/ve kaynak dosyanızın adını varsayarak, my_favorite_cpp_source_file.cppderleyerek kod yazar ve bunu özbilgi başlıklarına bağlarsınız:

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

(yukarıda yayınlanan kod çıkışınızdan, eigen başlıkları /usr/local/include/eigen3/bilgisayarınızdadır)


Teşekkür ederim. Ancak, cmake bir açık kaynak kod derlemek. Eigen 3 sürümünü kontrol etmek için satırı kullanır # Add Eigen dependencies FIND_PACKAGE(Eigen 3.2.90 REQUIRED). CmakeList.txt dosyasında herhangi bir ayar lib yolu bulamadım
John

her halükarda probleminiz öz kurmayla ilgili değil, açık kaynak kütüphaneyi kurmayla ilgilidir. Sorunuza bu kütüphaneyi kurarken aldığınız hata mesajlarını koymanız gerekir, bunlar bilgilendirici olacaktır.
user2413

Evet. Hata ve kaynak bağlantısını güncelledim
John

do gedit /usr/local/include/eigen3/Eigen/src/Core/util/Macros.h hatlar için göz #define EIGEN_WORLD_VERSIONiçin #define EIGEN_MINOR_VERSIONkopyalayıp olanlar göndermek.
user2413

1
Teşekkürler. Şimdi işe yaradı. Yüklü yazılımım sadece bir proje.
John

21

Ubuntu ve benzeri Debian tabanlı dağıtımlarda ( ... ortak durum ) Eigen 3'ün makul bir şekilde yeni bir sürümünü isteyenler için , mevcut paketin yüklenmesi yeterlidir: ör.libeigen3-dev

sudo apt install libeigen3-dev

Eigen 3'ü manuel olarak indirmek ve yüklemek, çoğu kullanım durumunda muhtemelen aşırıya kaçmıştır.


2
Basit görünüyor ama benim için başarısız oldu :(
Yair Daon

7
libeigen3-devEigen 3.2'yi yüklüyor, 3.3 istiyor, bu yüzden 3.3'e ihtiyacınız varsa bu cevap yanlış.
Gines Hidalgo

Ubuntu 19.04'te paket size 3.3.7 ... verirken, src ağacından github.com/PX4/eigen yüklediğinizde 20190712'den itibaren 3.3.90 elde edersiniz
Scott Stensland

2

dpkgyalnızca Ubuntu'nun standart paket yönetim araçları tarafından yüklediğiniz yazılımları bilir. Ama özü böyle yüklemedin. Kaynak koddan yüklediniz ve bu dpkgyüzden bilmiyor. Çıktısı, dpkg -p libeigen3-devyüklediğiniz öz ile ilgili değil, standart paket yönetim araçları kullanılarak yüklenen özün farklı bir sürümü ile ilgilidir.

Çıktınıza bağlı olarak sudo make install, kaynaktan yüklediğiniz eigen sürümü kullanıma hazırdır, dosyaları içinde mevcuttur /usr/local/include/eigen3/unsupported/Eigen/src.


1

Sıkıştırılmış klasörü çıkardıktan sonra INSTALL dosyasını kontrol edin. Kullanarak ikinci yükleme seçeneğini kullandım cmake. Daha sonra başlık dosyalarına sahip "eigen3" klasörü klasörde oluşturuldu /usr/local/include/.

Projenize şöyle öz başlıkları ekleyebilirsiniz:

#include <eigen3/Eigen/Dense>

Bundan bahsetmeyi unuttum. Başlık dosyaları /usr/local/include/klasörde olduğundan, kaynak kod dosyalarınızı " g++ -I...." kullanarak bunlara karşı derlemenize gerek yoktur .

İyi şanslar!

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.