2014-05-22 3 views
17

के लिए अनिर्धारित संदर्भ मैं मेकफ़ाइल का उपयोग करके कुछ परीक्षण सी कोड को संकलित करने की कोशिश कर रहा हूं। main.c फ़ाइल दो हेडर है:सरल मेकफ़ाइल के साथ समस्या: प्रतीक 'cos @@ GLIBC_2.2.5'

#include "circle_buffer.h" 
#include "window.h" 

और जब मैं निम्नलिखित Makefile निष्पादित

# compiler 
CC=gcc 

# compiler flags: 
# -g adds debugging information to the executable file 
# -Wall turns on most, but not all, compiler warnings 
CFLAGS= 

# include path 
INCLUDES = 

# library path and names  
LIBS=-L/usr/lib/x86_64-linux-gnu -lsndfile 

MAIN = test 

$(MAIN): main.o circle_buffer.o window.o 
    $(CC) main.o circle_buffer.o window.o -o $(MAIN) $(LIBS) 

main.o: main.c circle_buffer.h window.h 
    $(CC) -c main.c $(INCLUDES) 

circle_buffer.o: circle_buffer.c circle_buffer.h 
    $(CC) -c circle_buffer.c $(INCLUDES) 

window.o: window.h 
    $(CC) -c window.c $(INCLUDES) 

.PHONY: clean 

clean: 
    rm -rf *o $(MAIN) 

मैं

[email protected]:~/source$ make 
gcc -c main.c 
gcc -c circle_buffer.c 
gcc -c window.c 
gcc main.o circle_buffer.o window.o -o test -L/usr/lib/x86_64-linux-gnu -lsndfile 
/usr/bin/ld: window.o: undefined reference to symbol '[email protected]@GLIBC_2.2.5' 
//lib/x86_64-linux-gnu/libm.so.6: error adding symbols: DSO missing from command line 
collect2: error: ld returned 1 exit status 
make: *** [test] Error 1 

मिलता है मैं main.c से #include "window.h" निकालने के लिए, और सभी के लिए संदर्भ मेकफ़ाइल में window.o/h/c, यह काम करता है।

मुझे क्या याद आ रही है? मैं नियम

target: dependencies 
[tab] system command 

कहां तोड़ रहा हूं?

उत्तर

29

गणित पुस्तकालय की तरह लगता है, libm को जोड़ने की आवश्यकता है। लिंकिंग चरण में -lm जोड़ें।

LIBS=-L/usr/lib/x86_64-linux-gnu -lsndfile -lm 
-3

इसके अलावा जीसीसी संकलक के बजाय ++ सी उपयोग करने के लिए प्रयास करें। इसमें डिफ़ॉल्ट रूप से इस लाइब्रेरी को शामिल किया गया है।

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