
Ich habe versucht, das Programm zu kompilierenTesten des Li-Kriteriumsin Ubuntu. Wenn ich das jedoch mache gcc demo.c
, erhalte ich die Ausgabe als:
demo.c:2:19: fatal error: fmpcb.h: No such file or directory
#include "fmpcb.h"
^
compilation terminated.
Wie kann ich dieses Programm kompilieren? Ich glaube, ich brauche ein Bash-Skript, damit die Kompilierung funktioniert.
Antwort1
Die Datei fmpcb.h existiert in der neuesten Version von Arb nicht mehr. Die Typen fmprb_t und fmpcb_t in Arb 1.x wurden durch die (effizienteren) Typen arb_t und acb_t in Arb 2.x ersetzt. Die neueste Version hat den alten Typ fmpcb_t vollständig entfernt.
Sie sollten in der Lage sein, den Code aus diesem Blog-Beitrag zum Laufen zu bringen, indem Sie fmprb -> arb und fmpcb -> acb ersetzen und möglicherweise andere kleinere Anpassungen vornehmen.
Eine bessere Lösung ist jedoch die Verwendung des in Arb enthaltenen Keiper-Li-Beispielprogramms:
https://github.com/fredrik-johansson/arb/blob/master/examples/keiper_li.c
Dies ist im Grunde eine bessere Version des Programms im Blogbeitrag. Es ist schneller, unterstützt Multithreading, ermöglicht die Übergabe von Argumenten auf der Befehlszeile, anstatt es neu zu kompilieren, und es sollte mit der aktuellen Schnittstelle auf dem neuesten Stand sein.
Aus dem Arb-Quellverzeichnis können Sie das Beispielprogramm wie folgt erstellen und ausführen (vorausgesetzt, Arb wurde bereits installiert):
cd /home/user/src/arb
make examples
build/examples/keiper_li 100
Sie können die Bibliothek auch erstellen und Beispielprogramme ausführen, ohne Arb zu installieren, indem Sie dem Linker mitteilen, dass er libarb.so im Quellverzeichnis finden kann:
cd /home/user/src/arb
make
export LD_LIBRARY_PATH=/home/user/src/arb:$LD_LIBRARY_PATH
make examples
build/examples/keiper_li 100
Die Dokumentation der Arb-Beispielprogramme finden Sie unter:http://fredrikj.net/arb/examples.html
Antwort2
Die fmpcb.h
Datei kann nicht im C-Include-Pfad gefunden werden. Außerdemdie Verwendung von Anführungszeichen anstelle von Klammern ist hier wahrscheinlich ebenfalls keine gute Idee. Dieser Test, den Sie erstellen möchten, soll wahrscheinlich kompiliert werdenentlangmit der Arb-Bibliothek, weshalb der Autor Anführungszeichen verwendet.
Als erstes installieren Sie das Paket, das diese Header-Datei bereitstellt (und natürlich die zugehörige Bibliothek, falls vorhanden). Diese Datei scheint von der Arb-Bibliothek bereitgestellt zu werden, diehier heruntergeladen (Download ZIP). Nachdem Sie das Archiv heruntergeladen und entpackt haben, gehen Sie in sein Verzeichnis und geben Sie Folgendes ein:
$ ./configure
$ make
$ sudo make install
Das configure
Skript führt Prüfungen auf Ihrem System durch, um sicherzustellen, dass es die von Ihnen erstellte Bibliothek kompilieren und verknüpfen kann. Wenn dies fehlschlägt, müssen Sie alle erforderlichen Abhängigkeiten installieren, bevor Sie fortfahren können. Einige Abhängigkeiten werden möglicherweise als Binärpakete bereitgestellt (siehe die Dokumentation Ihrer Distribution), andere nicht (in diesem Fall müssen Sie deren Anweisungen lesen, normalerweise eine README- oder INSTALL-Datei im Bibliotheksarchiv). Laut der Git-Seite von Arb müssen Sie einige Installationen durchführen:
Arb hängt von FLINT ab (http://flintlib.org/), MPIR (http://mpir.org) und MPFR (http://mpfr.org). Es kann als eigenständige Bibliothek oder als optionales Erweiterungspaket als Teil von FLINT erstellt werden.
Randnotiz:Mein Ubuntu-System stellt Binärpakete für libflint (libflint-dev) und MPFR (libmpfr-dev) bereit. Sie können sie mit folgendem installieren:
$ sudo apt-get install libflint-dev libmpfr-dev
(vorausgesetzt Ihr Paketmanager ist es apt-get
natürlich). MPIR kannhier heruntergeladenund mit einem anderen typischen installiert ./configure && make && sudo make install
. Lautdie MPIR-Dokumentation, es gibt keine Abhängigkeit, die vor dem Kompilieren der Bibliothek installiert werden muss. Alles in allem:
- Installieren
libflint-dev
undlibmpfr-dev
verwenden Sieapt-get
oder kompilieren Sie sie selbst zusammen mit den jeweiligen Abhängigkeiten, sofern vorhanden. - Laden Sie die MPIR-Bibliothek herunter, kompilieren Sie sie (siehe die README-Datei oder die oben verlinkte Dokumentations-PDF) und installieren Sie sie.
- Laden Sie die Arb-Bibliothek herunter, kompilieren und installieren Sie sie.
Sobald die Arb-Bibliothek erstellt und auf Ihrem System installiert wurde, fmpcb.h
sollte die Datei unter verfügbar sein /usr/local/include/fmpcb.h
(außer wenn Ihre Distribution einen anderen Pfad verwendet). Sie finden die Bibliotheksdateien auch unter /usr/local/lib
. Da sich die Header-Datei in einem Systemverzeichnis (C-Include-Pfad) befindet, müssen Sie in Ihrem Code Klammern statt Anführungszeichen verwenden:
#include <fmpcb.h>
Wenn Sie diese neu installierte Bibliothek nun kompilieren und verknüpfen möchten, müssen Sie den Compiler dazu anweisen:
$ gcc -I/usr/local/include -L/usr/local/lib -larb yourprogram.c -o yourprogram
$ ./yourprogram
Weitere Informationen zur Installation von Arb finden Sie unterdiese Seite. Sie finden dort auch Informationen zur Installation von Arb als Erweiterung von Flint sowie Kompilierungsanweisungen für diesen speziellen Fall.