2015-03-10 11 views
10

मैं एक Zynq बोर्ड (एआरएम आर्किटेक्चर) के लिए क्रॉस संकलन के माध्यम से एक सी अनुप्रयोग बनाने की कोशिश कर रहा हूं। जब मैं एआरएम आर्क का उल्लेख किए बिना टाइप करता हूं, तो यह मेरे लैपटॉप पर ठीक काम करता है। लेकिन मैं Makefile संशोधित जैसे ही, मैं एक त्रुटि कह मिलती है:घातक त्रुटि: sqlite3.h: ऐसी कोई फ़ाइल या निर्देशिका

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 इस तरह दिखता है:

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) 

क्या मैं गलत कर रहा हूँ? मुझे प्राप्त होने वाली किसी भी मदद के लिए धन्यवाद।

उत्तर

2

आप निश्चित रूप से कहने के लिए पर्याप्त जानकारी प्रदान नहीं करते हैं: विशेष रूप से, आप यह नहीं कहते कि sqlite3.h फ़ाइल वास्तव में आपके फाइल सिस्टम पर है। (#include "sqlite/sqlite3.h" होने के लिए या फिर अपने कोड में #include बदल)

INCLUDES = lib/sqlite 

: लेकिन, आप क्या दिखाते हैं मुझे लगता है के आधार पर आप इस के लिए INCLUDES चर बदलने के लिए, की जरूरत है। यह माना जा रहा है कि हेडर फ़ाइल sqlite3.c स्रोत फ़ाइल के समान निर्देशिका में है।

ध्यान दें कि यह एक बुरा/भ्रमित कार्यान्वयन है। आप INCLUDES चर में -I झंडा डाल दिया जाना चाहिए:

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

INCLUDES बहुवचन कोई वे कहते हैं कि चर में एकाधिक निर्देशिका जोड़ सकता है पर विश्वास करने के लिए नेतृत्व कर सकते जो है, लेकिन अगर आप इसे जिस तरह से छोड़ तुम्हारे पास है, इस होगा अजीब संकलक त्रुटियों का कारण:

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

झंडे -Ilib/sqlite another/dir जोड़ देगा ... ध्यान दें कि दूसरी सूची एक -I विकल्प नहीं है।

बेशक

, प्रथा के अनुसार आप CPPFLAGS (के लिए सी पूर्वप्रक्रमक झंडे), नहीं INCLUDES का उपयोग करना चाहिए, लेकिन ... :)

+0

धन्यवाद! मैंने अभी # शामिल "sqlite/sqlite3.h" का उपयोग किया है और यह अब काम करता है! :) – user2263752

+4

साझा करने के लिए हाय धन्यवाद। मेरे मामले में, मुझे यह तय हो गया कि 'libtqlite3-dev'' इंस्टॉल करें। (डेबियन wheezy)। एचटीएच कोई – r3x

+1

@ जुलीयन्रोमेरा, आपके सुझाव ने भी मेरे लिए काम किया। मुझे लगता है कि आपका जवाब सही है। आपको इसे एक उत्तर के रूप में लिखना चाहिए। –

47

मैं इस मुद्दे के साथ

$ sudo apt-get install libsqlite3-dev 

(डेबियन खरखरा तय हो गया)

एचटीएच कोई

संबंधित मुद्दे