@khevse

[golang] Как выполнить статическую линковку с++ библиотек при сборке?

Здравствуйте.

У меня не получается выполнить статическую линковку библиотек скомпилированных с помощью golang и c++ (mingw) (сборка тестировалась только для windows).

При выполнении компиляции возникают ошибки:
вариант сборки № 2: utils\compressor.go:4:2: no buildable Go source files in .....\ConfRobber\src\zlibwrapper
вариант сборки № 3: ошибка линковки библиотеки c++ "libzlibstatic.a":
zlibwrapper(.text): inflateInit2_: not defined
zlibwrapper(.text): inflate: not defined
zlibwrapper(.text): inflateEnd: not defined
zlibwrapper(.text): deflateInit2_: not defined
...
Программный код: https://github.com/khevse/ConfRobber
В корне проекта находится файл build.bat, в котором указана очередность моих действий и варианты сборки

Уточнения к решению:
1. Наиболее интересный вариант - это сборка проекта средствами golang.
2. Динамическая линковка библиотек не устраивает, т.к. при миграции исполняемого файла
на другую машину возникает слишком много проблем.

Спасибо.
  • Вопрос задан
  • 1713 просмотров
Решения вопроса 1
@khevse Автор вопроса
Всем спасибо, вопрос решил.

Получилась частично статическая, т.е. враппер линкуется статически, а остальные библиотеки идут как 3rd-Party.
Из недостатков работы с MinGW- нет возможности статически подключить библиотеки gcc и stdc++. Из-за этого
приходится тащить вместе с исполняемым файлом библиотеки libgcc_s_seh-1.dll и libstdc++-6.dll. Но это исключительно особенность работы с MinGW.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@beduin01
На сколько я знаю, Go нельзя линковать с С++. Прямую линковку с С++ поддерживает только очень ограниченное количество компиляторов сторонних языков типа https://github.com/Syniurge/Calypso
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы