จะติดตั้ง eigen 3.3 ใน Ubuntu 14.04 ได้อย่างไร


13

ฉันใช้ Ubuntu 14.04 และฉันต้องการติดตั้ง eigen 3.3 ใน Ubuntu ฉันพยายามดาวน์โหลดรุ่นล่าสุดของ Eigen 3 (3.3) และติดตั้งดังต่อไปนี้

mkdir build
cd build
cmake ..
make
sudo make install 

ผลลัพธ์ที่ชอบ

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

อย่างไรก็ตามเมื่อฉันตรวจสอบรุ่น eigen ปัจจุบันของฉันด้วยdpkg -p libeigen3-devผลลัพธ์คือ

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

มันแสดงให้เห็นว่าการตั้งค่าของฉันไม่เสร็จสิ้น ฉันจะติดตั้งเวอร์ชัน eigen ใน Ubuntu ได้อย่างไร ขอบคุณทุกคน

นี่เป็นข้อผิดพลาดเมื่อฉันคอมไพล์ด้วย CmakeList.txt ที่ซอร์สโค้ด

-- ===============================================================
-- ============ 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
ถ้าคุณไม่ทำตามขั้นตอนเพิ่มเติม (เช่นการใช้checkinstallโปรแกรมแทนmake install) ระบบ dpkg จะไม่รู้อะไรเกี่ยวกับโปรแกรมที่ติดตั้งจากแหล่งในลักษณะนี้
ขับเหล็ก

ขอโทษ มันหมายความว่าอะไร? ฉันจะแก้ไขปัญหาของฉันได้อย่างไร ฉันแน่นอนว่าฉันไม่ได้ติดตั้ง 3.3 เวอร์ชั่นสำเร็จ
John

อะไรทำให้คุณคิดว่ามันไม่สำเร็จ สิ่งที่ไม่pkg-config --modversion eigen3พูด? รุ่นใดที่คุณได้รับจริงเมื่อคุณพยายามสร้างสิ่งต่าง ๆ
ขับเหล็ก

เพราะฉันเรียกใช้ซอร์สโค้ดซึ่งต้องการรุ่นของ Eigen> = 3.2.90 และแสดงว่าเวอร์ชันปัจจุบันของฉันยังคงเป็น 3.2.0
John

คำตอบ:


9

Eigen c ++ เป็นไลบรารีเฉพาะส่วนหัว: คุณไม่จำเป็นต้องติดตั้งคุณเพียงดาวน์โหลดดาวน์โหลดเปิดเครื่องรูดมันและเชื่อมโยงรหัสของคุณกับมัน

ตัวอย่างเช่นหากรหัสของคุณอยู่my_favorite_cpp_folderคุณจะ:

cd my_favorite_cpp_folder

และสมมติว่าคอมไพเลอร์ของคุณคือgccและส่วนหัว eigen อยู่ใน /usr/local/include/eigen3/unsupported/และชื่อของไฟล์ต้นฉบับของคุณคือmy_favorite_cpp_source_file.cppคุณรวบรวมและรหัสและเชื่อมโยงไปยังส่วนหัว eigen โดยทำ:

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

(จากเอาท์พุทรหัสของคุณโพสต์ข้างต้นส่วนหัว eigen อยู่ใน/usr/local/include/eigen3/คอมพิวเตอร์ของคุณ)


ขอบคุณ. อย่างไรก็ตามฉันรวบรวม code โอเพ่นซอร์สจาก cmake มันใช้บรรทัดเพื่อตรวจสอบ Eigen 3 # Add Eigen dependencies FIND_PACKAGE(Eigen 3.2.90 REQUIRED)รุ่น ฉันไม่พบเส้นทางการตั้งค่า lib ใน CmakeList.txt
John

ไม่ว่าในกรณีใดปัญหาของคุณไม่ได้อยู่ที่การติดตั้ง eigen แต่เป็นการติดตั้งไลบรารีโอเพ่นซอร์สนั้น คุณควรใส่ข้อความแสดงข้อผิดพลาดที่คุณได้รับเมื่อติดตั้งห้องสมุดนั้นในคำถามของคุณซึ่งจะเป็นข้อมูล
2413

ใช่. ฉันอัปเดตข้อผิดพลาดและลิงค์แหล่งข้อมูล
John

ทำgedit /usr/local/include/eigen3/Eigen/src/Core/util/Macros.h มองหาเส้น#define EIGEN_WORLD_VERSIONที่จะ#define EIGEN_MINOR_VERSIONคัดลอกและโพสต์เหล่านั้น
2413

1
ขอบคุณ มันใช้งานได้แล้ว ซอฟต์แวร์ที่ติดตั้งของฉันเป็นเพียงโครงการ
John

21

สำหรับผู้ที่ต้องการEigen 3เวอร์ชันล่าสุดที่สมเหตุสมผลบน Ubuntu และ Distros ที่ใช้ Debian ( ... ซึ่งเป็นกรณีทั่วไป ) การติดตั้งlibeigen3-devพอเพียงของแพ็คเกจที่มีอยู่: เช่น

sudo apt install libeigen3-dev

การดาวน์โหลดและติดตั้ง Eigen 3 ด้วยตนเองอาจเกินความจำเป็นสำหรับกรณีการใช้งานส่วนใหญ่


2
ดูเหมือนง่าย แต่ล้มเหลวสำหรับฉัน :(
Yair Daon

7
libeigen3-devติดตั้ง Eigen 3.2 เขากำลังขอ 3.3 ดังนั้นคำตอบนี้จะผิดถ้าคุณต้องการ 3.3
Gines Hidalgo

บน Ubuntu 19.04 แพ็คเกจให้ 3.3.7 ... ในขณะที่เมื่อคุณติดตั้งจาก src tree github.com/PX4/eigen คุณจะได้รับ 3.3.90 จาก 20190712
Scott Stensland

2

dpkgเพียงรู้เกี่ยวกับซอฟต์แวร์ที่คุณติดตั้งโดยเครื่องมือการจัดการแพ็คเกจมาตรฐานของ Ubuntu แต่นั่นไม่ใช่วิธีที่คุณติดตั้ง eigen คุณได้ติดตั้งจากซอร์สโค้ดและdpkgไม่ทราบ ผลลัพธ์ของdpkg -p libeigen3-devไม่เกี่ยวกับ eigen ที่คุณติดตั้ง แต่เกี่ยวกับ eigen รุ่นอื่นที่ติดตั้งโดยใช้เครื่องมือการจัดการแพ็คเกจมาตรฐาน

ขึ้นอยู่กับการส่งออกของคุณของรุ่นไอเกนที่คุณติดตั้งจากแหล่งที่พร้อมที่จะใช้งานไฟล์ที่อยู่ในที่มีอยู่sudo make install/usr/local/include/eigen3/unsupported/Eigen/src


1

หลังจากแตกไฟล์บีบอัดให้ตรวจสอบไฟล์ INSTALL cmakeผมใช้ตัวเลือกที่สองของการติดตั้งโดยใช้ หลังจากนั้นจะสร้างโฟลเดอร์ "eigen3" พร้อมไฟล์ส่วนหัวใน/usr/local/include/โฟลเดอร์

ในโครงการของคุณคุณสามารถรวมส่วนหัว eigen ดังนี้:

#include <eigen3/Eigen/Dense>

ฉันลืมที่จะพูดถึงเรื่องนี้ เนื่องจากไฟล์ส่วนหัวอยู่ใน/usr/local/include/โฟลเดอร์คุณไม่จำเป็นต้องคอมไพล์ไฟล์ซอร์สโค้ดของคุณโดยใช้ " g++ -I.... "

โชคดี!

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.