¿Cómo puedo compilar el código objeto para el sistema equivocado y compilación cruzada pregunta?

StackOverflow https://stackoverflow.com/questions/1261472

  •  12-09-2019
  •  | 
  •  

Pregunta

Referencia esta pregunta sobre la compilación. No entiendo cómo mi programa para Mac puede utilizar el -arch derecha, compilar con esas banderas -arch, las banderas -arch ser para el sistema que estoy en (a g5 ppc64), y todavía producen el código objeto equivocado.

Además, si he usado un compilador cruzado y estaba en Linux, produjo 10,5 código para Mac, ¿cómo podría esto ser diferente de lo que he descrito anteriormente?

El fondo es que he tratado de compilar varios módulos de Apache. Recopilan con el ppc -arch, ppc64, etc. consigo ningún error y consigo mi mod_whatever.so. Pero, Apache siempre se quejan de que no se encuentra algún símbolo. Al parecer, tiene que ver con lo que produce el compilador, a pesar de que el tipo de archivo dice que es para ppc, ppc64, i386, x_64 (binario universal) y parece coincidir con todos los otros mods .so que tengo.

supongo que no entiendo cómo se podría compilar para mi sistema sin ningún problema y luego decir que mi sistema no puede usarlo. Tal vez yo no entiendo lo que un compilador en realidad me está dando.

EDIT: Todos los mensajes de error y el proceso completo se puede ver aquí .

Gracias.

¿Fue útil?

Solución

Mirando el otro hilo y en otros lugares y sin un G5 o instalación del servidor de OSX, sólo puedo hacer algunos comentarios y sugerencias pero tal vez te ayudaré.

  1. Por lo general, no es una buena idea estar modificando el software instalado el o / s del vendedor. La instalación de un nuevo módulo de Apache es menos problemático que, por ejemplo, sobrescribir una biblioteca existente, pero todavía estás a merced del vendedor en esa actualización de un software podría borrar sus modificaciones y, más allá de que usted tiene que averiguar cómo era la versión del proveedor construida en el primer lugar. Una práctica común en el mundo OS X es evitar esto haciendo una instalación completamente separado de un producto de código abierto, como Apache, utilizando, por ejemplo, DarwinPorts . Eso tiene sus desventajas, también: para lograr un alto nivel de independencia, MacPorts a menudo descargar y generar una gran cantidad de paquetes dependientes de las cosas que ya están en OS X, pero no hay daño en la que, aparte de algunos ciclos de construcción adicionales y espacio en disco .

  2. Dicho esto, debería ser posible construir e instalar los módulos de Apache para complementar los suministrados por Apple. Apple hace publicar los cambios que realiza para abrir los productos de código aquí ; se puede desglosar en las diferentes versiones que hay que encontrar el directorio de Apache que contiene la fuente, Makefile y parches aplicados. Eso podría ser de ayuda.

  3. Asegúrese de que el mod _ *. Por lo que la construcción está realmente de 64 bits y no depende de ninguna biblioteca bits no 64. Utilice otool -L mod_*.so para ver las librerías dinámicas que cada uno referencias y luego usar file en esas bibliotecas para asegurar que todos ellos tienen variantes ppc64.

  4. Asegúrese de que está utilizando hasta a la fecha de las herramientas de desarrollo (Xcode 3.1.3 es actual).

  5. Mientras que la cadena de herramientas de desarrollador utiliza muchos componentes de código abierto, Apple ha mejorado muchos de ellos y hay grandes diferencias en la ITB de OS X, soporte universal binaria, bibliotecas dinámicas, etc. La conclusión es que la compilación cruzada de OS X orientada código objeto en Linux (o cualquier otra plataforma que no OS X) no se admite ni práctico.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top