मैं जीएनयू का उपयोग कर रहा हूं एक सी/सी ++ परियोजना बनाने के लिए बनाएं जो कई लोग उपयोग करेंगे। मेकफ़ाइल सामान्य होने का प्रयास करता है क्योंकि इस प्रोजेक्ट में कई वैकल्पिक फ़ाइलें हैं और प्रत्येक उपयोगकर्ता उन फ़ाइलों को MATLAB इंटरफ़ेस के माध्यम से चुनता है जिन्हें बाद में कमांड लाइन तर्कों के माध्यम से मेकफ़ाइल प्रदान किया जाता है (लक्ष्य OPTS = 'XYZ' आदि ...)।जीएनयू जीसीसी कॉल के बाद "निरस्त जाल: 6" बनाएं हालांकि अकेले निष्पादित होने पर कॉल मान्य है
जब मैं मेकफ़ाइल का उपयोग करता हूं तो यह सही ऑब्जेक्ट निर्भरताओं को सही ढंग से पहचानता है, फिर उन वस्तुओं के लिए स्रोत पूर्वापेक्षाएँ ढूंढने और उन्हें बनाने के लिए आगे बढ़ता है। हालांकि, हर बार जब यह किसी ऑब्जेक्ट नियम को निष्पादित करने का प्रयास करता है तो मुझे जीसीसी कॉल के ठीक बाद "एपॉर्ट ट्रैप: 6" कहने में त्रुटि मिलती है।
gcc -g -D(the defines) -I(all the includes) -c -o obj1/xyz.o ../common/xyz.c
make: *** [obj1/xyz.o] Abort trap: 6
लेकिन अगर मुझे लगता है कि सटीक एक ही जीसीसी फोन लेने और (कमांड लाइन पर इसे चलाने के बस:
Makefile के रूप में
vpath %.c $(PATH) $(OBJ_DIR)
# Pick compilers
CC1=g++
CC2=gcc
LNK=g++
# Assign variables for c/cpp implicit rules
CXXFLAGS= $(CCFLAGS) $(DEFINES) $(INCLUDES)
CFLAGS = $(CCFLAGS) $(DEFINES) $(INCLUDES)
# Assign various user-defined values
OUTPUT = -o $(USER_LIB)
C_OBJECTS = $(patsubst %.c,$(OBJ_DIR)/%.o,$(C_SOURCES))
CPP_OBJECTS = $(patsubst %.cpp,$(OBJ_DIR)/%.o,$(CPP_SOURCES))
OBJECTS = $(C_OBJECTS) $(CPP_OBJECTS) $(SIM_OBJECTS)
# User Library Dependencies and Compilation Rules
$(USER_LIB): $(OBJECTS)
$(LNK) $(LINKERFLAGS) $(CCFLAGS) $(DEFINES) $(INCLUDES) $(OUTPUT) $(OBJECTS)
$(OBJ_DIR)/%.o: %.c
$(CC2) $(CFLAGS) -c -o [email protected] $<
और मैं क्या मिल का एक उदाहरण है इस प्रकार है कॉपी और पेस्ट करें) फ़ाइल सही ढंग से संकलित है और ऑब्जेक्ट फ़ाइल obj1 फ़ोल्डर में रखी गई है।
मैंने यह देखने के लिए 'मेक-डी' देखने की कोशिश की कि मुझे कुछ भी मिल सकता है या नहीं। चूंकि यह आउटपुट पागल लंबा है, इसके बारे में निम्नलिखित है:
... output truncated for brevity ...
gcc -g -D(the defines) -I(all the includes) -c -o obj1/xyz.o ../common/xyz.c
Putting child 0x104f13cc0 (obj1/xyz.o) PID 24557 on the chain.
Live child 0x104f13cc0 (obj1/xyz.o) PID 24557
Reaping losing child 0x104f13cc0 PID 24557
make: *** [obj1/xyz.o] Abort trap: 6
Removing child 0x104f13cc0 PID 24557 from chain.
आउटपुट समाप्त होने पर बिंदु। मैंने पहली त्रुटि के बाद क्या होता है यह देखने के लिए मेक-रन चलाने का भी प्रयास किया। प्रत्येक एकल स्रोत फ़ाइल एक ही परिणाम उत्पन्न करती है। दोबारा, प्रत्येक स्रोत फ़ाइल सटीक कॉल के साथ संकलित है जो स्वतंत्र रूप से किए जाने पर उपयोग करती है।
मैं इस बिंदु पर पूरी तरह से इस पर खो गया हूं और इस संदर्भ में "निरपेक्ष जाल: 6" का अर्थ क्या है, इस बारे में बहुत कम जानकारी है।
मैं मैक ओएसएक्स 10.7 चला रहा हूं जिसमें एक्सकोड के माध्यम से जीसीसी-4.2 स्थापित है।
मुझे एहसास है कि वर्तमान में .cpp फ़ाइलों के लिए कोई नियम नहीं है, मेरे पास वर्तमान में संकलित करने के लिए कोई भी .cpp स्रोत फ़ाइलें नहीं हैं, हालांकि भविष्य में शायद यही कारण है कि इसके लिए समर्थन संरचना है दूर।
किसी भी व्यक्ति के लिए अग्रिम धन्यवाद जो मेरी मदद कर सकता है।
संपादित करें: "मेक-डी" आउटपुट से एक कार्यवाही लाइन जोड़ा गया। संपादित करें: जोड़ा गया समाधान (उत्तर में स्थानांतरित)
फोन मुझे लगता है कि जैसे एक त्रुटि में पहले कभी नहीं आई है। क्या हम निश्चित रूप से जानते हैं कि त्रुटि 'मेक' से आ रही है? यही है, क्या हम निश्चित हैं कि 'मेक' वास्तव में जीसीसी द्वारा उत्पन्न किए गए त्रुटि के साथ गुजर रहा है या सबहेल द्वारा? –
हाय! मैं इसकी जांच कैसे करूं? मुझे पता है कि जब मैं कमांड लाइन से कॉल करता हूं तो जीसीसी अपने आप में कोई त्रुटि नहीं पैदा करता है। मुझे नहीं पता कि यह जांचने के लिए कि क्या इसे सबशेल से रखा गया है या नहीं। –
I Googled 'ओएस एक्स "gnu" "निरस्त जाल बनाते हैं: 6" ', और एक्सकोड, ओएस उन्नयन इत्यादि से संबंधित कई चीजें मिलीं। क्या आपको' क्लीन बनाने 'से शुरू होने पर भी वही त्रुटि मिलती है? (मान लें कि आपके पास "साफ" नामक एक नकली लक्ष्य है।) –