G ++ advertencia: construido para el formato de archivo no compatible que no es la arquitectura está ligada
-
11-10-2019 - |
Pregunta
Cuando intento compilar mi proyecto (con la g++ *.hpp *.cpp 2> log.txt
línea de comandos), que es lo que me pasa:
log.txt
:
ld: warning: in configfile.hpp, file was built for unsupported file format which is not the architecture being linked (x86_64)
ld: warning: in erase.hpp, file was built for unsupported file format which is not the architecture being linked (x86_64)
ld: warning: in filehandler.hpp, file was built for unsupported file format which is not the architecture being linked (x86_64)
ld: warning: in insert.hpp, file was built for unsupported file format which is not the architecture being linked (x86_64)
ld: warning: in operation.hpp, file was built for unsupported file format which is not the architecture being linked (x86_64)
¿Alguna idea de por qué ocurre esto? Estoy en OSX 10.6 (utilizando las últimas herramientas de desarrollo)
Solución
Esta compilación de archivos de cabecera (.hpp), que no se debe hacer todavía. Sólo los archivos de origen de compilación (.cpp)
En lugar de compilar todos los archivos .cpp, compilar ellos uno a la vez y luego enlazar adecuadamente.
g++ -c x.cpp
g++ -c y.cpp
g++ -c z.cpp
g++ -o tst x.o y.o z.o
Tenga en cuenta que sólo una de sus archivos .cpp puede tener una función main () -. De lo contrario el sistema operativo no sabe dónde está el punto de entrada es
Otros consejos
No es dueño de un Mac por lo que estoy un poco dándole la versión para Linux de qué hacer cuando esto sucede.
Busque una versión de gcc y multilib recompilación con el -m32 interruptor
g++ *.hpp *.cpp -m32
Probar. Se puede compilar los archivos de cabecera con gcc para encabezados precompilados producen.
El parámetro g ++ -arch i386
debe hacer el truco para usted:
g++ *.hpp *.cpp -m32 -arch i386
Es correcto?