Pregunta

Estoy intentando compilar en forma cruzada en AIX con los XLC / XLC compiladores.

El código se compila correctamente cuando se utiliza la configuración predeterminada en otra máquina. El código se compila correctamente en realidad con la compilación cruzada, pero el problema viene del enlazador. Este es el comando que une los objetos entre sí:

$(CHILD_OS)/usr/vacpp/bin/xlC -q32 -qnolib -brtl -o $(EXECUTABLE) $(OBJECT_FILES)   
-L$(CHILD_OS)/usr/lib  
-L$(CHILD_OS)/usr/vacpp/lib/profiled  
-L$(CHILD_OS)/usr/vacpp/lib  
-L$(CHILD_OS)/usr/vac/lib  
-L$(CHILD_OS)/usr/lib  
-lc -lC -lnsl -lpthread  
-F$(CHILD_OS)$(CUSTOM_CONFIG_FILE_LOCATION)

Cuando intento vincular el código, consigo varios símbolos no definidos: .setsockopt (int, int, int, const void *, unsigned long), .socket (int, int, int), .Connect (int, const * sockaddr, unsigned long), etc.

he descubierto que los símbolos que faltan son de la norma biblioteca c, libc.a. Al levantar la vista los símbolos con nm para la libc.a que está siendo recogido, en realidad existen los símbolos. Supongo que podría haber un problema con el C ++ no poder leer los objetos de C, pero estoy realmente fotografías en la oscuridad.

¿Fue útil?

Solución

Sonido que podría ser un problema mangling C nombre ++.

Ejecutar nm en el objeto de archivos para averiguar los símbolos que ellos están buscando. A continuación, compare los nombres exactos en contra de las bibliotecas.

A continuación, comprobar los comandos de compilación, para asegurarse de que la versión correcta de los archivos de cabecera está siendo incluido - tal vez es que incluye la copia del sistema operativo de los padres por error

Otros consejos

Me fue finalmente capaz de evitar esto. Parece que yo estaba usando el compilador de C ++ para archivos .c. Usando el compilador xlc en lugar del compilador para C xlC archivos de fijar este problema.

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