Linux - Compilacion

 
Vista:

Compilacion

Publicado por M4kZ (45 intervenciones) el 20/10/2001 05:17:07
En los programas en los que incluyo detect.h, parte de una libreria llamada libdetect para detectar hardware al compilar me da errores extraños, por ejemplo:
//detect.cpp
#include <stdio.h>
#include <detect.h>
main()
{
int cpu;
cpu = cpu_detect();
printf("%s, %s", cpu->vendor, cpu->model);
}
al compilarlo con:
gcc detect.cpp -o detect -ldetect
/usr/include/linux/genhd.h: In function `unsigned int ptype(unsigned char)':
/usr/include/linux/genhd.h:83: parse error before `}'
In file included from detect.cpp:1:
/usr/include/detect.h: At top level:
/usr/include/detect.h:709: parse error before `;'
/usr/include/detect.h:710: parse error before `;'
/usr/include/detect.h:711: parse error before `;'
¿por que sucede esto? ¿cual es la forma correcta en que se debe compilar?
Gracias.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Alejandro

Errores al compilar programa con librería libdetect y cabeceras conflictivas

Publicado por Alejandro (176 intervenciones) el 15/12/2023 23:39:39
Parece que hay un problema con las inclusiones en tu código y la forma en que estás compilando. Aquí hay algunos puntos a considerar:

1. Orden de inclusiones:
- Asegúrate de incluir las cabeceras estándar antes de las cabeceras de libdetect. En tu código, `<stdio.h>` se incluye antes de `<detect.h>`, lo cual es correcto.

2. Usa C++ en lugar de C:
- Dado que estás escribiendo en C++, asegúrate de guardar tu archivo con la extensión `.cpp` y compilarlo con `g++` en lugar de `gcc`. El código C++ no siempre se compila correctamente con el compilador de C.

1
g++ detect.cpp -o detect -ldetect

3. Problemas con `ptype` en `linux/genhd.h`:
- Los errores relacionados con `ptype` en `linux/genhd.h` pueden estar indicando un problema de incompatibilidad entre las cabeceras de tu sistema y la librería `libdetect`. Puedes intentar incluir `detect.h` antes de cualquier otra cabecera para evitar conflictos.

1
2
3
4
5
6
7
8
9
#include <detect.h>
#include <stdio.h>
 
int main() {
    int cpu;
    cpu = cpu_detect();
    printf("%s, %s", cpu->vendor, cpu->model);
    return 0;
}

4. Compatibilidad de la librería:
- Asegúrate de que la versión de la librería `libdetect` que estás utilizando sea compatible con tu sistema y con el estándar de C++ que estás utilizando.

5. Posible falta de declaración:
- Verifica si `unsigned int ptype(unsigned char);` está debidamente declarado en alguna cabecera que `detect.h` dependa.

Ajustando estos puntos, deberías poder compilar tu programa correctamente. Si los problemas persisten, verifica la documentación de la librería `libdetect` o consulta la comunidad de soporte de dicha librería para obtener ayuda específica sobre su uso y posibles problemas de compilación. ¡Buena suerte!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar