ربط رمز C++ مع 'مجلس التعاون الخليجي' (بدون g++)
سؤال
مرحبا جميعا:سؤال سريع:أنا في حالة حيث أنه سيكون من المفيد إنشاء بلدي C + + القابلة للتنفيذ فقط باستخدام 'مجلس التعاون الخليجي' (بدون g++).السبب في ذلك هو أن لدي تقديم قانون آلية تقديم الخادم التي لا تعترف 'g++' (أو 'c', لهذه المسألة) الأمر.
في بلدي التجارب ، بينما أنا تجميع دول مجلس التعاون الخليجي يعمل بشكل جيد.المشكلة هي عند محاولة ربط إنشاء ملفات الكائن يحصل عابث.الآن بناء على ما فهمته من دول مجلس التعاون الخليجي الصفحة رجل (قد يكون بعيدا ، لذلك قل لي إذا أنا) ، g++ هي في الأساس دول مجلس التعاون الخليجي ، ولكن الروابط C++ المكتبة.
إذا كان هذا صحيحا, كيف يمكنني (إن أمكن) صراحة ربط مكتبة C دون باستخدام g++ (c أو++) القيادة ؟
تحرير: انا إضافة makefile لتوضيح المشكلة بشكل أفضل:
COMPILER = gcc
CFLAGS = -Wall -g -x c++
# MODULE COMPILATION
model: modules/model.h modules/sources/model.cpp
$(COMPILER) $(CFLAGS) -c modules/sources/model.cpp -o obj/model.o
algorithms: modules/algorithms.h modules/sources/algorithms.cpp
$(COMPILER) $(CFLAGS) -c modules/sources/algorithms.cpp -o obj/algorithms.o
io: modules/io.h modules/sources/io.cpp
$(COMPILER) $(CFLAGS) -c modules/sources/io.cpp -o obj/io.o
stopwatch: modules/stopwatch.h modules/sources/stopwatch.cpp
$(COMPILER) $(CFLAGS) -c modules/sources/stopwatch.cpp -o obj/stopwatch.o
# EXECUTABLE GENERATION
exe: model algorithms io stopwatch
$(COMPILER) $(CFLAGS) main.cpp obj/model.o obj/algorithms.o obj/io.o obj/stopwatch.o -o bin/process
# DEFAULT TEST CASE
run: exe
./bin/process -i data/nasa_small.log -a data/nasa_small.access -s data/nasa_small.stack
# CLEANING ROUTINE
clean:
rm -f obj/*
المحلول
يمكنك ربط معيار c++ المكتبة مع -l
العلم أن دول مجلس التعاون الخليجي:
gcc cplusplus.o -lstdc++ -o myexe
نصائح أخرى
إذا قمت بتشغيل g++ مع "v" الخيار سوف تظهر ما الأوامر و الخيارات التي يستخدمها.يجب أن تكون قادرة على استنتاج الصحيحة دول مجلس التعاون الخليجي سطر الأوامر من هناك.