Может ли кто-нибудь указать мне компилятор Go to C, или его действительно не существует? Долгие поиски в сети мне ничего не дали.
В частности, я ищу компилятор Go-to-C с открытым исходным кодом, который можно собрать для Linux.
Если вам нужна наилучшая межплатформенная поддержка с наименьшими усилиями, Go — отличный выбор.
Хотя могут быть некоторые компиляторы C для нескольких платформ, которые Go не поддерживает, C на самом деле не так совместим с кросс-платформой, как вы могли бы подумать (или изначально был изменен).
В частности, стандартная библиотека Go построена таким образом, чтобы поддерживать платформы, поддерживаемые Go, путем включения и автоматического переключения между реализациями для конкретных платформ. Эти альтернативные реализации автоматически выбираются компилятором Go во время сборки.
C не имеет эквивалентного механизма. Это подчеркивает, почему это была важная функция для многоплатформенной поддержки Go и кросс-компиляции.
Например, рассмотрим path/filepath
пакет в Go. Он автоматически переключается между обратной или прямой косой чертой ("\","/") при работе с путями в зависимости от того, является ли целью компиляции Windows или нет.
Этот механизм теряется, если вы сначала скомпилируете Go to C, а затем скомпилируете на целевой платформе, потому что во время компиляции Go to C целевая платформа все еще неизвестна. Это означает, что, вопреки вашим ожиданиям, кросс-компиляция в C уменьшит кроссплатформенную поддержку Go, а не улучшит ее.
При всем при этом вы можете проверить проект bblfsh:
https://github.com/bblfsh/bblfshd
Bblfsh по сути является кросс-компилятором абстрактного синтаксического дерева. Существуют драйверы C++ и Go для Bblfsh, но я не вижу ни одного для C. Можно скомпилировать непосредственно из языка AST или даже написать исходный код, который будет генерировать AST.
гетли
0xC0000022L
гетли
0xC0000022L
гетли