Estoy tratando de construir una aplicación de C a través de la compilación cruzada para una Zynq de la junta (arquitectura ARM). Cuando yo escriba hacer, sin mencionar el BRAZO de arco, funciona bien en mi portátil. Pero tan pronto como puedo modificar el archivo Makefile, me sale un error que dice:

main.c:20:43: fatal error: sqlite3.h: No such file or directory
 #include "sqlite3.h" //library for sqlite3
                                           ^
compilation terminated.
make: *** [ws_temp_server] Error 1

El Makefile se parece a esto:

SOURCE=lib/base64_enc.c lib/websocket.c lib/sha1.c lib/sqlite/sqlite3.c main.c 
CC = arm-xilinx-linux-gnueabi-gcc
LDFLAGS=-lpthread -ldl
INCLUDES=lib/
PROGRAM=ws_temp_server

all: $(PROGRAM)

$(PROGRAM): $(SOURCE)
    $(CC) $(SOURCE) -I$(INCLUDES) -o$(PROGRAM) $(LDFLAGS)
clean:
    rm $(PROGRAM)

¿Qué estoy haciendo mal? Gracias por cualquier ayuda que me puedan dar.

OriginalEl autor user2263752 | 2015-03-10

2 Comentarios

  1. 1

    De que no proporcionan información suficiente para decir con certeza: en particular, no dices donde el sqlite3.h archivo en realidad es en su sistema de ficheros. Sin embargo, según lo que muestran sospecho que usted necesita para cambiar el INCLUDES variable, para esto:

    INCLUDES = lib/sqlite

    (o por el contrario cambiar el #include en su código para ser #include "sqlite/sqlite3.h"). Esto es suponiendo que el archivo de encabezado que se encuentra en el mismo directorio que el sqlite3.c archivo de origen.

    Tenga en cuenta que este es un mal/confuso aplicación. Usted debe poner el -I bandera en el INCLUDES variable:

    INCLUDES = -Ilib/sqlite
        ...
    $(PROGRAM): $(SOURCE)
            $(CC) $(SOURCE) $(INCLUDES) -o$(PROGRAM) $(LDFLAGS)

    INCLUDES es plural, lo cual puede llevar a alguien a creer que podría añadir varios directorios en esa variable, pero si usted sale de la manera que lo tienen, esto va a causar extraños errores del compilador:

    INCLUDES = lib/sqlite another/dir
        ...
    $(PROGRAM): $(SOURCE)
            $(CC) $(SOURCE) -I$(INCLUDES) -o$(PROGRAM) $(LDFLAGS)

    añadir las banderas -Ilib/sqlite another/dir… nota cómo el segundo directorio no tiene un -I opción.

    De curso, por convención, debe usar CPPFLAGS (para el preprocesador de C banderas), no INCLUDES, pero… 🙂

    Gracias! Acabo de utilizar #include «sqlite/sqlite3.h» y funciona ahora! 🙂
    Hola, gracias por compartir. En mi caso, lo tengo fijo en ejecución apt-get install libsqlite3-dev. (debian wheezy). HTH Alguien
    su sugerencia trabajó también para mí. Creo que tu respuesta es la correcta. Usted debe escribirlo como una respuesta.
    Ya que el autor original del problema se corrigió por mi sugerencia, este es claramente el derecho de respuesta. El autor utiliza una instalación local de sqlite como puede verse a partir de la información en la pregunta, por lo que el uso de apt-get para instalar el dev kit no ser lo que ellos querían. Es bueno que los demás tienen este problema se corrigió por instalar el dev kit a través de apt-get, pero que es un problema diferente y requiere una solución diferente.

    OriginalEl autor MadScientist

  2. 84

    Tengo este problema fijo con

    $ sudo apt-get install libsqlite3-dev

    (debian wheezy)

    HTH Alguien

    Impresionante! Su sugerencia solucionado mi problema en 2 segundos!!! Gracias!
    En mi caso (CentOS Linux 7), el comando para solucionar este problema fue un poco diferente: sudo yum install libsqlite3x-devel.
    él trabajó como un encanto 🙂 super fácil solución !!!!

    OriginalEl autor xyz

Dejar respuesta

Please enter your comment!
Please enter your name here