2013-11-04 4 views
8

जब मैं का उपयोग कर कोड संकलन जीएनयू मैं जैसे कई चेतावनियों प्राप्त करें)। क्या कोई मुझे समस्या की ओर इंगित कर सकता है?बजना: चेतावनी: -l *:</p> <pre><code>clang: warning: -lGui: 'linker' input unused </code></pre> <p>ऐसा इसलिए है क्योंकि मैं कुछ मेरी Makefile (नीचे में में गड़बड़ कर दिया है: 'लिंकर' इनपुट अप्रयुक्त

CXX=g++ 
CC=g++ 
CXXFLAGS=-g -Wall -W -Wshadow -Wcast-qual -Wwrite-strings $(shell root-config --cflags --glibs) 
CPPFLAGS+=-MMD -MP 
LDFLAGS=-g $(shell root-config --ldflags) 
LDLIBS=$(shell root-config --libs) 

xSec_x: xSec_x.o xSec.o Analysis.o 
-include xSec_x.d xSec.d Analysis.d 

xSec.o: xSec.cpp xSec.h Analysis.h Analysis.cpp 

xSec_x.o: xSec_x.cpp xSec.h Analysis.h 

clean: 
    rm -f @rm -f $(PROGRAMS) *.o *.d 

उत्तर

9

यही संदेश का अर्थ है आप लिंकर झंडे से गुजर रहे हैं (जैसे -l जो एक पुस्तकालय में खींचने के लिए लिंकर बताता है) संकलक करने के लिए।

इसका मतलब है कि root-config --cflags --glibs चलाने का परिणाम लिंकर झंडे उत्पन्न कर रहा है, और वे CXXFLAGS में जा रहे हैं, जो संकलक को पास किया जा रहा है। मुझे नहीं पता कि root-config क्या है, लेकिन आपको इसकी कमांड लाइन की जांच करनी चाहिए और इसे ऐसे तरीके से बुलाएं जहां यह लिंकर झंडे उत्पन्न नहीं करता है। शायद --glibs विकल्प को हटाकर यह कर देगा।

अनुमानित समय आप वास्तव में तुम वहाँ $(shell ...) चलाने के लिए जा रहे हैं := का उपयोग किया जा करने के लिए इन झंडे चर देना चाहते हैं। यह किसी भी तरह से काम करेगा, लेकिन यदि आप = का उपयोग करते हैं तो शेल कमांड चलाएगा जब हर बार परिवर्तनीय फैलता है, जो प्रति संकलन एक बार होता है। यदि आप := का उपयोग करते हैं तो यह केवल एक बार चलाया जाएगा, जब मेकफ़ाइल पार्स किया जाता है।

+0

बढ़िया! इन युक्तियों के लिए धन्यवाद! – mareks

+1

डी ओह! मैं संकलक के लिए सभी लिंकर झंडे गुजर रहा था ... मेरी इच्छा है कि क्लैंग थोड़ा और वर्णनात्मक था। त्रुटि यह ध्वनि की तरह लगती है जैसे lib को अनदेखा किया गया था क्योंकि कोड ने कभी भी अपने प्रतीकों का उपयोग नहीं किया था। – Navin

2

मुझे यह वही त्रुटि मिली और कारण यह था कि मैं मेकफ़ाइल में cflags के लिए मेरे शामिल पथों के सामने -I जोड़ना भूल गया। उदाहरण के लिए:

CFLAGS += $(path)/dir/subdir/include  -> Got the above mentioned error. 
CFLAGS += -I$(path)/dir/subdir/include -> Fixed the issue. 
संबंधित मुद्दे