Каков эквивалентный переход на / MT (VC ++) для g ++ в Linux (CentOS)?

Мои пользователи жалуются, что им приходится устанавливать строительные блоки потоков linux на машины, которыми они не владеют, и многие хосты не хотят, чтобы мои конечные пользователи устанавливали строительные блоки потоков Intel, поэтому я хочу создать статическую версию своей динамической версии. библиотека / плагин / модуль / расширение (какой бы ни был корректный термин для подключаемой программы на С ++ / dll / so).

Я обнаружил, что для Windows я должен использовать / MT (многопоточный) вместо стандартного переключателя / MD (многопоточный DLL) поэтому моя программа не будет иметь никаких зависимостей (но в Windows есть параллельная библиотека контейнеров, поэтому мне не нужно там использовать TBB).

Я просто не могу понять, что такое эквивалент для Linux?

Или есть конвертер .sln в makefile, который может выяснить все варианты?

Я занимаюсь разработкой под Windows, но большинство моих конечных пользователей используют linux, поэтому я хотел бы убедиться, что они не несут никакой нагрузки, и я хочу, чтобы им было очень комфортно пользоваться моими открытыми версиями.

2

Решение

/MT Флаг в компиляторе Microsoft C ++ заставляет компоновщик связываться со статическими версиями библиотек времени выполнения C и C ++. Microsoft поставляет статические и динамические версии библиотек времени выполнения, поэтому этот параметр эффективно выбирает, с каким набором библиотек связать. Этот флаг не влияет на ссылки на сторонние библиотеки.

На стороне Linux у вас есть -static возможность указать компоновщику использовать статические библиотеки. эта опция не специфична для библиотеки, как в Windows, она влияет на все библиотеки. Но если вы используете эту опцию, вы должны предоставить статические версии всех необходимых вам библиотек, компоновщик не будет автоматически конвертировать динамические библиотеки. Это включает в себя системные и исполняемые библиотеки, которые не всегда доступны как статические библиотеки. Он также включает в себя Intel TBB, который вам, вероятно, потребуется для компиляции в виде статической библиотеки, если Intel не предоставит ее в такой форме.

1

Другие решения

Я предполагаю, что вы имеете в виду, что ваши пользователи должны установить Intel Threading Building Blocks (TBB) на своих компьютерах с Linux. Если вы используете функциональность Intel TBB и ваши клиенты должны скомпилировать исходный код, то им необходимо установить Intel TBB. Альтернативный подход состоит в том, чтобы скомпилировать исходный код для ваших клиентов и предоставить им только двоичные файлы вашего решения, а не исходный код — тогда им не придется устанавливать TBB.

0

По вопросам рекламы [email protected]