Избегайте ссылок на libstdc ++ - PullRequest
       32

Избегайте ссылок на libstdc ++

15 голосов
/ 31 октября 2009

Я работаю над встроенным проектом, который в настоящее время использует C в Linux и uClibc. Мы заинтересованы в переносе его на C ++, но я не хочу, чтобы накладные расходы были связаны со ссылками в libstdc ++. У меня сложилось впечатление, что это возможно при условии, что мы не используем ничего из STL, например, iostream или vector.

Как заставить g ++ компилировать без ссылки на libstdc ++?

Ответы [ 3 ]

12 голосов
/ 31 октября 2009

Когда вы компилируете, используйте g++ -c только для компиляции. Затем для связывания используйте ld вместо g++. Это напрямую вызывает компоновщик, который требует, чтобы вы назвали все ваши библиотеки в командной строке (включая libc и libcrt), однако.

В качестве альтернативы, если вы используете g ++ в качестве «лучшего c», вы можете использовать gcc для последнего шага ссылки (который будет включать libc автоматически)

10 голосов
/ 31 октября 2009

Вы можете использовать

g++ -nodefaultlibs -fno-exceptions a.cc

Но вы не можете использовать все функции c ++ таким образом ...

2 голосов
/ 16 декабря 2015

Ради полноты и правильности:

g++ -c -fno-exceptions a.cpp
gcc a.o -o a
...