
Я попытался скомпилировать программуПроверка критерия Лив Ubuntu. Однако когда я это делаю gcc demo.c
, я получаю вывод, как,
demo.c:2:19: fatal error: fmpcb.h: No such file or directory
#include "fmpcb.h"
^
compilation terminated.
Как мне скомпилировать эту программу? Я думаю, мне нужен какой-то bash-скрипт, чтобы компиляция заработала.
решение1
Файл fmpcb.h больше не существует в последней версии Arb. Типы fmprb_t и fmpcb_t в Arb 1.x были заменены (более эффективными) типами arb_t и acb_t в Arb 2.x. В последней версии полностью удален устаревший тип fmpcb_t.
Вы сможете заставить работать код из этого поста в блоге, заменив fmprb -> arb и fmpcb -> acb и, возможно, внеся другие незначительные изменения.
Однако лучшим решением будет использование примера программы Keiper-Li, которая включена в Arb:
https://github.com/fredrik-johansson/arb/blob/master/examples/keiper_li.c
Это в основном улучшенная версия программы в блоге. Она быстрее, поддерживает многопоточность, позволяет передавать аргументы в командной строке вместо перекомпиляции и должна соответствовать текущему интерфейсу.
Из исходного каталога Arb вы можете собрать и запустить пример программы следующим образом (предполагается, что Arb уже установлен):
cd /home/user/src/arb
make examples
build/examples/keiper_li 100
Вы также можете собрать библиотеку и запустить примеры программ без установки Arb, сообщив компоновщику, что он может найти libarb.so в исходном каталоге:
cd /home/user/src/arb
make
export LD_LIBRARY_PATH=/home/user/src/arb:$LD_LIBRARY_PATH
make examples
build/examples/keiper_li 100
Документацию по примерам программ Arb см. здесь:http://fredrikj.net/arb/examples.html
решение2
Файл fmpcb.h
не найден в пути включения C. Кроме того,использование кавычек вместо скобок здесь, вероятно, тоже плохая идея. Этот тест, который вы пытаетесь построить, вероятно, предназначен для компиляции.вдольс библиотекой Arb, поэтому автор использует кавычки.
Первым делом установите пакет, предоставляющий этот заголовочный файл (и, конечно, связанную библиотеку, если таковая имеется). Этот файл, похоже, предоставляется библиотекой Arb, которая может бытьскачано здесь (скачать ZIP). После того, как вы скачали и распаковали архив, войдите в его каталог и введите:
$ ./configure
$ make
$ sudo make install
Скрипт configure
выполнит проверки вашей системы, чтобы убедиться, что он может скомпилировать и связать библиотеку, которую вы собираете. Если это не удастся, вам придется установить все требуемые зависимости, прежде чем двигаться дальше. Некоторые зависимости могут быть предоставлены в виде бинарных пакетов (см. документацию вашего дистрибутива), некоторые — нет (в этом случае вам придется прочитать их инструкции, обычно это файл README или INSTALL в архиве библиотеки). Согласно странице Arb's Git, вам придется сделать несколько установок:
Арб зависит от FLINT (http://flintlib.org/), МПИР (http://mpir.org) и МПФР (http://mpfr.org). Его можно создать как отдельную библиотеку или как часть FLINT в качестве дополнительного пакета расширения.
Примечание:Моя система Ubuntu предоставляет бинарные пакеты для libflint (libflint-dev) и MPFR (libmpfr-dev). Вы можете установить их с помощью:
$ sudo apt-get install libflint-dev libmpfr-dev
(конечно, если ваш менеджер пакетов apt-get
). MPIR может бытьскачано здесь, и установлен с использованием другого типичного ./configure && make && sudo make install
. Согласнодокументация MPIR, нет зависимости для установки перед компиляцией библиотеки. В общем:
- Установите
libflint-dev
иlibmpfr-dev
используйтеapt-get
их или скомпилируйте самостоятельно вместе с соответствующими зависимостями, если таковые имеются. - Загрузите библиотеку MPIR, скомпилируйте ее (см. файл README или документацию в формате PDF, ссылку на которую я привел выше) и установите ее.
- Загрузите библиотеку Arb, скомпилируйте и установите ее.
После сборки и установки библиотеки Arb в вашей системе файл fmpcb.h
должен быть доступен по адресу /usr/local/include/fmpcb.h
(если только ваш дистрибутив не использует другой путь). Вы также найдете файлы библиотеки в /usr/local/lib
. Поскольку файл заголовка находится в системном каталоге (путь включения C), вам придется использовать скобки вместо кавычек в вашем коде:
#include <fmpcb.h>
Теперь, если вы хотите скомпилировать и скомпоновать эту недавно установленную библиотеку, вам придется указать компилятору сделать это:
$ gcc -I/usr/local/include -L/usr/local/lib -larb yourprogram.c -o yourprogram
$ ./yourprogram
Для получения дополнительной информации об установке Arb посетитеэта страница. Вы также найдете информацию об установке Arb как расширения Flint и инструкции по составлению для этой конкретной ситуации.