تجنب ربط libstdc ++
سؤال
وأنا أعمل على مشروع المضمنة التي تستخدم حاليا C في لينكس وuClibc. نحن مهتمون في نقله إلى C ++، ولكن أنا لا أريد النفقات العامة المرتبطة ربط في libstdc ++. انطباعي هو أن هذا من الممكن توفير نحن لا نستخدم أي شيء من STL، مثل iostream أو النواقل.
وكيف يمكن للمرء ز المباشر ++ لتجميع دون ربط libstdc ++؟
المحلول
وعند تجميع واستخدام g++ -c
لتجميع فقط. ثم لربط، استخدم ld
بدلا من g++
. هذا استدعاء رابط مباشرة، الأمر الذي يتطلب منك أن يعين كل المكتبات على سطر الأوامر (بما في ذلك LIBC وlibcrt)، ولكن.
وبدلا من ذلك، إذا كنت تستخدم ز ++ ك "أفضل ج"، قد تكون قادرا على استخدام gcc
للخطوة الارتباط النهائية (التي ستشمل LIBC تلقائيا)
نصائح أخرى
هل يمكن استخدام
g++ -nodefaultlibs -fno-exceptions a.cc
ولكن لا يمكنك استخدام جميع ج ++ يتميز بهذه الطريقة ...
لمن أجل اكتمال وصحة:
g++ -c -fno-exceptions a.cpp
gcc a.o -o a