Я использую 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
Однако, когда я проверяю свою текущую собственную версию с помощью 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
Показано, что мои настройки не заканчиваются. Как я могу установить собственную версию в моем 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)
checkinstall
вместо использования программыmake install
), система dpkg ничего не будет знать о программах, установленных из исходного кода таким образом.pkg-config --modversion eigen3
говорит? Какую версию вы на самом деле получаете, когда пытаетесь что-то собрать?Ответы:
Eigen C ++ - это библиотека только для заголовков: вам не нужно устанавливать ее, вы просто скачиваете ее, распаковываете и связываете свой код с ней.
Например, если ваш код находится в
my_favorite_cpp_folder
, вы делаете:и, предполагая, что ваш компилятор есть,
gcc
а собственные заголовки/usr/local/include/eigen3/unsupported/
и имя вашего исходного файлаmy_favorite_cpp_source_file.cpp
, вы компилируете и кодируете и связываете его с собственными заголовками, выполняя:(из вашего кода, опубликованного выше, собственные заголовки находятся
/usr/local/include/eigen3/
на вашем компьютере)источник
# Add Eigen dependencies FIND_PACKAGE(Eigen 3.2.90 REQUIRED)
. Я не нашел никакого пути установки lib в CmakeList.txtgedit /usr/local/include/eigen3/Eigen/src/Core/util/Macros.h
вид для строки ,#define EIGEN_WORLD_VERSION
чтобы#define EIGEN_MINOR_VERSION
скопировать и разместить их.Для тех, кому просто нужна достаточно свежая версия Eigen 3 в Ubuntu и аналогичные дистрибутивы на основе Debian ( ... что является распространенным случаем ), достаточно установить существующий
libeigen3-dev
пакет: например,Загрузка и установка Eigen 3 вручную, вероятно, является излишним для большинства случаев использования.
источник
libeigen3-dev
устанавливает Eigen 3.2, он запрашивает 3.3, поэтому этот ответ неверен, если вам нужно 3.3.dpkg
знает только о программном обеспечении, которое вы установили с помощью стандартных инструментов управления пакетами Ubuntu. Но это не так, как вы установили Eigen. Вы установили из исходного кода, и поэтомуdpkg
не знаете его. Выводdpkg -p libeigen3-dev
не о eigen, который вы установили, а о другой версии eigen, установленной с использованием стандартных инструментов управления пакетами.Исходя из вашего вывода
sudo make install
, версия eigen, которую вы установили из исходного кода, готова к использованию, ее файлы доступны в/usr/local/include/eigen3/unsupported/Eigen/src
.источник
После извлечения сжатой папки проверьте файл INSTALL. Я использовал второй вариант установки с помощью
cmake
. После чего в/usr/local/include/
папке была создана папка «eigen3» с заголовочными файлами .В ваш проект вы можете включить собственные заголовки, например:
Я забыл упомянуть об этом. Поскольку файлы заголовков находятся в
/usr/local/include/
папке, вам не нужно компилировать файлы исходного кода для них, используя «g++ -I
....».Удачи!
источник