Ubuntu 14.04 में eigen 3.3 कैसे स्थापित करें?


13

मैं Ubuntu 14.04 का उपयोग कर रहा हूं और मैं Ubuntu में eigen 3.3 इंस्टॉल करना चाहता हूं। मैंने 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

यह दिखाया मेरा सेटअप खत्म नहीं होता है। मैं अपने उबंटू में ईजन संस्करण कैसे स्थापित कर सकता हूं? सभी को धन्यवाद

स्रोत कोड पर 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 संस्करण सफलतापूर्वक स्थापित नहीं किया था
जॉन

आपको क्या लगता है कि यह असफल था? क्या 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और ईजन हेडर में हैं /usr/local/include/eigen3/unsupported/और आपकी सोर्स फाइल का नाम है my_favorite_cpp_source_file.cpp, आप कंपाइल करें और कोड करें और इसे करके ईजन हेडर को लिंक करें:

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

(ऊपर पोस्ट किए गए आपके कोड आउटपुट से, eigen हेडर /usr/local/include/eigen3/आपके कंप्यूटर में हैं)


धन्यवाद। हालाँकि, मैं cmake से एक ओपन सोर्स कोड संकलित करता हूँ। यह Eigen 3 संस्करण की जांच करने के लिए लाइन का उपयोग करता है # Add Eigen dependencies FIND_PACKAGE(Eigen 3.2.90 REQUIRED)। मुझे CmakeList.txt
John

किसी भी मामले में आपकी समस्या eigen स्थापित करने के साथ नहीं है, यह उस ओपन सोर्स लाइब्रेरी को स्थापित करने के साथ है। आपको अपने प्रश्न में उस लाइब्रेरी को स्थापित करते समय मिलने वाली त्रुटियों के संदेशों को रखना चाहिए, जो जानकारीपूर्ण होंगे।
user2413

हाँ। मैंने त्रुटि और स्रोत लिंक
जॉन

ऐसा gedit /usr/local/include/eigen3/Eigen/src/Core/util/Macros.h लाइनों के लिए देखो #define EIGEN_WORLD_VERSIONकरने के लिए #define EIGEN_MINOR_VERSIONकॉपी और उन पोस्ट।
user2413

1
धन्यवाद। अब काम हो गया। मेरा स्थापित सॉफ्टवेयर सिर्फ एक परियोजना है।
John

21

उबंटू और इसी तरह के डेबियन-आधारित डिस्ट्रोस ( ... जो सामान्य मामला है ) पर Eigen 3 के एक हालिया संस्करण की आवश्यकता वाले लोगों के लिए , मौजूदा पैकेज प्रत्ययों को स्थापित करना : जैसे,libeigen3-dev

sudo apt install libeigen3-dev

Eigen 3 को मैन्युअल रूप से डाउनलोड और इंस्टॉल करना संभवतः अधिकांश उपयोग के मामलों के लिए ओवरकिल है।


2
सरल लगता है, लेकिन मेरे लिए असफल रहा :(
यार डॉन

7
libeigen3-devEigen 3.2 स्थापित करता है, वह 3.3 के लिए पूछ रहा है, इसलिए यदि आपको 3.3 की आवश्यकता है तो यह उत्तर गलत है।
गाइन्स हिडाल्गो

उबंटू 19.04 पर पैकेज जबकि जब आप src पेड़ github.com/PX4/eigen से स्थापित आप 20,190,712 के रूप में 3.3.90 मिल आप 3.3.7 देता है ...
स्कॉट Stensland

2

dpkgकेवल उस सॉफ़्टवेयर के बारे में जानता है जिसे आपने उबंटू के मानक पैकेज प्रबंधन टूल द्वारा स्थापित किया है। लेकिन यह नहीं है कि आप कैसे स्थापित eigen है। आपने स्रोत कोड से इंस्टॉल किया है, और इस तरह से dpkgयह नहीं पता है। का आउटपुट dpkg -p libeigen3-devउस ईजन के बारे में नहीं है जिसे आपने स्थापित किया था, बल्कि मानक पैकेज प्रबंधन टूल का उपयोग करके स्थापित किए गए ईजन के एक अलग संस्करण के बारे में है।

आपके आउटपुट के आधार पर, आपके sudo make installद्वारा स्रोत से इंस्टॉल किए गए eigen का संस्करण उपयोग करने के लिए तैयार है, इसकी फाइलें इसमें उपलब्ध हैं /usr/local/include/eigen3/unsupported/Eigen/src


1

संपीड़ित फ़ोल्डर को निकालने के बाद INSTALL फ़ाइल की जाँच करें। मैंने प्रयोग करके इंस्टॉल करने के दूसरे विकल्प का उपयोग किया cmake। जिसके बाद हेडर फ़ाइलों के साथ "eigen3" फ़ोल्डर फ़ोल्डर में बनाया गया था /usr/local/include/

अपनी परियोजना में आप इस तरह से ईजन हेडर शामिल कर सकते हैं:

#include <eigen3/Eigen/Dense>

मैं यह उल्लेख करना भूल गया। चूंकि हेडर फाइलें /usr/local/include/फ़ोल्डर में हैं, इसलिए आपको " g++ -I.... " का उपयोग करके अपने स्रोत-कोड फ़ाइलों को संकलित करने की आवश्यकता नहीं है ।

सौभाग्य!

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.