Nano Hash - криптовалюты, майнинг, программирование

CodeBlocks: как я могу динамически связать libstdС++?

Возможно, я сделаю некоторые неявные предположения. Если кто-то из них не прав, поправьте меня.

Окружающая обстановка

Win32, TDM GCC 4.6.1, Codeblocks 10.05, Codeblocks может компилировать C++ с помощью набора инструментов gnu.

Проблема

Насколько мне известно, stdlibС++ можно связать как динамически, так и статически. В настоящее время CodeBlocks связывает libstdc++ статически. Хотя я не смог найти какие-либо настройки, относящиеся к динамической/статической компоновке, на панели «настройки сборки» кодовых блоков, я мог проверить, используя монитор процесса, что он статически связывает стандартную библиотеку С++.

CodeBlocks выполняет g++ со следующими параметрами:

mingw32-g++.exe  -o bin\Release\fltk-hello.exe
obj\Release\fltk-hello.o   -s C:\MinGW32\lib\libfltk.a
C:\MinGW32\lib\libgdi32.a C:\MinGW32\lib\libole32.a
C:\MinGW32\lib\libuuid.a C:\MinGW32\lib\libcomdlg32.a
C:\MinGW32\lib\libcomctl32.a

Затем идет вызов из g++:

"c:/mingw32/bin/../libexec/gcc/mingw32/4.6.1/collect2.exe"
"-Bdynamic" "-o" "bin\Release\fltk-hello.exe" "-s"
"c:/mingw32/bin/../lib/gcc/mingw32/4.6.1/../../../crt2.o"
"c:/mingw32/bin/../lib/gcc/mingw32/4.6.1/crtbegin.o"
"-Lc:/mingw32/bin/../lib/gcc/mingw32/4.6.1"
"-Lc:/mingw32/bin/../lib/gcc"
"-Lc:/mingw32/bin/../lib/gcc/mingw32/4.6.1/../../../../mingw32/lib"
"-Lc:/mingw32/bin/../lib/gcc/mingw32/4.6.1/../../.."
"obj\Release\fltk-hello.o" "C:\MinGW32\lib\libfltk.a"
"C:\MinGW32\lib\libgdi32.a" "C:\MinGW32\lib\libole32.a"
"C:\MinGW32\lib\libuuid.a" "C:\MinGW32\lib\libcomdlg32.a"
"C:\MinGW32\lib\libcomctl32.a" "-Bstatic" "-lstdc++" "-Bdynamic"
"-lmingw32" "-lgcc" "-lmoldname" "-lmingwex" "-lmsvcrt" "-ladvapi32"
"-lshell32" "-luser32" "-lkernel32" "-lmingw32" "-lgcc" "-lmoldname"
"-lmingwex" "-lmsvcrt"
"c:/mingw32/bin/../lib/gcc/mingw32/4.6.1/crtend.o"

Теперь эта часть

"-Bstatic" "-lstdc++"

Дает понять, что stdc++ компонуется статически. Я также мог проверить в проводнике процессов, что загруженные dll не содержат libstdc++-6.dll.

Что я пробовал до сих пор

Я просмотрел страницы настроек сборки кодовых блоков и ничего не нашел. Codeblock предоставляет возможность добавлять параметры в g++. К сожалению, я не смог найти явные параметры gcc для включения динамической компоновки libstdc++, документы по адресу http://gcc.gnu.org/onlinedocs/gcc/Link-Options.html сказать

Если libstdc++ доступна как разделяемая библиотека и параметр -static не используется, то это указывает на общую версию libstdc++.

Итак, как я могу динамически связать его с stdc++?

20.06.2012

Ответы:


1

Наконец, я нашел решение. нужно добавить

-shared-libstdc++

к параметрам компоновщика. Теперь он динамически связывает библиотеки stdc++.

20.06.2012
Новые материалы

Кластеризация: более глубокий взгляд
Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

Как написать эффективное резюме
Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

Частный метод Python: улучшение инкапсуляции и безопасности
Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

Как я автоматизирую тестирование с помощью Jest
Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..