Compilar C++ en AMD 64 y Ubuntu

FrioneL

Buenas, vuelvo con mas problemas:

el caso es que no puedo compilar asociando objetos, y al parecer, es por culpa del AMD 64 que tengo. Me pone un error tal que asi:

/usr/bin/ld: i386 architecture of input file `Impl_Arbol.o' is incompatible with i386:x86-64 output

He estado buscando algo de info, pero la mayoria de las webs estan en ingles o hablan de forma muy tecnica, y yo, como novato en linux, no me entero de nada u_ú

A ver si podeis echarme un cable, me urge bastante

Gracias!

erdanblo

Tiene pinta que intentas compilar una libreria de x86 en un entorno x86_64, o al contrario.

FrioneL

Por eso digo, que al tener amd64 me esta creando conflictos con lo que sea y no puedo compilar, y obviamente me esta fastidiando tela.

No sabeis alguna solucion? Instalar las librerias de 32 bits o lo que sea. No entiendo mucho y con lo que he leido no me he empanado de casi nada u_u

gracias

erdanblo

Ponte el Ubuntu de 32 bits :S

Get

ese es el problema, q tas intentando compilar algo de 32bits en un entorno 64, se puede, pero deberias mirar el Makefile32 si existe y renombrarlo a Makefile a secas.

FrioneL

#5 si me explicas como te lo agradeceria :_)

Get

aver explicame tu un poco mas antes,

que estas intentando compilar?
estas compilando desde las sources ? (tar.gz)
ponme la salida del error aqui pegada

y veremos aver q te ocurre.

FrioneL

#7 Estoy intentando compilar programas de c++.

Al introducir en la terminal esto:

g++ -o altura_arb.exe altura_arb.o Impl_Arbol.o

Me pone un error tal que asi:

spoiler

Saludos

PD: Me han recomendado utilizar esto http://www.intel.com/support/mt/sp/performancetools/c/linux/sb/cs-028728.htm
Pero no tengo ni idea de como utilizarlo y preferiria quedarme con este compilador... a ver si puedes ayudarme!

erdanblo

Yo creo que con la información que te hemos dado, la que viene en el link de Intel, y si "ya compilas cosas", debería de ser capaz por tí mismo de cual es la mejor solución.

  1. Usas el compilador ese de Intel
  2. Instalas un sistema operativo de 32 bits.
  3. Crea una máquina virtual con un SO de 32 bits y compila con él.

Espero que no estes estudiando informática.

dr_Rouman

¿No te pueden dar los códigos de esos .o para compilarlos tú? Es muy raro que compilándolos tú bajo x64 diga eso

B

Pregunto, que no lo se.

Y con tener las librerias de 32bits que necesitas + el compilador 32bits (cross-compiler en este caso) no te valdria?

Eso si, luego el ejecutable, es posible que no lo puedas ejecutar en tu maquina xD. Tan raro es lo que quieres hacer que no hay libreria para 64 bits?

pd: vale, lo que he puesto es basicamente el enlance que has posteado.

pd2: el error lo que dice es que ese objeto ha sido compilado en 32bits, (es tuyo?). Pq si tienes los fuentes, los compilas desde tu maquina y arreando en 64bits. (lo que dice #10)

maRc

O te montas un entorno 32 bits con chroot.

B

Usa la version 32 bits de gcc, no puedes compilar en 64 usando objetos precompilados en 32 bits. Para ejecutar aplicaciones 32 bits en debian(ubuntu) apt-get install ia32-libs. O create una jaula de 32 bits como te dicen.

FrioneL

#9 Que yo sepa, no hay ninguna asignatura en Ingenieria Informatica en la que te enseñen a usar linux, nada mas que los 3 comandos basicos para compilar. Asi que no es mi culpa que no sepa usar un SO tan SENCILLO.

Y puedes decir, pues hay que buscarse la vida: y si, es exactamente lo que estoy haciendo asi que menos prepotencia, pues nadie nace sabiendo.

#13 creo haber intentado lo de instalar las librerias de 32 bits. Volvere a intentarlo y sino habra que mirar lo del entorno virtual u__ú

Gracias ;)

EDIT: Pues parece que las librerias de 32 bits ya las tenia instaladas :? Hay que poner algo para poder utilizarlas ?

erdanblo

Creo que te equivocaste de carrera, suerte ;)

Te lo dice un no-ingeniero.

Pd. ¿no tenéis arquitectura del hardware o alguna cosa rara de esas que explique el funcionamiento de las cpus?

dr_Rouman

#15 Yo la tuve en 2º, y al final

Get

bueno, finalmente hemos conseguido meterle un linux en virtualbox, con internet, guestadditions y demas, con init 3 en modo consola, aunq todo le funciona bien inclusive las X con kde y en español.
y lo mejor de todo, le compila todo sin problemas.

y el sistema linux? Slackware 12.1

asi que esta demostrado que cualquiera puede instalarlarla... eso si, con el manualillo a mano, y preguntando en nuestro canal de irc, al equipo de Winsucks.org ^^ que taba ahi a pie de cañon para las dudas basicas y la post instalacion.

FrioneL

#15 no te voy a seguir el juego con tus impertinencias, porque no entiendo que pretendes con ello.

Lo que esta claro es lo que ya he citado en mi post anterior: nadie nace sabiendo y mucho menos, conociendo los comandos y el manejo de un sistema operativo.

Y no, aun no he dado ninguna asignatura que me ayude a comprender Linux, puesto que estoy terminando el primer año.


Y finalmente solucione el problema creando una maquina virtual con el virtualbox e instalando el slackware 32bits en ella, tal y como ha dicho get, gracias a el y a la comunidad de winsucks :)

Muchas gracias de nuevo :)

Saludos

erdanblo

Ademas de no entender la diferencia entre una arquitectura 32 y 64 bits, creo que comprensión lectora nula, serás de ciencias. Yo es que hice letras, asi me va :\

B

#18

Esa solucion es matar una mosca a cañonazos xD

FrioneL

#19 Aburres

#20 estaba cansado ya de probar cosas y ademas ubuntu no me iba muy bien.
Lo tenia ademas instalado con el wubi este x_x

Y como get me estuvo guiando y aconsejando, pues opte por ponerme slackware.

Get

en virtual o no, ahora tiene un sistema completo, sin instlaar nada de terceros ni nada de nada extra, listo para compilar con todas las dependencias resueltas. cosa q con giño ubuntu giñogiño* no.

osease
cualquier distro seria = 1
*buntu = 0

Chispas-Elek

#22

En resumen

Que te encanta Ubuntu y odias Slackware.

B

Hombre, hay que ser un poco melon para tener dependencias no resueltas a la hora de compilar, eso quiere decir que no sabes ni lo que estas escribiendo en el fuente xD

Y hasta donde yo se (que tampoco es mucho xD), en cualquier distro de Linux para compilar solo te hace falta el compilador y la consola. Y si vas a usar librerias, te da igual en que distro estes, que las tienes que instalar igualmente.... ¬¬

Get

no me entiendes, yo creo. en *buntu, por defecto. tas limitado a usar el sistema tal cual esta, si quieres hacer cosas q se salgan de ahi, ya tienes de marranear mucho.

en cambio con slackware, no, lo instalas, lo configuras a tu gusto y si quieres compilar ya lo trae todo.

B

Sigo sin entenderte xD. Que conste que yo tp soy muy deboto de Ubuntu, entre otras razones por esa misma que citas.

Pero para compilar? Me bajo el g++, me bajo las librerias que vaya a usar externas a mi fuente, me hago un Makefile y ya ?¿ xD

No se que complicacion le ves tu a programar en Linux, sea la distribucion que sea, esos son los pasos sin más, no hay que hacer ningún magreo, incluso en Ubuntu.

erdanblo

#26 Además hay un paquete que viene de Debian para eso, build-essentials.

Asi que yo tampoco lo entiendo, pero como eres un poco taliban (guiño, guiño) Get, vamos a dejarlo así. :P

Usuarios habituales