Используйте igraph в проектах C++

Я попытался установить igraph, выполнив следующие команды (как описано в руководстве):

./configure
make
make check
make install

Инструкции по установке не содержат никакой дополнительной информации, что делать дальше. Как использовать файлы в моих текущих проектах (например, в Eclipse)?

Согласно мануалу, процесс установки заключается в добавлении файлов в папку usr/local/bin, но после установки эта папка пуста (нет скрытых файлов).

Как проще всего использовать файлы в моих проектах на С++?


person Niccola Tartaglia    schedule 08.04.2015    source источник


Ответы (1)


Процесс установки заключается в добавлении включаемых файлов в /usr/local/include (точнее только в /usr/local/include/igraph) и библиотечных файлов в /usr/local/lib. Прикрепите /usr/local/include к пути включения в Eclipse, добавьте /usr/local/lib к пути вашей библиотеки в Eclipse и добавьте igraph к списку связанных библиотек, и все готово. Обязательно используйте #include <igraph/whatever.h> в своем коде на C++, чтобы включить вещи, специфичные для igraph.

Кроме того, этот проект пытается предоставить для igraph более похожий на C++ API. Он все еще экспериментальный, API постоянно меняется, и многие функции igraph еще не включены в эквиваленты C++, но это отправная точка, которую вы можете расширить.

person Tamás    schedule 08.04.2015
comment
Спасибо за ответ Тамас. Однако каким-то образом процесс установки не добавил никаких файлов в упомянутые вами папки include и lib. Могу ли я добавить их вручную или есть способ проверить, что пошло не так во время установки? - person Niccola Tartaglia; 09.04.2015
comment
Запустите make install и найдите все сообщения об ошибках в выводе. - person Tamás; 09.04.2015
comment
Итак, как описано в инструкциях по установке, я начал с: ./configure, который выдает следующие ошибки: /usr/bin/ld: невозможно найти -lxml2 /usr/bin/ld: невозможно найти -lz collect2: ошибка: ld вернул 1 выход статус - person Niccola Tartaglia; 09.04.2015
comment
При запуске make check и make install я получаю ту же ошибку. Является ли причиной этой ошибки то, что я запускаю команды из папки загрузки? Следует изменить на usr/local/include. Или это может быть из-за того, что у меня нет root прав? - person Niccola Tartaglia; 09.04.2015
comment
Когда я запускаю make installcheck, я получаю сообщение об ошибке: ОШИБКА: все 234 теста были выполнены, 234 неожиданно завершились неудачно. Он также создает файл testuide.log (который я могу предоставить при необходимости), который в каждом тесте содержит одно и то же сообщение об ошибке, упомянутое выше. - person Niccola Tartaglia; 09.04.2015
comment
Я проверил папку /usr/bin/ld, и такой папки не существует. Это какой-то пакет, который требуется для igraph, и если да, то можно ли его как-то установить? - person Niccola Tartaglia; 11.04.2015
comment
Вам не хватает библиотек libxml2 и libz (ну, скорее всего, файлов разработки этих библиотек), обе из которых являются зависимостями от igraph. Если вы используете Ubuntu или Debian Linux, сначала установите libxml2-dev и/или libz-dev, прежде чем пытаться скомпилировать igraph. - person Tamás; 11.04.2015
comment
Итак, после установки библиотек libxml2 и libz установка наконец-то заработала. Большое спасибо!!! - person Niccola Tartaglia; 19.04.2015
comment
Мне удалось запустить пример из учебника igraph в новом файле cpp из командной строки. При создании этого файла мне пришлось указать расположение файлов библиотеки. Я скопировал в make-файл те же команды, что и в Eclipse, и все заработало нормально. - person Niccola Tartaglia; 19.04.2015
comment
Однако, чтобы запустить программу, мне нужно было снова указать адрес библиотек (например, LD_PRELOAD=/usr/local/lib/libigraph.so ./igraph_test), что отлично работало из командной строки. Но когда я добавляю те же самые строки к своим аргументам в конфигурации запуска, я получаю эту ошибку: [proxy:0:0@m2108] HYDU_create_process (./utils/launch/launch.c:69): ошибка execvp в файле LD_PRELOAD =/usr/local/lib/libigraph.so (Нет такого файла или каталога) - person Niccola Tartaglia; 19.04.2015
comment
Похоже, что вместо того, чтобы добавлять LD_Preload к моим аргументам Run в Eclipse, мне нужно добавить его в свою среду там. Я не совсем уверен, однако, как добавить эту строку туда. - person Niccola Tartaglia; 19.04.2015
comment
Итак, в среде я просто добавил LD_Preload в качестве переменной и абсолютный путь в качестве значения, и теперь он, наконец, запускается. Спасибо еще раз!!! - person Niccola Tartaglia; 19.04.2015
comment
Я предполагаю, что вы используете какой-то вариант Linux. В большинстве дистрибутивов Linux вы можете настроить путь, по которому компоновщик ищет динамические библиотеки в /etc/ld.so.conf или /etc/ld.so.conf.d, так что, вероятно, лучшим способом действий будет постоянное добавление /usr/local/lib к пути компоновщика (поскольку в любом случае это довольно распространено в некоторых дистрибутивах Linux). Пожалуйста, обратитесь к документации вашего дистрибутива Linux, чтобы узнать, как это сделать. - person Tamás; 19.04.2015
comment
Вы правы, я использую Ubuntu. Итак, я проверил файл «libc.conf» в /etc/ld.so.conf.d, и он уже содержит строку: /usr/local/lib. Возможно, мне нужно вместо этого добавить '/usr/local/lib/libigraph.so'. Я просмотрю документацию Ubuntu и посмотрю, смогу ли я что-нибудь найти. - person Niccola Tartaglia; 20.04.2015
comment
Не нужно добавлять /usr/local/lib/libigraph.so. Вам, вероятно, нужно запустить ldconfig; проверьте также этот ответ: unix.stackexchange.com/a/67784 - person Tamás; 21.04.2015
comment
Да, вы правы, ldconfig сделал свое дело (правда, мне пришлось перезагрузиться между ними, не уверен, почему именно, но теперь это работает). Еще раз огромное спасибо!!! - person Niccola Tartaglia; 22.04.2015