2017-01-18 8 views
0

Я не могу найти информацию о golang в зависимости от c runtime? Если это зависит от этого, оно статически компилируется в go-binary, чтобы заставить Go-app работать везде без зависимостей?Зависит ли golang от c runtime?

Вот тема о what C-runtime is

+0

Не могли бы вы уточнить, что такое «c runtime»? Go не зависит от несуществующих вещей ... – Volker

+0

Go не требует каких-либо библиотек C, если это то, что вы просите. – JimB

+0

[Ref] (http://stackoverflow.com/q/36783409/2285935) –

ответ

5

Если вы говорите об исполняемых файлах, предоставленных компилятором Go, то ответ «да или нет — это не зависит»:

В большинстве случаев, в результате исполняемая программа не зависит от библиотеки времени выполнения C. .

Однако на некоторых платформах при определенных обстоятельствах библиотека C среда получает динамически связаны В частности, это было в случае с Go версии < 1.5 на Linux при использовании разрешения DNS: среда выполнения зависит от платформы libc реализация для обработки такого разрешения. In 1.5 this has been reworked.

Другим возможным случаем является (IIRC) Solaris, который не обеспечивает стабильного доступа к явным отказам ядра напрямую и requires routing these calls through the platform's libc.

Существует еще один случай: с использованием cgo, который является слоем для интерфейса. Код Go с иностранным кодом C. Используя cgo, ваша программа Go зависит от времени выполнения C. Обратите внимание, что вы не можете использовать cgo, но один или несколько пакетов сторонних производителей, которые вы можете использовать, могут использовать cgo, а — транзитивно — ваша программа заканчивается в зависимости от библиотеки времени выполнения C.