ldflags pitón-config en mac
Pregunta
Tengo un problema con python-config --ldflags
en OS X 10.6.2.
Usando mi no es del sistema python.org pitón instalar:
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
Pero si construyo un programa c incrustación de Python con los LDFLAGS anteriores, da lugar a la pitón sistema que se está incrustado. Parece -lpython2.5 es recoger la pitón sistema en primer lugar, antes de que el que está en el camino -L.
Hasta ahora, la única manera que tengo para trabajar es con
LDFLAGS=-F/ -framework Python
pero cuando se trata de distribuir Realmente me gustaría ser capaz de utilizar Python-config.
Lo que está pasando con la ruta de búsqueda de biblioteca que deja que funcione como se esperaba? De acuerdo con la página del manual de caminos -L deben ser registrados antes de la ruta predeterminada.
¿Hay alguna opción en la línea de 'olvidar el camino de búsqueda predeterminado y la búsqueda sólo rutas especificadas con -L' que podría añadir a la salida de pitón-config para conseguir que funcione?
O ¿hay alguna manera de extraer las banderas -framework de trabajo desde cualquier Python está en el camino (que sería trabajar para lo que el usuario está utilizando, es decir, del sistema python.org, o macports propio integrado)?
Solución
Lo sentimos para responder a mi propia pregunta, pero me dieron una respuesta increíblemente rápida en la lista de correo pythonmac-sig, donde también le pregunté. Es un error por el pitón actual: http://bugs.python.org/issue7541
solución sugerida:
La solución más sencilla es abrir una ventana de terminal y ejecutar el comandos siguientes:
cd /Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/config ln -s libpython2.5.a libpython2.5.dylib
Esto asegurará que el enlazador OSX sabe que es compartida libpython biblioteca y enlaces a esta biblioteca. Por por defecto las búsquedas de engarce para un OSX .dylib en todo el trayecto del enlazador y sólo entonces busca .a archivos.
EDIT: Además de actualización:
Si usted puede agregar banderas-mac específico en su sistema de construcción que podría añadir
-Wl,-search_paths_first
a LDFLAGS en OSX, esto asegura que el enlazador busca tanto .dylib y archivos en .a un directorio de la ruta de enlace antes de pasar a la siguiente directorio.