ldflags python-config su Mac
Domanda
Ho un problema con python-config --ldflags
su OS X 10.6.2.
Utilizzando il mio non di sistema python.org python installazione:
robin-mbp:~ robince$ which python
/Library/Frameworks/Python.framework/Versions/2.5/bin/python
robin-mbp:~ robince$ python-config --ldflags
-L/Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/config -ldl -lpython2.5
Ma se io costruisco un programma c embedding Python con le LDFLAGS di cui sopra, il risultato e 'il pitone sistema da incorporato. Sembra -lpython2.5 è in ripresa il pitone primo sistema, prima di quello nel percorso -L.
Finora l'unico modo che ho preso a lavorare è con
LDFLAGS=-F/ -framework Python
, ma quando si tratta di distribuire Mi piacerebbe davvero essere in grado di utilizzare python-config.
Che cosa sta succedendo con il percorso di ricerca della libreria che si ferma a farlo funzionare come previsto? Secondo la pagina man percorsi -L devono essere cercati prima che il percorso predefinito.
C'è qualche opzione sulla falsariga di 'dimenticare il percorso di ricerca predefinito e cercare solo i percorsi specificati con -L' che avrei potuto aggiungere alla uscita python-config per farlo funzionare?
O c'è un modo per estrarre i lavoro bandiere -Framework da qualsiasi Python è sulla strada (che avrebbe funzionato per ciò che l'utente sta usando, ad esempio, del sistema python.org, macports o possedere costruito)?
Soluzione
Mi dispiace di rispondere alla mia domanda, ma ho ricevuto una risposta sorprendentemente rapida sulla mailing list pythonmac-sig, dove ho anche chiesto. Si tratta di un bug con pitone corrente: http://bugs.python.org/issue7541
soluzione suggerita:
La soluzione più semplice è quello di aprire un finestra terminale ed eseguire il seguenti comandi:
cd /Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/config ln -s libpython2.5.a libpython2.5.dylib
Questo farà sì che il linker OSX sa che libpython è un condivisa biblioteca e link a questa libreria. Di di default le ricerche linker OSX per un .dylib sull'intero percorso linker e solo allora cerca i file .a.
EDIT: Ulteriore aggiornamento:
Se è possibile aggiungere le bandiere specifiche per mac in il vostro sistema di compilazione è possibile aggiungere
-Wl,-search_paths_first
a LDFLAGS su OSX, questo assicura che il linker sembra sia .dylib e .a file in una directory nel percorso di collegamento prima passare alla directory successiva.