I'm trying to build a C application through cross compiling for a Zynq board (ARM architecture). When I type make without mentioning the ARM arch, it works fine on my laptop. But as soon as I modify the Makefile, I get an error saying:
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
The Makefile looks like this:
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)
What am I doing wrong? Thanks for any help I can get.
I got this issue fixed with
(debian wheezy)
HTH Someone
You don't provide enough information to say for sure: in particular, you don't say where the
sqlite3.h
file actually is on your filesystem. However, based on what you do show I suspect you need to change theINCLUDES
variable, to this:(or else change the
#include
in your code to be#include "sqlite/sqlite3.h"
). This is assuming that the header file is in the same directory as thesqlite3.c
source file.Note that this is a bad/confusing implementation. You should be putting the
-I
flag in theINCLUDES
variable:INCLUDES
is plural which may lead someone to believe they could add multiple directories in that variable, but if you leave it the way you have it, this will cause strange compiler errors:will add the flags
-Ilib/sqlite another/dir
... note how the second directory doesn't have a-I
option.Of course, by convention you should be using
CPPFLAGS
(for C preprocessor flags), notINCLUDES
, but... :)