2015-03-10 32 views
10

Bir Zynq tahtası (ARM mimarisi) için çapraz derleme üzerinden bir C uygulama oluşturmak çalışıyorum. ARM arşivinden bahsetmeden yazdığımda, dizüstü bilgisayarımda iyi çalışıyor. Ama makefile dosyasını en kısa sürede, bir hata söyleyerek olsun:önemli hata: sqlite3.h: Böyle bir dosya ya da dizin

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 

Makefile şöyle görünür: Neyi yanlış yapıyorum

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) 

? Alabileceğim herhangi bir yardım için teşekkürler.

cevap

2

Kesin olarak söylemek yeterli bilgi vermeyin: sqlite3.h dosyanın gerçekten dosya sistemi üzerinde nerede özellikle sen söyleme. Ancak, ben şüpheli gösteriyor dayalı şuna, INCLUDES değişkeni değiştirmek gerekir:

INCLUDES = lib/sqlite 

(veya başka kodunuzu #include değiştirmek #include "sqlite/sqlite3.h" olmak). Bu, başlık dosyasının sqlite3.c kaynak dosyasıyla aynı dizinde olduğunu varsayar. Bunun kötü/kafa karıştırıcı uygulama olduğunu

Not. Sen INCLUDES değişkeninde -I bayrağı koyarak edilmelidir:

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

INCLUDES onlar bu değişkende birden fazla dizin ekleyebilir inanacak birine yol açabilir çoğul olmakla bunu bırakırsanız bunu var, bu irade garip derleyici hatalara neden:

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

ikinci dizin -I seçeneği yok nasıl not ... bayraklarını -Ilib/sqlite another/dir ekleyecektir.

Kongre tarafından size CPPFLAGS (C önişlemci bayrakları) değil, INCLUDES kullanıyor olmalıdır Tabii

, ama ... :)

+0

teşekkürler! Az önce "sqlite/sqlite3.h" ifadesini kullandım ve şimdi çalışıyor! :) – user2263752

+4

Merhaba Paylaşım için teşekkürler. Benim durumumda, “apt-get install libsqlite3-dev” işlevini çalıştırdım. (Debian Wheezy). HTH Birisi – r3x

+1

@julianromera, öneriniz benim için de çalıştı. Bence cevabın doğru olanı. Cevap olarak yazmalısın. Orijinal yazarın sorun benim öneri tarafından düzeltildi yana –

47

Ben bu konunun

$ sudo apt-get install libsqlite3-dev 

(debian hırıltılı ile sabit var)

HTH Birisi