2017-01-09 8 views
1

Если я выбираю сделать:Мы используем libstdC++. A и libstdC++, поэтому в то же время при создании исполняемого файла?

gcc my.cpp -lstdc++ 

Он связывает с libstdC++ так, правильно.? Но есть часть инициализации c/C++ кода (глобальные/статические переменные/объекты, функции atexit() и т. Д.), Похоже, им также потребуется связать файл libstdC++.

Так что, мой вопрос заключается в том, что команда связывания всегда использует libstdC++. A по какой-то причине, даже если я указал ссылку на .so-файл?

Спасибо.

+1

Почему именно вы думаете, что «некоторая часть инициализации c/C++ кода также должна требовать связывания с libstdC++. A»? –

+0

Знаете ли вы о http://stackoverflow.com/questions/12293530/what-is-the-difference-between-so-and-a-files? – GhostCat

ответ

1

gcc my.cpp -lstdc++

Это, как правило, неправильно, что нужно делать. Вместо этого, вы должны сделать это:

g++ my.cpp 

Он связывает с libstdC++ так, правильно.?

В зависимости от того, как был сконфигурирован и установлен GCC, но чаще всего да.

Но вы некоторые C/C++ инициализация часть кода (глобальные/статические переменные/объекты, atexit() функции и т.д.), по-видимому, они должны также требовать ссылки на libstdC++. Файл.

Это неверно. Откуда у вас это ошибочное впечатление?

Так что мой вопрос, имеет ли соединение команда всегда использует libstdC++. А

Нет, обычно не.

 Смежные вопросы

  • Нет связанных вопросов^_^