2012-02-14 6 views
8

Estoy tratando de instalar un programa que requiere la biblioteca libmad (biblioteca MPEG audio decodificador) en Mac OS X 10.7 Lion , pero la instalación de resultados libmad.0.15.b en este error:Instalar libmad en Mac OS X Lion: "error: la CPU que seleccionó no es compatible con el conjunto de instrucciones x86-64"

version.c:1: error: CPU you selected does not support x86-64 instruction set 

esa biblioteca se instala bien en OS X 10.5. ¿Es un problema de compatibilidad de 64 bits? No puedo encontrar instrucciones o documentos específicos con respecto a la instalación en Lion. ¿Alguna sugerencia? Gracias.

Respuesta

8

De forma predeterminada, los compiladores C y C++ en Snow Leopard y posteriores generan binarios de 64 bits, no de 32 bits como en las versiones anteriores de OS X. El script de configuración libmad aparentemente no se ha modificado para hacer frente a esto, y así genera comandos de compilación que causan el conflicto de 32/64 bits que ves.

Eso significa que una forma de solucionarlo es forzar una compilación de 32 bits.

Pero, es bastante fácil localizar la secuencia de comandos de configuración en el tipo de CPU correcto. Para León:

$ ./configure x86_64-apple-darwin11.3.0 

para Snow Leopard, cambiar la versión del núcleo:

$ ./configure x86_64-apple-darwin10.6.0 
+0

¿dónde lo copias para el próximo?/sw/bin? – nycynik

+0

Di 'sudo make install'. Eso configurará la biblioteca correctamente. No copie los archivos '.dylib' sin procesar. –

+1

+1 FYI: para Mountain Lion: './configure x86_64-apple-darwin12.2.0' y, en general,' uname -a' te dirá la versión de darwin para que puedas sub apropiadamente para futuras versiones. – Asaph

2

Ésta es una vieja pregunta, pero creo que tengo una respuesta mejor que Warren Young.

De forma predeterminada, libmad-0.15.1b está configurado de manera predeterminada para usar -march i486 cuando se basa en una arquitectura * 86 que no reconoce. Puede desactivar este comportamiento, y hacerlo sobre la base de su plataforma de 64 bits del león de montaña, cambiando esta línea

 i?86-*)   arch="i486" ;; 

en ./libmad-0.15.1b/configure.ac a esta línea:

 i?86-*)   arch="" ;; 

Esto debería permitir que libmad construya para cualquier arquitectura que el sistema realmente sea, en lugar de forzar i486.

Cuestiones relacionadas