powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Статическая сборка fbclient, не зависящего от MS VC runtime, для чайников
25 сообщений из 77, страница 1 из 4
Статическая сборка fbclient, не зависящего от MS VC runtime, для чайников
    #38875102
Fr0sT-Brutal
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Отдельно темы не нашел; возможно, это никому не нужно или же совершенно элементарная вещь для знатоков, но сам промучился довольно долго, т.ч. делюсь опытом. Еще раз повторю: с Visual studio я вообще не знаком, и мануал предназначен для таких же.

Итак, цель - собрать fbclient без привязки к дурацкому MS VC runtime.

Инструментарий:
- WinXP, можно на виртуалке
- Visual studio express 2010 (бесплатная, но найти сейчас можно разве что на торрентах)

Порядок действий:
- Поставить MS VS, зарегить (ключи найти в сети либо получить от MS)
- Скачать исходники Firebird. К сожалению, придется тянуть всю глыбу, т.к. клиентская либа не выделена.
- Перейти в (исходники)\builds\win32\msvc10
- Поочередно для всех трех sln файлов: открыть в VS, выделить все проекты в дереве слева, Project -> Properties, Configuration properties -> C/C++ -> Code generation, опция Runtime library, сменить на Multi-threaded (/MT), сохранить изменения, закрыть солюшен.
- Перейти в (исходники)\builds\win32, запустить run_all.bat.
- Если звезды сложатся удачно - после N минут шуршания в (исходники)\temp\Win32\Release\firebird\bin образуется вожделенная dll, не зависящая от рантайма. У меня получилось где-то 750 кило против 550 кило у стокового варианта.

Рецепт проверен только на 32-битной конфигурации, т.к. 64-битной XP под руками не оказалось, на 7ке при сборке линкер выдает таинственные ошибки, связанные с COFF ( проблема известная ; решения так и не найдено, кроме почему-то сноса дотнета 4.5 - для меня не вариант, т.к. он у меня единственный установлен), а под 2013 express проектов нет. Кросс-компиляция же не удается, т.к. при сборке выполняется запуск вновь скомпиленных программ, которая, естественно, обламывается, ведь они 64-битные.

Кстати, после первой полной сборки можно собирать клиента отдельно, открыв \builds\win32\msvc10\fbclient.vcxproj в VS, только придется скопировать папку \temp\Win32\Release\common в \temp\Win32\Debug\common (не спрашивайте, почему релиз-конфиг ищет либы по дебаг-пути)
...
Рейтинг: 0 / 0
Статическая сборка fbclient, не зависящего от MS VC runtime, для чайников
    #38894767
Fr0sT-Brutal
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
После многих часов затяжных боев с шайтан-мелкософтом выяснил, что 64 версия Express-ом собираться не желает, даже если поставить ей недостающие компиляторы (сборочный скрипт не находит нужного vcvars.bat). Пришлось-таки доставать и ставить полную версию VS 2010. В итоге полный алгоритм сборки под W7 такой:
1. Найти и поставить VS 2010. Я ставил MSDN образ, т.к. его не нужно регистрировать
2. Вероятно, у вас уже будет стоять самый новый .net, который конфликтует с тем, что использовался в 2010-й Студии. Проблема выражается ошибкой "LINK : fatal error LNK1123: failure during conversion to COFF: file invalid or corrupt" при сборке. Решения с наименьшим геморроем (варианты жонглирования версиями дотнета и Студий не рассматриваются):
* Переименовать C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin\cvtres.exe - мне помог именно этот способ.
* Заменить ошибочный вышеуказанный cvtres.exe на правильный (см. инфу по ссылке) - если есть установленная Студия 2012, например.
* Поставить SP1 для Студии, который исправит ошибку, но снесет 64 компиляторы, которые придется ставить заново из еще одного дистрибутива (без комментариев...)
Инфа тут .
3. Перейти в консоли в %FBSRC%\builds\win32 и выполнить
Код: sql
1.
2.
set FB_PROCESSOR_ARCHITECTURE=x86
run_all


либо
Код: sql
1.
2.
set FB_PROCESSOR_ARCHITECTURE=AMD64
run_all


в зависимости от нужной архитектуры бинарников.

Если нужно собрать проекты статически, убирая дурную зависимость от msvcr, то алгоритм такой: открыть в VS поочередно файлы %FBSRC%\builds\win32\msvc10\*.sln, выделить все проекты в дереве проектов, открыть свойства, выбрать конфигурацию All configurations и поменять:
* Configuration properties -> General, опция Use of MFC, выставить Use Standard Windows Libraries
* Project -> Properties, Configuration properties -> C/C++ -> Code generation, опция Runtime library, сменить на Multi-threaded (/MT)
...
Рейтинг: 0 / 0
Статическая сборка fbclient, не зависящего от MS VC runtime, для чайников
    #38895216
lzw
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
lzw
Гость
В 3.0 проще: скачать исходники, установить CMake (система сборки), затем выполнить команды ниже. Запустить сборку firebird_src/win_mt/firebird.sln. Файл будет сгенерирован для установленной версии VS, либо для самой поздней из установленных. Также есть возможность сборки 64 битной версии.

cd firebird_src
cmake -H. -Bwin_mt -DMSVC_STATIC_RUNTIME=1
...
Рейтинг: 0 / 0
Статическая сборка fbclient, не зависящего от MS VC runtime, для чайников
    #38895338
Фотография Gallemar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Fr0sT-BrutalПосле многих часов затяжных боев с шайтан-мелкософтом выяснил, что 64 версия Express-ом собираться не желает, даже если поставить ей недостающие компиляторы (сборочный скрипт не находит нужного vcvars.bat).
Express не поддерживает компиляцию 64, на то он и Exress
...
Рейтинг: 0 / 0
Статическая сборка fbclient, не зависящего от MS VC runtime, для чайников
    #38895490
Fr0sT-Brutal
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
lzw, хорошая новость, буду иметь в виду.

Gallemar, теоретически поддерживает, если поставить дополнительный пакет компиляторов. Практически же скрипты сборки FB такой вариант не переваривают.
...
Рейтинг: 0 / 0
Статическая сборка fbclient, не зависящего от MS VC runtime, для чайников
    #38895603
ArtDen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Fr0sT-Brutal- Visual studio express 2010 (бесплатная, но найти сейчас можно разве что на торрентах)
Вообще-то он лежит на официальном сайте на странице загрузки остальных Express-версий (внизу)
...
Рейтинг: 0 / 0
Статическая сборка fbclient, не зависящего от MS VC runtime, для чайников
    #38896459
Fr0sT-Brutal
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ArtDen,

ну вот я что-то не увидел. Все ссылки вели на загрузку 2013-й, а на сайте МС сам Билл ногу сломил.
...
Рейтинг: 0 / 0
Статическая сборка fbclient, не зависящего от MS VC runtime, для чайников
    #38896597
ArtDen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
...
Рейтинг: 0 / 0
Статическая сборка fbclient, не зависящего от MS VC runtime, для чайников
    #38896940
Fr0sT-Brutal
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ArtDen,

хорошо, буду знать. Увы, для сабжа Экспресс полезен лишь на 50%
...
Рейтинг: 0 / 0
Статическая сборка fbclient, не зависящего от MS VC runtime, для чайников
    #38918586
MaratIsk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Fr0sT-Brutal,

а другими компиляторами не компилируется?
...
Рейтинг: 0 / 0
Статическая сборка fbclient, не зависящего от MS VC runtime, для чайников
    #38919296
Fr0sT-Brutal
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Без понятия, я этим-то еле собрал. У меня с С прямо-таки несовместимость. Вроде как есть возможность сборки mingw-ом, но я туда не копал - еще искать, как избавиться от его библиотек. К тому же авторExecutable size problem. The executables are too great.
...
Рейтинг: 0 / 0
Статическая сборка fbclient, не зависящего от MS VC runtime, для чайников
    #39007946
Фотография Mikhail Tchervonenko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MaratIskFr0sT-Brutal,

а другими компиляторами не компилируется?

когда то пользовался этой инструкцией
но она уже устарела

Давно уже не собирал, сегодня слил FB3 b2 по svn, надо поиграться, полазить, посмотреть, собирать может и не прийдётся.
Интересно, а какой версией VS компилят разработчики сейчас?
Кстати, может гдето есть какой актуальный мануал на тему сборки?
Хорошо бы что то для нового компилятора cpp от Embarcadero, т.к. у многих есть купленная Rad Studio, было бы удобно.
...
Рейтинг: 0 / 0
Статическая сборка fbclient, не зависящего от MS VC runtime, для чайников
    #39007961
dimitr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
/trunk/doc/README.build.msvc.html
...
Рейтинг: 0 / 0
Статическая сборка fbclient, не зависящего от MS VC runtime, для чайников
    #39007965
dimitr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
официальные билды и снапшоты компилятся MSVC10, в коде есть поддержка MSVC12/13. Поддержки эмбаркадеровских компиляторов нет и не предвидится.
...
Рейтинг: 0 / 0
Статическая сборка fbclient, не зависящего от MS VC runtime, для чайников
    #39008007
Фотография Mikhail Tchervonenko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dimitrофициальные билды и снапшоты компилятся MSVC10, в коде есть поддержка MSVC12/13. Поддержки эмбаркадеровских компиляторов нет и не предвидится.

спасибо,

Жалко, студию покупать дороговато только для изучения FB, а express 64x не компилирует. Жотя для тестов хватит и 32x по идее.
На express кто то пробовал компилить 32x? Тонкости какие то вылазят или компилится без проблем как есть?
...
Рейтинг: 0 / 0
Статическая сборка fbclient, не зависящего от MS VC runtime, для чайников
    #39008029
dimitr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
существует бесплатная Visual Studio Community 2013
...
Рейтинг: 0 / 0
Статическая сборка fbclient, не зависящего от MS VC runtime, для чайников
    #39008035
Фотография Mikhail Tchervonenko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dimitrсуществует бесплатная Visual Studio Community 2013

спасибо!
...
Рейтинг: 0 / 0
Статическая сборка fbclient, не зависящего от MS VC runtime, для чайников
    #39008140
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dimitrПоддержки эмбаркадеровских компиляторов нет и не предвидится.

"Эмбаркадеровские компиляторы" это теперь clang. AFAIK, им собирают под МакОсь.

Mikhail Tchervonenkoстудию покупать дороговато только для изучения FB, а express
64x не компилирует. Жотя для тестов хватит и 32x по идее.
На express кто то пробовал компилить 32x? Тонкости какие то вылазят или компилится без
проблем как есть?
Во-первых, для сборки Express-ом для 64 бит достаточно установить MS SDK, в который входит
недостающий компилятор и библиотеки. Инструкция гуглится влёт.

Есть две тонкости: с путями, содержащими пробелы (патч я присылал, его не приняли) и
апплетом панели управления (его надо просто удалить из солюшена).
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Статическая сборка fbclient, не зависящего от MS VC runtime, для чайников
    #39008170
Фотография Mikhail Tchervonenko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov,

спасибо за инфу,
посмотрел лицензию на Visual Studio Community 2013 и тут
мне подходит. Ничего коммерческого на cpp сейчас не пишу, а для open source и для изучения она свободная
собственно уже установил
...
Рейтинг: 0 / 0
Статическая сборка fbclient, не зависящего от MS VC runtime, для чайников
    #39008511
чччД
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mikhail TchervonenkoDimitry Sibiryakov,

спасибо за инфу,
посмотрел лицензию на Visual Studio Community 2013 и тут
мне подходит. Ничего коммерческого на cpp сейчас не пишу, а для open source и для изучения она свободная
собственно уже установил

Так и "коммерческое" на VS CE не запрещается (см. условия):
в некорпоративных организациях Visual Studio Community может использовать до 5 пользователей. В корпоративных организациях (в которых используется > 250 ПК или годовой доход которых > 1 млн долларов США) использование запрещено, за исключением случаев, перечисленных выше (открытый код, научные исследования и учебные аудитории).
...
Рейтинг: 0 / 0
Статическая сборка fbclient, не зависящего от MS VC runtime, для чайников
    #39009681
MaratIsk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Fr0sT-Brutal,

птица на чем пишется? на С или С++?
если на С, пробовал ли кто сделать объектные файлы клиента для статической линковки?
...
Рейтинг: 0 / 0
Статическая сборка fbclient, не зависящего от MS VC runtime, для чайников
    #39009784
Фотография Mikhail Tchervonenko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MaratIskFr0sT-Brutal,

птица на чем пишется? на С или С++?
если на С, пробовал ли кто сделать объектные файлы клиента для статической линковки?
на c++
...
Рейтинг: 0 / 0
Статическая сборка fbclient, не зависящего от MS VC runtime, для чайников
    #39009788
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MaratIskптица на чем пишется? на С или С++?
если на С, пробовал ли кто сделать объектные файлы клиента для статической линковки?Каким образом C или C++ препятствует созданию static library ?
...
Рейтинг: 0 / 0
Статическая сборка fbclient, не зависящего от MS VC runtime, для чайников
    #39009961
MaratIsk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hvladMaratIskптица на чем пишется? на С или С++?
если на С, пробовал ли кто сделать объектные файлы клиента для статической линковки?Каким образом C или C++ препятствует созданию static library ?

если С++, то для Delphi можно попробовать BCC55
но для лазаруса из С++ не получится, понимает только С

а хотелось бы для обеих сред
...
Рейтинг: 0 / 0
Статическая сборка fbclient, не зависящего от MS VC runtime, для чайников
    #39009974
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MaratIskдля лазаруса из С++ не получится, понимает только С
С каких пор синтаксис исходника влияет на формат объектника?..
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
25 сообщений из 77, страница 1 из 4
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Статическая сборка fbclient, не зависящего от MS VC runtime, для чайников
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]