Dies sollte keine schwierige Aufgabe sein, aber ich konnte das Problem für Stunden nicht lösen, also schrieb ich die Frage hier.Wie Standard-Include-und Bibliothekspfad für gcc in Macos für Bash hinzufügen?
Die versuchten Links folgen:
How to include needed C library using gcc?
How to add a default include path for gcc in linux?
http://gcc.gnu.org/onlinedocs/gcc-4.8.1/gcc/Environment-Variables.html#Environment-Variables
how gcc automatically know to include glib library
How to compile gcc with shared library?
http://www.cprogramming.com/tutorial/shared-libraries-linux-gcc.html
Wie kann ich die include und lib Pfad für cfitsio Bibliothek für gcc-Compiler?
Versuch:
Ich heruntergeladen und installiert cfitsio in den Pfad ~/Applications. (NOT/Anwendungen übrigens).
Dann Installationsbefehle sind:
sudo ./configure
sudo make
sudo make install
Nun lassen Sie uns sagen, dass ich ein Programm example.c haben.
Kompilieren: gcc -Wall -O3 example.c -lm -lcfitsio
Funktioniert nicht.
jedoch
gcc -Wall -O3 -o example example.c -I /Users/poudel/Applications/cfitsio/include -L /Users/poudel/Applications/cfitsio/lib -lm -lcfitsio
Works
Jetzt will ich nicht Fahnen verwenden -I und alle Zeiten -L. Wie kann ich das tun?
ich meine ~/.bash_profile mit folgenden Zeilen aktualisiert:
export PATH=$PATH:~/Applications/cfitsio/bin
export LD_LIBRARY_PATH="~/Applications/cfitsio:$LD_LIBRARY_PATH"
export LD_LIBRARY_PATH="~/Applications/cfitsio/lib:$LD_LIBRARY_PATH"
export LD_LIBRARY_PATH="~/Applications/cfitsio/lib/pkgconfig:$LD_LIBRARY_PATH"
export LD_LIBRARY_PATH="~/Applications/cfitsio/zlib:$LD_LIBRARY_PATH"
die Pfade überprüfen enthalten nach source ~/.bash_profile
läuft ich verwendet:
echo $LD_LIBRARY_PATH
Dies korrekt die zusätzlichen Pfade zeigt.
Ich habe die Pfade hinzugefügt, aber das nicht funktioniert:
gcc -Wall -O3 -o example example.c -lm -lcfitsio
und wenn ich -I und -L Fahnen mit ihren Pfaden geben es funktioniert.
Können wir etwas tun, das der obige Befehl funktioniert, ohne die Befehle -I und -L zu verwenden?
Hinweis:
Ich habe sogar versucht, die cfitsio aus dem Verzeichnis/usr/local zu installieren.
Ich installierte von/usr/local/cfitsio, aber wieder musste ich -I und -L Befehl mit diesen neuen Standorten verwenden.
Ich bin wirklich sehr frustriert.
Die Hilfe und der Vorschlag werden sehr geschätzt werden! Vielen Dank.
Update:
Ich versuchte dyld stattdessen zu verwenden und hinzugefügt, diese Zeilen in bash_profile:
export PATH="$(pwd):~/Applications/cfitsio/bin:$PATH"
export PATH="$(pwd):~/Applications/cfitsio/include:$PATH" # fitsio.h is here
export DYLD_LIBRARY_PATH="~/Applications/cfitsio/lib:$DYLD_LIBRARY_PATH"
export DYLD_LIBRARY_PATH="~/Applications/cfitsio/zlib:$DYLD_LIBRARY_PATH"
Allerdings, wenn ich diese Befehle ausführen sie leer Ausgänge zurückzukehren, konnte ich nicht gesetzt dyld Bibliothekspfad diese Wege.
echo $LD_LIBRARY_PATH
echo $DYLD_LIBRARY_PATH
Verwenden Sie 'gcc' von XCode oder einer anderen Version? Die Umgebungsvariable auf macOS ist DYLD_LIBRARY_PATH. Können Sie sum-Links in '/ usr/local/lib' installieren, die auf die installierten Bibliotheken verweisen? Können Sie etwas Ähnliches für die Header in '/ usr/local/include' tun, außer dass es wahrscheinlich ein Link zu dem Verzeichnis wäre, in dem Sie cfitsio installiert haben? –
Sie könnten make oder cmake oder pkg-config verwenden [wenn Sie cfitsio mit brew installieren] (https://heasarc.gsfc.nasa.gov/fitsio/fitsio_macosx.html). Sie müssen verstehen, dass Ihr Projekt für die Kompilierung konfiguriert werden muss. Also ja -I und -L und -l sind immer erforderlich. Verwenden Sie keine Umgebungsvariable, um dies zu tun. – Stargateur
@Stargateur, ich habe Homebrew nicht zur Installation von cfitsio verwendet, sondern make install von ihrem offiziellen Quellpaket. –