Manchmal, wenn ich ein Paket aus der Quelle erstelle, scheinen die resultierenden Binärdateien einen Verweis auf die Build-Flags zu enthalten, die ich verwende.Was bewirkt, dass eine kompilierte Bibliothek ihren Build-Befehl intern speichert?
Das Beispiel, mit dem ich arbeite, ist die Bibliothek fftw. So können Sie es herunterladen und erstellen.
FWIW, diese Zeilen benötigen ungefähr ~ 30 Sekunden, um auszuführen, also versuchen Sie es.
cd /tmp
wget http://www.fftw.org/fftw-3.3.4.tar.gz
tar xf fftw-3.3.4.tar.gz
cd fftw-3.3.4
CFLAGS="-I/foo/bar" ./configure --prefix=/tmp # We aren't going to run 'make install',
# so the --prefix is unimportant.
make -j4
Jetzt überprüfen wir die kompilierte Ausgabe. Beachten Sie, dass die alberne -I/foo/bar
Flagge in der Binärdatei selbst endete!
$ strings .libs/libfftw3.a | grep gcc
gcc -I/foo/bar
Aus technischen Gründen nicht wert hier (im Zusammenhang mit einem Paket-Management-Tool) zu erwähnen, ich möchte, dass verhindern oder zumindest zu verstehen, warum es geschieht, und wenn es wichtig ist.
BTW: Dies scheint sowohl unter Linux als auch unter OS X sowohl für gemeinsam genutzte als auch für statische Bibliotheken zu geschehen.
Keine reproduzierbaren [hier] (http://coliru.stacked-crooked.com/a/522a2aa00b1fa5d5). Bitte geben Sie eine [MCVE] an. –
@ n.m. OK, ich habe bearbeitet, um ein reales Beispiel zu liefern (fftw). Sie können diese Befehle auf Ihrem eigenen Computer kopieren und einfügen, was nur etwa 30 Sekunden dauern sollte. –
Studieren Sie die generierten 'Makefile'-s –