Избегайте ссылок на libstdС++
Я работаю над встроенным проектом, который в настоящее время использует C в Linux и uClibc. Мы заинтересованы в том, чтобы переместить его на С++, но мне не нужны служебные данные, связанные со ссылкой в libstdС++. Мое впечатление, что это возможно, если мы не будем использовать что-либо из STL, например, iostream или vector.
Как создать g++ для компиляции без ссылки на libstdС++?
Ответы
Ответ 1
При компиляции используйте g++ -c
только для компиляции. Затем для привязки используйте ld
вместо g++
. Это вызывает ссылку непосредственно, что требует от вас указать все ваши библиотеки в командной строке (в том числе libc и libcrt).
В качестве альтернативы, если вы используете g++ как "лучше c", вы можете использовать gcc
для своего финального этапа ссылки (который будет включать libc автоматически)
Ответ 2
Вы можете использовать
g++ -nodefaultlibs -fno-exceptions a.cc
Но вы не можете использовать все возможности С++ таким образом...
Ответ 3
Для полноты и правильности:
g++ -c -fno-exceptions a.cpp
gcc a.o -o a