No puedo compilar x64 LD_PRELOAD usando x86 g ++
Frecuentes
Visto 417 veces
0
¿Qué tiene de malo mi comando? Quiero compilar x64 ld_preload en x86 g++, comando:
g++ -fPIC -m64 -shared -Wl,-soname,test.so -ldl -o test.so test.cpp
error
En archivo incluido desde /usr/include/c++/4.4/bits/stl_tree.h:62, desde /usr/include/c++/4.4/set:60, desde test.cpp:17: /usr/include/c++/4.4 /bits/stl_algobase.h:60: error fatal: bits/c++config.h: no finalizó la compilación de dicho archivo o directorio. hacer: * [prueba.así] Error 1
Prueba de 17 líneas.cpp
#include <set>
Paquete g++-multilib instalado.
upd
Búsqueda de archivos:
#include <...> search starts here:
/usr/include/c++/4.4
/usr/include/c++/4.4/backward
/usr/local/include
/usr/lib/gcc/i686-linux-gnu/4.4.5/include
/usr/lib/gcc/i686-linux-gnu/4.4.5/include-fixed
/usr/include/x86_64-linux-gnu
/usr/include
¡Gracias!
1 Respuestas
1
El archivo bits/c++config.h
en la biblioteca GNU C++ depende de la arquitectura.
La versión de 32 bits está en
/usr/include/c++/4.4/i486-linux-gnu/bits/c++config.h
o similar dependiendo de la distribución.
En la plataforma de 32 bits, la versión de 64 bits está en
/usr/include/c++/4.4/i486-linux-gnu/64/bits/c++config.h
Editar
Para verificar en qué directorios se busca, escriba:
$ g++ -m64 -c -v test.cpp
Debería informar algo como
Using built-in specs.
Target: i486-linux-gnu
...
#include <...> search starts here:
/usr/include/c++/4.4
/usr/include/c++/4.4/i486-linux-gnu/64
/usr/include/c++/4.4/backward
/usr/local/include
/usr/lib/gcc/i486-linux-gnu/4.4.1/include
/usr/lib/gcc/i486-linux-gnu/4.4.1/include-fixed
/usr/include/x86_64-linux-gnu
/usr/include
Necesitas comprobar si
/usr/include/c++/4.4/i486-linux-gnu/64
está en la lista.
Compruebe también que el archivo
/usr/include/c++/4.4/i486-linux-gnu/64/bits/c++config.h
existe.
Respondido el 12 de junio de 12 a las 19:06
No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas c++ compilation g++ or haz tu propia pregunta.
No hay ningún directorio x86_64-linux-gnu, solo i486-linux-gnu e i686-linux-gnu. ¿Cómo puedo agregarlo con -I? - Robert
¿En qué directorio se debe buscar y qué archivo debe estar allí? Confundí una oferta... - Robert
@Robert ¿Llegas más lejos cuando corres?
g++ -fPIC -m64 -shared -Wl,-soname,test.so -ldl -I/usr/include/c++/i?86-linux-gnu/64 -o test.so test.cpp
? - Dmitri Chubárov