Go: cmd/link: msvc рдСрдмреНрдЬреЗрдХреНрдЯ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░реЗрдВ

рдХреЛ рдирд┐рд░реНрдорд┐рдд 11 рдЬреБрд▓ре░ 2017  ┬╖  222рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: golang/go

рдореИрдВ рд╕рдордЭрддрд╛ рд╣реВрдВ рдХрд┐ рдЧреЛ рд▓рд┐рдВрдХрд░ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдПрдордПрд╕рд╡реАрд╕реА рдСрдмреНрдЬреЗрдХреНрдЯ рдлрд╛рдЗрд▓реЛрдВ рдХреЛ рд▓рд┐рдВрдХ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдпрд╣ рднреА рдорд╛рдирддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╕рдорд╕реНрдпрд╛ рдХрдо рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рд╣реЛрдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЗрд╕рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдирд╛ рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдХреБрдЫ рд╣рдж рддрдХ рд╡рд┐рдВрдбреЛрдЬрд╝ рд╡рд░реНрдХрдлрд╝реНрд▓реЛ рдХреЛ рд╕рд░рд▓ рдХрд░реЗрдЧрд╛ред рдпрд╣ рдореБрджреНрджрд╛ рдореБрдЦреНрдп рд░реВрдк рд╕реЗ рдпрд╣ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рд╣реИ рдХрд┐ рдпрд╣ рдХрд┐рддрдирд╛ рдкреНрд░рдпрд╛рд╕ рд╣реЛрдЧрд╛ рдФрд░/рдпрд╛ рдХреНрдпрд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реЛрдЧрд╛ред

Builders FeatureRequest NeedsInvestigation OS-Windows

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

рдЕрд░реЗ рдпрд╣ рдЗрд╕ рдзрд╛рдЧреЗ рдХреЗ рдиреАрдЪреЗ рд╕реЗ рджрд┐рдЦрддрд╛ рд╣реИ рдХрд┐ рдЖрдкрдиреЗ рдЕрдкрдиреЗ рдПрдордПрд╕рд╡реАрд╕реА рдореБрджреНрджреЛрдВ рдХреЛ рд╕реБрд▓рдЭрд╛ рд▓рд┐рдпрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдЖрдкрдХреЛ рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдЖрддреА рд╣реИ, рддреЛ рдореИрдВ рдПрдордПрд╕рд╡реАрд╕реА рдЯреАрдо рдореЗрдВ рд╣реВрдВред рдмреЗрдЭрд┐рдЭрдХ рдореБрдЭреЗ рдЬреАрдердм рдпрд╛ рдИрдореЗрд▓ рдкрд░ рдкрд┐рдВрдЧ рдХрд░реЗрдВ ([email protected])

рд╕рднреА 222 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

/рд╕реАрд╕реА @рдПрд▓реЗрдХреНрд╕рдмреНрд░реЗрдирдореИрди

@xoviat рдЖрдкрдХреЛ рдХреНрдпрд╛ рд╕рдорд╕реНрдпрд╛ рд╣реЛ рд░рд╣реА рд╣реИ? рдореБрдЭреЗ рдЗрд╕реЗ рдпрд╣рд╛рдВ рдкреБрди: рдкреЗрд╢ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рддреЛ, рдХреГрдкрдпрд╛, рдЗрд╕реЗ рдкреБрди: рдкреЗрд╢ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдореБрдЭреЗ рд╕рднреА рдЪрд░рдгреЛрдВ рдХрд╛ рдкрд╛рд▓рди рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред

рд╢реБрдХреНрд░рд┐рдпрд╛

рдПрд▓реЗрдХреНрд╕

рдкреБрдирд╢реНрдЪ: рдореЗрд░реЗ рдкрд╛рд╕ рдЬреБрд▓рд╛рдИ рдХреЗ рдЕрдВрдд рддрдХ рдХрдВрдкреНрдпреВрдЯрд░ рдирд╣реАрдВ рд╣реЛрдЧрд╛ред рдореИрдВ рддрдм рдЗрд╕ рдкрд░ рдПрдХ рдирдЬрд░ рдбрд╛рд▓реВрдВрдЧрд╛ред

рдЖрдкрдХреЛ рдХреНрдпрд╛ рд╕рдорд╕реНрдпрд╛ рд╣реИ?

рдореИрдВрдиреЗ рдЕрднреА рддрдХ рдЗрд╕рдХреА рдХреЛрд╢рд┐рд╢ рдирд╣реАрдВ рдХреА рд╣реИ, рд▓реЗрдХрд┐рди рдореИрдВ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ msvc рдСрдмреНрдЬреЗрдХреНрдЯ рдлрд╝рд╛рдЗрд▓реЛрдВ рдореЗрдВ c рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдЧреЛ рд▓рд┐рдВрдХрд░ рдХреЗ рд╕рд╛рде .syso рдХреЗ рд░реВрдк рдореЗрдВ рдЬреЛрдбрд╝рдХрд░ рдХреЙрд▓ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред рдореИрдВрдиреЗ рдЬреЛ рдХреБрдЫ рднреА рдкрдврд╝рд╛ рд╣реИ рд╡рд╣ рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╕рдВрднрд╡ рдирд╣реАрдВ рд╣реИ рд▓реЗрдХрд┐рди рдореИрдВ рд╣реЛрдиреЗ рд╡рд╛рд▓реА рд╡рд┐рд╢рд┐рд╖реНрдЯ рддреНрд░реБрдЯрд┐ рдХреЛ рдкреБрди: рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рддреИрдпрд╛рд░ рдХрд░реВрдВрдЧрд╛ред

рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ msvc рдСрдмреНрдЬреЗрдХреНрдЯ рдлрд╝рд╛рдЗрд▓реЛрдВ рдореЗрдВ c рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдЧреЛ рд▓рд┐рдВрдХрд░ рдХреЗ рд╕рд╛рде .syso рдХреЗ рд░реВрдк рдореЗрдВ рдЬреЛрдбрд╝рдХрд░ рдХреЙрд▓ рдХрд░реЗрдВ

рдХреНрдпрд╛ рдЖрдкрдиреЗ рдЗрдиреНрд╣реЗрдВ рдбреАрдПрд▓рдПрд▓ рдореЗрдВ рдмрдирд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА рд╣реИ, рдФрд░ рдЙрдиреНрд╣реЗрдВ рдбреАрдПрд▓рдПрд▓ рдХреЗ рдЕрдВрджрд░ рд╕реЗ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ рд╣реИ?

рдореИрдВ рд╣реЛрдиреЗ рд╡рд╛рд▓реА рд╡рд┐рд╢рд┐рд╖реНрдЯ рддреНрд░реБрдЯрд┐ рдХреЛ рдкреБрди: рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рддреИрдпрд╛рд░ рдХрд░реВрдВрдЧрд╛ред

рдХрд░рдиреЗ рдХреА рдХреГрдкрд╛ рдХрд░реЗред рдзрдиреНрдпрд╡рд╛рджред

рдПрд▓реЗрдХреНрд╕

рдХреНрдпрд╛ рдЖрдкрдиреЗ рдЗрдиреНрд╣реЗрдВ рдбреАрдПрд▓рдПрд▓ рдореЗрдВ рдмрдирд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА рд╣реИ, рдФрд░ рдЙрдиреНрд╣реЗрдВ рдбреАрдПрд▓рдПрд▓ рдХреЗ рдЕрдВрджрд░ рд╕реЗ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ рд╣реИ?

рд╡рд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдореЗрд░реА рдореВрд▓ рдпреЛрдЬрдирд╛ рдереАред рдореИрдВ рд╕реНрд╡рд┐рдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдЗрд╕рд▓рд┐рдП рдЬреЗрдирд░реЗрдЯ рдХрд┐рдП рдЧрдП рд╕реА рдХреЛрдб рдХреЛ рдЕрд▓рдЧ рд╕реЗ рд╕рдВрдХрд▓рд┐рдд рдХрд░рдирд╛ рдФрд░ рдлрд┐рд░ рдбреАрдПрд▓рдПрд▓ рдирд┐рд░реНрдпрд╛рдд рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрдирд╛ рдЗрддрдирд╛ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдирд╣реАрдВ рд╣реИред рдпрд╣ рдореБрд╢реНрдХрд┐рд▓ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдХрд╖реНрдЯрдкреНрд░рдж рд╣реИ рдЬрдм рдЬреАрд╕реАрд╕реА рдХреЗ рд╕рд╛рде рдХрд╛рд░реНрдпрдкреНрд░рд╡рд╛рд╣ рд╕рд┐рд░реНрдл go generate; go build ред

рдареАрдХ рд╣реИ, рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╣реИред рдЗрди рдлрд╛рдЗрд▓реЛрдВ рд╕реЗ рд╢реБрд░реВ рдХрд░реЗрдВ:

рд╣реИрд▓реЛ.рдЧреЛ:

package main

/*
    extern void hello();
*/
import "C"

func main() {
    C.hello()
}

рдирдорд╕реНрддреЗ рд╕реА:

#include <stdio.h>

extern void hello()
{
    printf("Hello World from C");
}

рдлрд┐рд░ рдЗрди рдЖрджреЗрд╢реЛрдВ рдХреЛ рдЪрд▓рд╛рдПрдБ (рдкрде рдкрд░ msvc рдХреЗ рд╕рд╛рде):

cl /c hello.c
mv hello.obj hello.syso
mv hello.c hello.c.bak
go build

рдирддреАрдЬрд╛:
Warning: corrupt .drectve at end of def file

рдЙрддреНрдкрд╛рджрд┐рдд рдлрд╝рд╛рдЗрд▓ рдЪрд▓рд╛рддреЗ рд╕рдордп:

Exception 0xc0000005 0x8 0x13 0x13
PC=0x13
signal arrived during external code execution

main._Cfunc_hello()
        _//_obj/_cgo_gotypes.go:41 +
main.main()
        C://hello.go:9 +0x27

goroutine 17 [syscall, locked to thread]:
runtime.goexit()
        C:/Program Files/Go/src/runtime/asm_amd64.s:2197 +0x1
rax     0x4a5960
rbx     0xc042045f78
rcx     0x4a9a20
rdi     0xc042045f78
rsi     0x4adc60
rbp     0xc042045f38
rsp     0x6dfd68
r8      0xc042016340
r9      0x0
r10     0xc04204faa0
r11     0x4783c2
r12     0x0
r13     0x6
r14     0x0
r15     0xf1
rip     0x13
rflags  0x10216
cs      0x33
fs      0x53
gs      0x2b

рдореЗрд░реЗ рдкрд╛рд╕ рдореЗрд░реЗ рдкреАрд╕реА рдкрд░ рд╕реАрдПрд▓ рдХрдорд╛рдВрдб рд╕реНрдерд╛рдкрд┐рдд рдирд╣реАрдВ рд╣реИред рдореИрдВ рдПрдордПрд╕рд╡реАрд╕реА рдХреИрд╕реЗ рд╕реНрдерд╛рдкрд┐рдд рдХрд░реВрдВ?

рдзрдиреНрдпрд╡рд╛рджред

рдПрд▓реЗрдХреНрд╕

рдЖрдкрдХреЛ рдпрд╣рд╛рдВ "рдмрд┐рд▓реНрдб рдЯреВрд▓реНрд╕ 2017" рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ ред рдорд╛рдЗрдХреНрд░реЛрд╕реЙрдлреНрдЯ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЕрдм рдХрд┐рд╕реА рдХреЛ рднреА рд╡рд┐рдЬреБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ рдХрд╛ рдореБрдлреНрдд рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ рдЬрдм рддрдХ рдХрд┐ рдпрд╣ рд╡реНрдпрд╛рд╡рд╕рд╛рдпрд┐рдХ рд╡рд┐рдХрд╛рд╕ рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ рд╣реИред рдпрджрд┐ рдпрд╣ рдмрд╣реБрдд рдЕрдзрд┐рдХ рдкрд░реЗрд╢рд╛рдиреА рд╣реИ, рддреЛ рдореИрдВ рдЖрдкрдХреЛ рдХреЗрд╡рд▓ рдСрдмреНрдЬреЗрдХреНрдЯ рдлрд╝рд╛рдЗрд▓ рджреЗ рд╕рдХрддрд╛ рд╣реВрдБ рдпрджрд┐ рдЖрдк рдЪрд╛рд╣реЗрдВред

рдЕрдЧрд░ рдХреЗрд╡рд▓ рд╕реА ++ рдХреЛрдИ рдЪреАрдЬ рдирд╣реАрдВ рд╣реЛрддреА, рддреЛ рдореБрдЭреЗ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЪрд┐рдВрддрд╛ рдХрд░рдиреЗ рдХреА рдЬрд╝рд░реВрд░рдд рдирд╣реАрдВ рд╣реЛрддреАред рд▓реЗрдХрд┐рди рдРрд╕рд╛ рд╣реИ, рддреЛ рджрд░реНрдж рдЬрд╛рд░реА рд╣реИ...

рдЖрдкрдХреЛ рдпрд╣рд╛рдВ "рдмрд┐рд▓реНрдб рдЯреВрд▓реНрд╕ 2017" рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

рд╕рдордЭ рдЧрдпрд╛ред рдзрдиреНрдпрд╡рд╛рджред

рдпрджрд┐ рдпрд╣ рдмрд╣реБрдд рдЕрдзрд┐рдХ рдкрд░реЗрд╢рд╛рдиреА рд╣реИ, рддреЛ рдореИрдВ рдЖрдкрдХреЛ рдХреЗрд╡рд▓ рдСрдмреНрдЬреЗрдХреНрдЯ рдлрд╝рд╛рдЗрд▓ рджреЗ рд╕рдХрддрд╛ рд╣реВрдБ рдпрджрд┐ рдЖрдк рдЪрд╛рд╣реЗрдВред

рд╣рд╛рдБ, рдХреГрдкрдпрд╛, hello.obj рдХрд╣реАрдВ рдкреЛрд╕реНрдЯ рдХрд░реЗрдВред

рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рдФрд░ рд╕реЛрдЪ рд░рд╣реЗ рд╣реИрдВред рдЖрдк рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрдордПрд╕рд╡реАрд╕реА рдХрдВрдкрд╛рдЗрд▓рд░ рдХреЗ рд╕рд╛рде рд╕рдВрдХрд▓рд┐рдд рдСрдмреНрдЬреЗрдХреНрдЯ рдлрд╝рд╛рдЗрд▓ рдХреЛ рд▓рд┐рдВрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬреАрд╕реАрд╕реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВред рдХреНрдпрд╛ рдЖрдк рдХреЛрд╢рд┐рд╢ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЕрдкрдирд╛ рдЕрднреНрдпрд╛рд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди "рдЧреЛ рдмрд┐рд▓реНрдб" рдЪрд░рдг рдХреЛ рдЬреАрд╕реАрд╕реА рдХреЗ рд╕рд╛рде hello.obj рдХреЛ рд╕реА рдкреНрд░реЛрдЧреНрд░рд╛рдо рд╕реЗ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд╕рд╛рде рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВ? рд╢рд╛рдпрдж рдпрд╣ рдкрд╣рд▓реЗ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдореБрдЭреЗ рд╕рдВрджреЗрд╣ рд╣реИ, рдЕрдЧрд░ рд╣рдо рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рдХреИрд╕реЗ рдХрд░рдирд╛ рд╣реИ, рддреЛ рд╣рдо рдЧреЛ рдХреЗ рд╕рд╛рде рдРрд╕рд╛ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред

рдПрд▓реЗрдХреНрд╕

AFAIK lld https://github.com/llvm-mirror/lld msvc рдСрдмреНрдЬреЗрдХреНрдЯ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИред

рд╡рд╕реНрддреБ рдлрд╝рд╛рдЗрд▓ рдпрд╣рд╛рдБ рд╣реИ: https://github.com/xviat/msvcgo/blob/master/hello.syso

lld https://github.com/llvm-mirror/lld msvc рдСрдмреНрдЬреЗрдХреНрдЯ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ

рдЧреЛ рд╡рд┐рдВрдбреЛрдЬрд╝ рдкрд░ рдЬреАрд╕реАрд╕реА рд▓рд┐рдВрдХрд░ (рдПрд▓рдПрд▓рдбреА рдирд╣реАрдВ) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред

рд╡рд╕реНрддреБ рдлрд╝рд╛рдЗрд▓ рдпрд╣рд╛рдБ рд╣реИ: https://github.com/xviat/msvcgo/blob/master/hello.syso

рдЕрдЧрд╕реНрдд рдореЗрдВ рдШрд░ рдЖрдиреЗ рдкрд░ рдореИрдВ рдЗрд╕реЗ рдЖрдЬрдорд╛рдЙрдВрдЧрд╛ред рд╢реБрдХреНрд░рд┐рдпрд╛ред

рдПрд▓реЗрдХреНрд╕

рдЧреЛ рд╡рд┐рдВрдбреЛрдЬрд╝ рдкрд░ рдЬреАрд╕реАрд╕реА рд▓рд┐рдВрдХрд░ (рдПрд▓рдПрд▓рдбреА рдирд╣реАрдВ) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред

рдореИрдВ рдЬрд╛рдирддрд╛ рд╣реВрдБред рд▓реЗрдХрд┐рди lld msvc рдСрдмреНрдЬреЗрдХреНрдЯ рдлреЙрд░реНрдореЗрдЯ рдХрд╛ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рдУрдкрди рд╕реЛрд░реНрд╕ рдбреЙрдХреНрдпреВрдореЗрдВрдЯреЗрд╢рди рд╣реИред

рдореБрдЭреЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрд▓рдбреА рд╕реЗ рдПрдХ рд╣реА рддреНрд░реБрдЯрд┐ рдорд┐рд▓рддреА рд╣реИ рдЗрд╕рд▓рд┐рдП рддреНрд░реБрдЯрд┐ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдПрд▓рдбреА рд╕реЗ рдЖ рд░рд╣реА рд╣реИред

рдореБрдЭреЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрд▓рдбреА рд╕реЗ рдПрдХ рд╣реА рддреНрд░реБрдЯрд┐ рдорд┐рд▓рддреА рд╣реИ рдЗрд╕рд▓рд┐рдП рддреНрд░реБрдЯрд┐ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдПрд▓рдбреА рд╕реЗ рдЖ рд░рд╣реА рд╣реИред

рд╣рд╛рдВред рд╣рдореЗрдВ рдПрдордПрд╕рд╡реАрд╕реА рдХреЗ рд╕рд╛рде рднрд╛рдЧ рд╕рдВрдХрд▓рд┐рдд рдХрд░рдХреЗ рдФрд░ рдЬреАрд╕реАрд╕реА рд╕реЗ рдЬреЛрдбрд╝рдХрд░ рд╕реА рдкреНрд░реЛрдЧреНрд░рд╛рдо рдмрдирд╛рдиреЗ рдХрд╛ рддрд░реАрдХрд╛ рдЬрд╛рдирдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИред

рдПрд▓реЗрдХреНрд╕

рдореЗрд░реА рдЕрдЬреНрдЮрд╛рдирддрд╛ рдХреЛ рдХреНрд╖рдорд╛ рдХрд░реЗрдВ, рд▓реЗрдХрд┐рди рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЬреАрд╕реАрд╕реА рд▓рд┐рдВрдХрд┐рдВрдЧ рдХреНрдпрд╛ рд╣реИ? рдХреНрдпрд╛ рдпрд╣ рдЧреЛ рд▓рд┐рдВрдХрд░ рдХреЗ рдЖрдЙрдЯрдкреБрдЯ рдХреЛ рдЬреЛрдбрд╝ рд░рд╣рд╛ рд╣реИ?

рдпреЛрдЧрд┐рдиреА рдореЗрдВ рдХрдирд╡рд░реНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдСрдмреНрдЬреЗрдХреНрдЯ рдлрд╝рд╛рдЗрд▓реЛрдВ рдкрд░ objconv рдЪрд▓рд╛рдирд╛:

objconv -felf hello.obj hello.syso

рдЕрдм рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдпреЗ рддреНрд░реБрдЯрд┐рдпрд╛рдВ рд╣реИрдВ:

hello.syso: In function `__local_stdio_printf_options':
(.text$mn+0x3): undefined reference to `?_OptionsStorage@?1??__local_stdio_printf_options@@9<strong i="9">@9</strong>'
hello.syso: In function `_vfprintf_l':
(.text$mn+0x3a): undefined reference to `__stdio_common_vfprintf'
hello.syso: In function `printf':
(.text$mn+0x28): undefined reference to `__acrt_iob_func'
collect2.exe: error: ld returned 1 exit status

рд╕рдВрднрд╡рддрдГ stdio рд╕реАрдорд╛ рд╕реЗ рдмрд╛рд╣рд░ рд╣реИ?

рдореЗрд░реА рдЕрдЬреНрдЮрд╛рдирддрд╛ рдХреЛ рдХреНрд╖рдорд╛ рдХрд░реЗрдВ, рд▓реЗрдХрд┐рди рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЬреАрд╕реАрд╕реА рд▓рд┐рдВрдХрд┐рдВрдЧ рдХреНрдпрд╛ рд╣реИ? рдХреНрдпрд╛ рдпрд╣ рдЧреЛ рд▓рд┐рдВрдХрд░ рдХреЗ рдЖрдЙрдЯрдкреБрдЯ рдХреЛ рдЬреЛрдбрд╝ рд░рд╣рд╛ рд╣реИ?

рдЖрдк рдЕрдкрдирд╛ рдЧреЛ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП 2 рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ:

  • рдХрдВрдкрд╛рдЗрд▓рд░ рдЖрдкрдХреА .go рдлрд╝рд╛рдЗрд▓реЛрдВ (рдЙрд╕ рд╕рдордп 1 рдкреИрдХреЗрдЬ) рдХреЛ %GOPATH%/pkg рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХреЗ рдЕрдВрддрд░реНрдЧрдд рд╕рдВрдЧреНрд░рд╣реАрдд рдСрдмреНрдЬреЗрдХреНрдЯ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдХрдирд╡рд░реНрдЯ рдХрд░рддрд╛ рд╣реИ;
  • рд▓рд┐рдВрдХрд░ рдЬреЛ %GOPATH%/pkg рдХреЗ рдЕрдВрддрд░реНрдЧрдд рдСрдмреНрдЬреЗрдХреНрдЯ рдлрд╝рд╛рдЗрд▓реЛрдВ рд╕реЗ рдЕрдВрддрд┐рдо .exe рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рддрд╛ рд╣реИред

рдХрднреА-рдХрднреА (рдЬрдм рдЖрдкрдХрд╛ рдХреЛрдИ рдкреИрдХреЗрдЬ рд╕реАрдЬреАрдУ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ), рдЧреЛ рд▓рд┐рдВрдХрд░ рдмрд╛рд╣рд░реА рд▓рд┐рдВрдХрд░ рдХреЛ рд╕реА рдореЗрдВ рд▓рд╛рдЧреВ рдХрд┐рдП рдЧрдП рд╕рднреА рдмрд┐рдЯреНрд╕ рдХреЛ рдЦреЛрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдХреЙрд▓ рдХрд░рддрд╛ рд╣реИред рдХрд▓реНрдкрдирд╛ рдХреАрдЬрд┐рдП рдХрд┐ рдЖрдк рдЕрдкрдиреЗ рд╕реА рдХреЛрдб рд╕реЗ рдкреНрд░рд┐рдВрдЯрдл рдХреЛ рдХреЙрд▓ рдХрд░рддреЗ рд╣реИрдВред рд╕реА рдкреНрд░рд┐рдВрдЯрдл рд╕рдВрдХрд▓рд┐рдд рдХреЛрдб рдХреЛ рдЧреЛ рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рд▓реЗрдХрд┐рди рдЧреЛ рд▓рд┐рдВрдХрд░ рдХреЛ рдпрд╣ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рдЗрд╕реЗ рдХрд╣рд╛рдВ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рд╣реИред рддреЛ рдЧреЛ рд▓рд┐рдВрдХрд░ рдЙрд╕ рдХреЛрдб рдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╛рд╣рд░реА рд▓рд┐рдВрдХрд░ рдХреЛ рдХреЙрд▓ рдХрд░рддрд╛ рд╣реИред

рдХрд░реЗрдВрдЯ рдЧреЛ рд╕реА рдХреЛрдб рдХреЛ рд╕рдВрдХрд▓рд┐рдд рдФрд░ рд▓рд┐рдВрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬреАрд╕реАрд╕реА рдХрдВрдкрд╛рдЗрд▓рд░/рд▓рд┐рдВрдХрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ (рд╣рдо рдорд┐рдВрдЧрд╡ рдЬреАрд╕реАрд╕реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ)ред рдпрджрд┐ рдЖрдк рдЕрдкрдиреЗ рд╕реА рдХреЛрдб рдХреЛ рд╡рд┐рднрд┐рдиреНрди рдХрдВрдкрд╛рдЗрд▓рд░ (рдорд╛рдЗрдХреНрд░реЛрд╕реЙрдлреНрдЯ рджреНрд╡рд╛рд░рд╛) рдХреЗ рд╕рд╛рде рд╕рдВрдХрд▓рд┐рдд рдХрд░рдиреЗ рдЬрд╛ рд░рд╣реЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рдХрдВрдкрд╛рдЗрд▓рд░ рджреНрд╡рд╛рд░рд╛ рдмрдирд╛рдП рдЧрдП рд╕рднреА рдмрд╛рд╣рд░реА рд╕реА рдХреЛрдб рдХреЛ рдЦреЛрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдВрд╡рд╛рджрджрд╛рддрд╛ рд▓рд┐рдВрдХрд░ (рдорд╛рдЗрдХреНрд░реЛрд╕реЙрдлреНрдЯ рджреНрд╡рд╛рд░рд╛) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред

рддреЛ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ, рдореИрдВ рдЬреАрд╕реАрд╕реА рд▓рд┐рдВрдХрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рд╕реБрдЭрд╛рд╡ рджреЗрдиреЗ рдореЗрдВ рдЧрд▓рдд рдерд╛ред рд╕рд╛рдорд╛рдиреНрдп рдкрд░рд┐рджреГрд╢реНрдп рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдорд╛рдЗрдХреНрд░реЛрд╕реЙрдлреНрдЯ рдХрдВрдкрд╛рдЗрд▓рд░ рдФрд░ рд▓рд┐рдВрдХрд░ рджреЛрдиреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рд╣рдореЗрдВ рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдирд╛ рд╣реЛрдЧрд╛ рдХрд┐ Microsoft рд▓рд┐рдВрдХрд░ рдХреЛ рдЗрдирдкреБрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рдХреНрдпрд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ рдЙрд╕рдХрд╛ рдорд┐рд▓рд╛рди рдХрд░реЗрдВред

рдпрджрд┐ рдЖрдкрдХреЗ рд╕реА рдХреЛрдб рдореЗрдВ рдХреЛрдИ рдмрд╛рд╣рд░реА рдХреЛрдб рдирд╣реАрдВ рд╣реИ, рддреЛ рдЖрдк рдПрдорд╕реА рд▓рд┐рдВрдХрд░ рдХреЗ рдмрд┐рдирд╛ рджреВрд░ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред рдХреГрдкрдпрд╛ рдХреБрдЫ рд╕рдЪрдореБрдЪ рд╕рд░рд▓ рд╕реА рдкреНрд░реЛрдЧреНрд░рд╛рдо рдЖрдЬрд╝рдорд╛рдПрдВ (рдЬреИрд╕реЗ рд╡рд╣ рдЬреЛ 2 рдкреВрд░реНрдгрд╛рдВрдХ рдпрд╛ рдХреБрдЫ рдЬреЛрдбрд╝рддрд╛ рд╣реИ)ред рдЬреИрд╕рд╛ рдХрд┐ рдЖрдкрдиреЗ рдКрдкрд░ рд╡рд░реНрдгрд┐рдд рдХрд┐рдпрд╛ рд╣реИ, рдпрд╣ рдареАрдХ рдХрд╛рдо рдХрд░ рд╕рдХрддрд╛ рд╣реИред

рдПрд▓реЗрдХреНрд╕

рд╕рдВрднрд╡рддрдГ stdio рд╕реАрдорд╛ рд╕реЗ рдмрд╛рд╣рд░ рд╣реИ?

рдореБрдЭреЗ рд╕рдВрджреЗрд╣ рд╣реИ рдХрд┐ рдЖрдкрдХреЛ рдЙрд╕ рдХреЛрдб рдХреЛ рдЦреЛрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдорд╛рдЗрдХреНрд░реЛрд╕реЙрдлреНрдЯ рд▓рд┐рдВрдХрд░ рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

рдПрд▓реЗрдХреНрд╕

рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рд▓реЗрдХрд┐рди

objconv -felf hello.obj hello.syso

рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдЖрдкрдХреЛ рдпреЛрдЧрд┐рдиреА рдХреЗ рдмрдЬрд╛рдп рддрд╛рдмреВрдд рдпрд╛ рдУрдПрдордПрдл рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рдиреА рдЪрд╛рд╣рд┐рдП?

рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдЖрдкрдХреЛ рдпреЛрдЧрд┐рдиреА рдХреЗ рдмрдЬрд╛рдп рддрд╛рдмреВрдд рдпрд╛ рдУрдПрдордПрдл рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рдиреА рдЪрд╛рд╣рд┐рдП?

@xoviat рд╣рд╛рдБ, рдЖрдкрдХреЛ .obj рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдпреЛрдЧрд┐рдиреА рдореЗрдВ рдирд╣реАрдВ рдмрджрд▓рдирд╛ рдЪрд╛рд╣рд┐рдП, gcc рдХрд╛ Windows рд╕рдВрд╕реНрдХрд░рдг рдХрд┐рд╕реА рдЕрдиреНрдп Windows рдХрдВрдкрд╛рдЗрд▓рд░ рдХреА рддрд░рд╣ рд╣реА pe/coff рдлрд╝рд╛рдЗрд▓реЗрдВ рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реИред

рдПрд▓реЗрдХреНрд╕

рдЧреЛ рд▓рд┐рдВрдХрд░ рд╕реА рдореЗрдВ рд▓рд╛рдЧреВ рд╕рднреА рдмрд┐рдЯреНрд╕ рдХреЛ рдЦреЛрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╛рд╣рд░реА рд▓рд┐рдВрдХрд░ рдХреЛ рдХреЙрд▓ рдХрд░рддрд╛ рд╣реИред

рд╡рд┐рд╢рд┐рд╖реНрдЯ рдХрдорд╛рдВрдб рдХрд╛ рдХреНрдпрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ? рдЕрдЧрд░ рдореБрдЭреЗ рдорд┐рдВрдЧрд╡ рдХрдорд╛рдВрдб рдкрддрд╛ рд╣реИ, рддреЛ рд╢рд╛рдпрдж рдореИрдВ рдПрдХ рдлрд╛рдЗрд▓ рддреБрд▓рдирд╛ рдкрде рдкрд░ рдЖрдЧреЗ рдмрдврд╝ рд╕рдХрддрд╛ рд╣реВрдВ рддрд╛рдХрд┐ рдПрдордПрд╕рд╡реАрд╕реА рдХреЛ рдорд┐рдВрдЧрд╡ рдбрд╛рд▓рдиреЗ рд╕реЗ рдореЗрд▓ рдЦрд╛рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХреЗред

рдЖрдк go build -ldflags=-v рдЪрд▓рд╛рдХрд░ рд╕рдЯреАрдХ рдЯрд┐рдкреНрдкрдгреА рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВред

рдареАрдХ рд╣реИ, рддреЛ рдореИрдВ рдХреНрдпрд╛ рдмрддрд╛ рд╕рдХрддрд╛ рд╣реВрдБ:

ld (link -> go.obj) + (gcc -> obj files) ==> a.out.exe

рдРрд╕рд╛ рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИ рдХрд┐ рдЧреЛ рдЗрди рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рдЕрд╕реНрдерд╛рдпреА рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдмрдирд╛рддрд╛ рд╣реИред рдХреНрдпрд╛ рдЕрд╕реНрдерд╛рдпреА рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХреЛ рд╕рдВрд░рдХреНрд╖рд┐рдд рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рд╣реИ рддрд╛рдХрд┐ рдореИрдВ рдЗрд╕рдХреА рд╕рд╛рдордЧреНрд░реА рдХрд╛ рдирд┐рд░реАрдХреНрд╖рдг рдХрд░ рд╕рдХреВрдВ?

рдХреЛрд╢рд┐рд╢ рдХрд░реЗрдВ go build -work

WORK=C:\Users\mattn\AppData\Local\Temp\go-build566171254

рдЗрд╕ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рдСрдмреНрдЬреЗрдХреНрдЯ рдлрд╝рд╛рдЗрд▓реЗрдВ рд╢реЗрд╖ рд╣реИрдВред

-work рд╡рд┐рдХрд▓реНрдк рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд▓рд┐рдВрдХрд░ рджреНрд╡рд╛рд░рд╛ рдмрдирд╛рдИ рдЧрдИ рдЕрд╕реНрдерд╛рдпреА рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рд╕рдВрд░рдХреНрд╖рд┐рдд рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ред рдлрд┐рд▓рд╣рд╛рд▓ рдЖрдкрдХреЛ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХреЛ рди рд╣рдЯрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд▓рд┐рдВрдХрд░ рд╕реНрд░реЛрддреЛрдВ рдХреЛ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рд╣рдореЗрдВ рд╢рд╛рдпрдж рдЙрд╕рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рдХрд▓реНрдк рдЬреЛрдбрд╝рдирд╛ рдЪрд╛рд╣рд┐рдП, рдПрдХ рддрд░рд╣ рд╕реЗ рдпрд╛ рдХреЛрдИ рдЕрдиреНрдпред

рдлрд┐рд▓рд╣рд╛рд▓ рдЖрдкрдХреЛ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХреЛ рди рд╣рдЯрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд▓рд┐рдВрдХрд░ рд╕реНрд░реЛрддреЛрдВ рдХреЛ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред

рдпрджрд┐ рдЖрдкрдХреЛ рдХреЛрдИ рдЖрдкрддреНрддрд┐ рдирд╣реАрдВ рд╣реИ, рддреЛ рдореИрдВ рдЗрд╕реЗ HEAD рдореЗрдВ рд▓рд╛рдЧреВ рд╣реЛрдиреЗ рддрдХ рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░рдиреЗ рдЬрд╛ рд░рд╣рд╛ рд╣реВрдБ рддрд╛рдХрд┐ рдореБрдЭреЗ рджреЛрд╣рд░рд╛рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдХрд╛рд░реНрдп рди рдХрд░рдиреЗ рдкрдбрд╝реЗрдВред

рдХреНрдпрд╛ рдЕрд╕реНрдерд╛рдпреА рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХреЛ рд╕рдВрд░рдХреНрд╖рд┐рдд рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рд╣реИ рддрд╛рдХрд┐ рдореИрдВ рдЗрд╕рдХреА рд╕рд╛рдордЧреНрд░реА рдХрд╛ рдирд┐рд░реАрдХреНрд╖рдг рдХрд░ рд╕рдХреВрдВ?

cmd/link рдкреНрд░реЛрдЧреНрд░рд╛рдо рдореЗрдВ рдЙрд╕рдХреЗ рд▓рд┐рдП -tmpdir рдЭрдВрдбрд╛ рд╣реИред рдЖрдк рдЗрд╕реЗ рдЗрд╕ рддрд░рд╣ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

c:\Users\Alex\dev\src\a>dir
 Volume in drive C has no label.
 Volume Serial Number is 9012-A870

 Directory of c:\Users\Alex\dev\src\a

06/08/2017  02:02 PM    <DIR>          .
06/08/2017  02:02 PM    <DIR>          ..
06/08/2017  02:02 PM                77 main.go
               1 File(s)             77 bytes
               2 Dir(s)  430,809,088,000 bytes free

c:\Users\Alex\dev\src\a>type main.go
package main

import "fmt"
import "C"

func main() {
        fmt.Println("Hello")
}

c:\Users\Alex\dev\src\a>go build -o a.exe -ldflags="-tmpdir=c:\Users\Alex\dev\src\a" main.go

c:\Users\Alex\dev\src\a>dir
 Volume in drive C has no label.
 Volume Serial Number is 9012-A870

 Directory of c:\Users\Alex\dev\src\a

06/08/2017  02:02 PM    <DIR>          .
06/08/2017  02:02 PM    <DIR>          ..
06/08/2017  02:02 PM             2,055 000000.o
06/08/2017  02:02 PM            22,376 000001.o
06/08/2017  02:02 PM         2,017,382 a.exe
06/08/2017  02:02 PM               135 fix_debug_gdb_scripts.ld
06/08/2017  02:02 PM         2,402,226 go.o
06/08/2017  02:02 PM                77 main.go
06/08/2017  02:02 PM                24 trivial.c
               7 File(s)      4,444,275 bytes
               2 Dir(s)  430,804,631,552 bytes free

c:\Users\Alex\dev\src\a>

рдПрд▓реЗрдХреНрд╕

рдпрд╣ рд╕рд┐рд░реНрдл рдореЗрд░реЗ рдЕрдкрдиреЗ рд╕рдВрджрд░реНрдн рдХреЗ рд▓рд┐рдП рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕реЗ msvc рдкрд░ рдкреЛрд░реНрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:

_cgo_sys_thread_start(ThreadStart *ts)
{
    uintptr_t thandle;

    thandle = _beginthread(threadentry, 0, ts);
    if(thandle == -1) {
        fprintf(stderr, "runtime: failed to create new OS thread (%d)\n", errno);
        abort();
    }
}

static void
threadentry(void *v)
{
    ThreadStart ts;

    ts = *(ThreadStart*)v;
    free(v);

    ts.g->stackhi = (uintptr)&ts;
    ts.g->stacklo = (uintptr)&ts - STACKSIZE + 8*1024;

    /*
     * Set specific keys in thread local storage.
     */
    __asm {
          "movq %0, %%gs:0x28\n"    // MOVL tls0, 0x28(GS)
          "movq %%gs:0x28, %%rax\n" // MOVQ 0x28(GS), tmp
          "movq %1, 0(%%rax)\n" // MOVQ g, 0(GS)
          :: "r"(ts.tls), "r"(ts.g) : "%rax"
    }

    crosscall_amd64(ts.fn);
}

рдореИрдВ рдЗрд╕ рдХрд╛рд░реНрдп рдХреЛ рдкреВрд░рд╛ рдХрд░рдиреЗ рдореЗрдВ рд▓рдЧрдиреЗ рд╡рд╛рд▓реЗ рд╕рдордп рдХреЛ рдХрдо рдирд╣реАрдВ рдЖрдВрдХреВрдВрдЧрд╛ рдХреНрдпреЛрдВрдХрд┐ рдореИрдВ рдЕрд╕реЗрдВрдмрд▓реА рд╕реЗ рдмрд┐рд▓реНрдХреБрд▓ рднреА рдкрд░рд┐рдЪрд┐рдд рдирд╣реАрдВ рд╣реВрдВред

  • [x] рд╕рдордЭреЗрдВ рдХрд┐ рд╡рд┐рдзрд╛рдирд╕рднрд╛ рдХреНрдпрд╛ рдХрд░рддреА рд╣реИ
  • [x] рдкреЛрд░реНрдЯ рдЯреВ MSVC рдЕрд╕реЗрдВрдмрд▓реА
  • [x] _beginthread рдмрдирд╛рдо CreateThread рдХреЛ рд╕рдордЭреЗрдВ
  • [x] CreateThread рдкрд░ рд╕реНрд╡рд┐рдЪ рдХрд░реЗрдВ

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд рдкреНрд░рддреАрдХ:

  • [x] рдЯрд╛рдЗрдордмреАрдЧрд┐рдирдкреАрд░рд┐рдпрдб -> winmm.lib
  • [x] рд╕рдордпрд╢реБрд░реБрдЖрддрдЕрд╡рдзрд┐
  • [x] WSAGetOverlappedResult -> Ws2_32.lib
  • [x] WSAGetOverlappedResult
  • [рдПрдХреНрд╕] _cgo_18b6f6fc815b_Cfunc_hello
  • [x] x_cgo_init -> msvc_windows_amd64.c
  • [x] x_cgo_thread_start -> msvc_windows_amd64.c
  • [x] x_cgo_sys_thread_create -> msvc_windows_amd64.c
  • [x] x_cgo_notify_runtime_init_done -> gcc_libinit_windows.c
  • [x] x_cgo_set_context_function -> gcc_libinit_windows.c

рдареАрдХ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЕрдкреЗрдХреНрд╖рд╛ рд╕реЗ рдЕрдзрд┐рдХ рддреЗрдЬрд╝реА рд╕реЗ рдпрд╣рд╛рдБ рдЖрдЧреЗ рдмрдврд╝ рд░рд╣рд╛ рд╣реВрдБ!

рд╕рднреА: asm_amd64.s рдЧреЛ рдХреЗ рдЕрд╕реЗрдВрдмрд▓рд░ (рд╡рд┐рд╖рдо рдЕрд╕реЗрдВрдмрд▓реА рдХреЗ рд╕рд╛рде) рдпрд╛ рдЬреАрд╕реАрд╕реА рдХреЗ рдЕрд╕реЗрдВрдмрд▓рд░ рджреНрд╡рд╛рд░рд╛ рдЗрдХрдЯреНрдард╛ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ?

рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЬреАрд╕реАрд╕реА рдЗрд╕реЗ рдЗрдХрдЯреНрдард╛ рдирд╣реАрдВ рдХрд░реЗрдЧрд╛, рдЬрд┐рд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдпрд╣ рд╢рд╛рдпрдж рдЕрд╕реЗрдВрдмрд▓реА рд╣реИред рдФрд░ рдлрд┐рд░ рд╕рд╡рд╛рд▓ рдмрди рдЬрд╛рддрд╛ рд╣реИ: рдЗрд╕реЗ рдЧреЛ рдЕрд╕реЗрдВрдмрд▓рд░ рдХреЗ рд╕рд╛рде рдХрд┐рд╕реА рдСрдмреНрдЬреЗрдХреНрдЯ рдореЗрдВ рдХреИрд╕реЗ рдЗрдХрдЯреНрдард╛ рдХрд┐рдпрд╛ рдЬрд╛рдПред

рдЖрд╢рдп рдпрд╣ рд╣реИ рдХрд┐ рд░рдирдЯрд╛рдЗрдо/cgo/asm_amd64.s рдПрдХ рдЧреЛ рдСрдмреНрдЬреЗрдХреНрдЯ рдореЗрдВ рдЕрд╕реЗрдВрдмрд▓ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рдлрд┐рд░ cmd/рд▓рд┐рдВрдХ рдЗрд╕реЗ рдЕрдиреНрдп рд╕рднреА рдЧреЛ рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдХреЗ рд╕рд╛рде рдПрдХ рд╕рд┐рдВрдЧрд▓ рд╕рд┐рд╕реНрдЯрдо рдСрдмреНрдЬреЗрдХреНрдЯ рдореЗрдВ рдЬреЛрдбрд╝рддрд╛ рд╣реИ, рдФрд░ рдлрд┐рд░ рд╕рд┐рд╕реНрдЯрдо рд▓рд┐рдВрдХрд░ рдЙрд╕ рд╕рд┐рдВрдЧрд▓ рд╕рд┐рд╕реНрдЯрдо рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рдФрд░ рд╕рднреА рдХреЛ рд▓рд┐рдВрдХ рдХрд░рддрд╛ рд╣реИред рдЕрдВрддрд┐рдо рдХрд╛рд░реНрдпрдХреНрд░рдо рдореЗрдВ cgo рдирд┐рд░реНрднрд░рддрд╛ред

рдХреНрдпрд╛ рдкрд░реАрдХреНрд╖рдг рдЙрджреНрджреЗрд╢реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдЙрд╕ рд╡рд╕реНрддреБ рдХреЛ рдЕрднреА рдЗрдХрдЯреНрдард╛ рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рд╣реИ? рдЬрд╛рдиреЗ рдХреЗ рдЕрд▓рд╛рд╡рд╛ gcc -c asm_amd64.s ?

рдЖрд╢рдп рдпрд╣ рд╣реИ рдХрд┐ рд░рдирдЯрд╛рдЗрдо/cgo/asm_amd64.s рдПрдХ рдЧреЛ рдСрдмреНрдЬреЗрдХреНрдЯ рдореЗрдВ рдЕрд╕реЗрдВрдмрд▓ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рдлрд┐рд░ cmd/рд▓рд┐рдВрдХ рдЗрд╕реЗ рдЕрдиреНрдп рд╕рднреА рдЧреЛ рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдХреЗ рд╕рд╛рде рдПрдХ рд╕рд┐рдВрдЧрд▓ рд╕рд┐рд╕реНрдЯрдо рдСрдмреНрдЬреЗрдХреНрдЯ рдореЗрдВ рдЬреЛрдбрд╝рддрд╛ рд╣реИ, рдФрд░ рдлрд┐рд░ рд╕рд┐рд╕реНрдЯрдо рд▓рд┐рдВрдХрд░ рдЙрд╕ рд╕рд┐рдВрдЧрд▓ рд╕рд┐рд╕реНрдЯрдо рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рдФрд░ рд╕рднреА рдХреЛ рд▓рд┐рдВрдХ рдХрд░рддрд╛ рд╣реИред рдЕрдВрддрд┐рдо рдХрд╛рд░реНрдпрдХреНрд░рдо рдореЗрдВ cgo рдирд┐рд░реНрднрд░рддрд╛ред

рдЕрдм рддрдХ рдореБрдЭреЗ рдпреЗ рд╡рд╕реНрддреБрдПрдВ рдорд┐рд▓реА рд╣реИрдВ:

  • go.o : рдЬрд╛рд╣рд┐рд░ рддреМрд░ рдкрд░ рдЧреЛ рдЯреВрд▓рдЪреИрди рд╕реЗ
  • _cgo_.o : рдЬреАрд╕реАрд╕реА рджреНрд╡рд╛рд░рд╛ рдЙрддреНрдкрдиреНрди, рдЕрдиреБрдкрдпреЛрдЧреА
  • 000000.o : рдЬреАрд╕реАрд╕реА рджреНрд╡рд╛рд░рд╛ рдЙрддреНрдкрдиреНрди, рдЕрдиреБрдкрдпреЛрдЧреА
  • 000001.o : рдЕрджреНрдпрддрди: рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЧреЛ рд▓рд┐рдВрдХрд░ рджреНрд╡рд╛рд░рд╛ рдЙрддреНрдкрдиреНрди, рд▓реЗрдХрд┐рди рдЗрд╕рдореЗрдВ рдЬреАрд╕реАрд╕реА рдкреНрд░рддреАрдХ рд╢рд╛рдорд┐рд▓ рд╣реИрдВред рдЕрдиреБрдкрдпреЛрдЧреАред

go.o рд╕рдмрд╕реЗ рдмрдбрд╝реА рд╡рд╕реНрддреБ рд╣реИред

@ianlancetaylor

рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдЖрдкрдиреЗ рдЬреЛ рдХрд╣рд╛ рд╡рд╣ рд╕рд╣реА рд╣реИред crosscall_amd64 000001.o рдореЗрдВ рд╕реНрдерд┐рдд рд╣реИ, рд▓реЗрдХрд┐рди рдЙрд╕ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ "рдСрд▓ рдЧреЛ тАЛтАЛрдХреЛрдб" рдирд╣реАрдВ рд╣реИ:

000001.o:     file format pe-x86-64

SYMBOL TABLE:
[201](sec  1)(fl 0x00)(ty  20)(scl   2) (nx 0) 0x0000000000000440 crosscall_amd64
[206](sec  0)(fl 0x00)(ty  20)(scl   2) (nx 0) 0x0000000000000000 free

рдпрд╣ рдлрд╝рд╛рдЗрд▓ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдЬреАрд╕реАрд╕реА рджреНрд╡рд╛рд░рд╛ рдЙрддреНрдкрдиреНрди рдХреА рдЧрдИ рд╣реИ, рдЬреЛ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рдмрд╣реБрдд рджреЗрд░ рд╣реЛ рдЪреБрдХреА рд╣реИред

рдХреНрдпрд╛ рдкрд░реАрдХреНрд╖рдг рдЙрджреНрджреЗрд╢реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдЙрд╕ рд╡рд╕реНрддреБ рдХреЛ рдЕрднреА рдЗрдХрдЯреНрдард╛ рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рд╣реИ? gcc -c asm_amd64.s рдХреА рддрд░рд╣ рдЧреЛ рдХреЗ рдЕрд▓рд╛рд╡рд╛?

asm_amd64.s рд░рдирдЯрд╛рдЗрдо рдкреИрдХреЗрдЬ рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рд╣реИред рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдХреИрд╕реЗ "рдЧреЛ рдмрд┐рд▓реНрдб" рдХрдорд╛рдВрдб asm_amd64.s рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рдЬреИрд╕реЗ:

$ touch asm_amd64.s
$ GOOS=windows go build -x runtime 2>&1 | grep asm_amd64.s
/home/a/go/pkg/tool/linux_amd64/asm -trimpath $WORK -I $WORK/runtime/_obj/ -I /home/a/go/pkg/include -D GOOS_windows -D GOARCH_amd64 -o $WORK/runtime/_obj/asm_amd64.o ./asm_amd64.s
$

рдПрд▓реЗрдХреНрд╕

рдзрдиреНрдпрд╡рд╛рджред

рдкреНрд░рддреАрдХ crosscall_amd64 рдлрд╝рд╛рдЗрд▓ рд░рдирдЯрд╛рдЗрдо/cgo/gcc_amd64.s рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рд╡рд╣ рдлрд╝рд╛рдЗрд▓ GCC рджреНрд╡рд╛рд░рд╛ рд╕рдВрдХрд▓рд┐рдд рдХреА рдЧрдИ рд╣реИ (рдЬреИрд╕рд╛ рдХрд┐ рд╕рднреА рд░рдирдЯрд╛рдЗрдо/cgo/gcc_* рдлрд╝рд╛рдЗрд▓реЗрдВ рд╣реИрдВ)ред рдЗрд╕рд▓рд┐рдП рдЗрд╕реЗ рдПрдХрд▓ go.o рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╕рдВрдпреЛрдЬрд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рд╕рднреА рдЧреЛ рдХреЛрдб рд╣реЛрддреЗ рд╣реИрдВред рдЬрд┐рд╕ рдлрд╝рд╛рдЗрд▓ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣рдо рдкрд╣рд▓реЗ рдмрд╛рдд рдХрд░ рд░рд╣реЗ рдереЗ, рд╡рд╣ рд░рдирдЯрд╛рдЗрдо/cgo/asm_amd64.s, рдкреНрд░рддреАрдХ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддреА рд╣реИ crosscall2 ред рдЖрдкрдХреЛ рд╡рд╣ рдЪрд┐рдиреНрд╣ go.o рдореЗрдВ рдорд┐рд▓реЗрдЧрд╛ред

рдзрдиреНрдпрд╡рд╛рджред

рдареАрдХ рд╣реИ, рдореИрдВрдиреЗ рдПрдХ рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рдХреЛ рд▓рд┐рдВрдХ рдХрд░рдиреЗ рдореЗрдВ рдХрд╛рдордпрд╛рдмреА рд╣рд╛рд╕рд┐рд▓ рдХреА рд╣реИ рдЬреЛ рдкреНрд░рд╡реЗрд╢ рдХреЗ рдЙрд▓реНрд▓рдВрдШрди рдкрд░ рджреБрд░реНрдШрдЯрдирд╛рдЧреНрд░рд╕реНрдд рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ
go.runtime.rt0_go+5F -> go.__acrt_stdio_initializer.

рдореЗрд░реЗ рдкрд╛рд╕ рдЕрднреА рдХреЗ рд▓рд┐рдП рдЗрддрдирд╛ рд╣реА рд╕рдордп рд╣реИ; рдореИрдВ рдмрд╛рдж рдореЗрдВ рдЗрд╕ рдкрд░ рд╡рд╛рдкрд╕ рдЖрдКрдВрдЧрд╛ред

@alexbrainman рдпрд╣ рд╕рд╣реА рд╣реИред

@alexbrainman рдЖрдЧреЗ рдмрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ MSVC рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред рдореБрдЭреЗ рдмрддрд╛рдПрдВ рдХрд┐ рдХреНрдпрд╛ рдЖрдкрдХреЛ рдЗрд╕рдореЗрдВ рдорджрдж рдХреА рдЬрд╝рд░реВрд░рдд рд╣реИред

рдЖрдЧреЗ рдмрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ MSVC рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред

рдореИрдВ рдЗрд╕реЗ https://www.visualstudio.com/downloads/#build -tools-for-visual-studio-2017 рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ

рдПрдХ рдмрд╛рд░ рд╕реНрдерд╛рдкрд┐рдд рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж рдореБрдЭреЗ рдХреНрдпрд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП?

рдПрд▓реЗрдХреНрд╕

рдПрдХ рдмрд╛рд░ рдЬрдм рдЖрдк рдЗрд╕реЗ рд╕реНрдерд╛рдкрд┐рдд рдХрд░ рд▓реЗрддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ "libgo" рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдЬреЛ рдХрд┐ рдЧреЛ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд╣реИред рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдлрд╛рдЗрд▓реЛрдВ рдХреЛ cgo рдлреЛрд▓реНрдбрд░ рд╕реЗ рдХреЙрдкреА рдХрд░реЗрдВ:

  • gcc_amd64.S
  • gcc_fatalf.c
  • gcc_libinit_windows.c
  • gcc_util.c
  • gcc_windows_amd64.c
  • libcgo.h

MSVC рдХреЗ рд╕рд╛рде рд╕рдВрдЧрдд рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рд╣рдореЗрдВ gcc_windows_amd64.c рд╕рдорд╛рдпреЛрдЬрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░реЗрдВ:

static void
threadentry(void *v)
{
    fprintf(stderr, "threadentry: started");
    abort();

    ThreadStart ts;

    ts = *(ThreadStart*)v;
    free(v);

    ts.g->stackhi = (uintptr)&ts;
    ts.g->stacklo = (uintptr)&ts - STACKSIZE + 8*1024;

    /*
     * Set specific keys in thread local storage.
     */
    __writegsqword(0x28, (unsigned long long) ts.tls);
    *(void **)ts.tls = (void *) ts.g;

    crosscall_amd64(ts.fn);
}

"build.bat" рдирд╛рдордХ рдЗрди рд╕рднреА рдлрд╛рдЗрд▓реЛрдВ рдХреЗ рд╕рд╛рде рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдПрдХ рдирдИ рдлрд╛рдЗрд▓ рдмрдирд╛рдПрдВ:

REM TMP use gcc for assmebly file, in future port to ml64
gcc -c gcc_amd64.S
cl -c gcc_fatalf.c
cl -c gcc_libinit_windows.c
cl -c gcc_windows_amd64.c
cl -c gcc_util.c

ren gcc_amd64.o gcc_amd64.obj

lib gcc_amd64.obj gcc_fatalf.obj gcc_libinit_windows.obj ^
    gcc_windows_amd64.obj gcc_util.obj ^
    /OUT:libgo.lib

рдЬрдм рдЖрдкрдХреЗ рдкрд╛рд╕ рдЕрдиреБрд░реЛрдз рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдлрд╝реЛрд▓реНрдбрд░ рд╕рдВрд░рдЪрд┐рдд рд╣реЛ рддреЛ рдореБрдЭреЗ рдмрддрд╛рдПрдВред

рд╡реИрд╕реЗ, рдЗрд╕ рдкрд░ рдХрд╛рдо рдХрд░рдиреЗ рдФрд░ рдЬрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред рдЖрдк рд▓реЛрдЧреЛрдВ рдиреЗ рд╕рдЪрдореБрдЪ рдЬрд╛рджреБрдИ рднрд╛рд╖рд╛ рдмрдирд╛рдИ рд╣реИред

рдЬрдм рдЖрдкрдХреЗ рдкрд╛рд╕ рдЕрдиреБрд░реЛрдз рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдлрд╝реЛрд▓реНрдбрд░ рд╕рдВрд░рдЪрд┐рдд рд╣реЛ рддреЛ рдореБрдЭреЗ рдмрддрд╛рдПрдВред

рдЬреИрд╕рд╛ рдХрд┐ рдЖрдкрдиреЗ рдпрд╣рд╛рдВ рдмрддрд╛рдпрд╛ рд╣реИ, рдореИрдВ libgo.lib рдмрдирд╛рдиреЗ рдореЗрдВ рдХрд╛рдордпрд╛рдм рд░рд╣рд╛ https://github.com/golang/go/issues/20982#issuecomment -327365063
рдореБрдЭреЗ рдЖрдЧреЗ рдХреНрдпрд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдпреЗ?

рдПрд▓реЗрдХреНрд╕

рдареАрдХ рд╣реИ, рддреЛ рдЕрдм рд╣рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдлрд╛рдЗрд▓реЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:

  • libgo.lib
  • рдЪрд┐рдкрдЪрд┐рдкрд╛ рдкрджрд╛рд░реНрде
  • hello.cgo2.o
  • рдирдорд╕реНрддреЗ рд╕реА

hello.c рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╣реИ:

#include <stdio.h>

extern void hello()
{
    printf("Hello World from C");
}

hello.cgo2.o рдФрд░ go.o , рдЖрдкрдХреЛ рдирд┐рдореНрди рдлрд╝рд╛рдЗрд▓ рд╕реЗ рд╢реБрд░реБрдЖрдд рдХрд░рдиреА рд╣реЛрдЧреА:

package main

/*
    extern void hello();
*/
import "C"
import "fmt"

func main() {
    fmt.Println("Hello from Go!")
    C.hello()
}

"рд╣реИрд▓реЛ.рдЧреЛ" рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ

рдПрдХ рдкреЙрд╡рд░рд╢реЗрд▓ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕реЗрдЯ рдХрд░реЗрдВ рдЬреЛ рд▓рдЧрд╛рддрд╛рд░ рдлрд╛рдЗрд▓реЛрдВ рдХреЛ $ env:TMP рд╕реЗ рдХреЙрдкреА рдХрд░рддреА рд╣реИ:

while ($true) {  cp -r $env:TMP\go-* C:\Users\User\Downloads }

рдлрд┐рд░ рдлреЛрд▓реНрдбрд░ рдореЗрдВ go build рд╕рд╛рде hello.c рдФрд░ hello.go рдЪрд▓рд╛рдПрдВред рдЖрдкрдХреЛ рдЖрд╡рд╢реНрдпрдХ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдЙрд╕ рд╕реНрдерд╛рди рд╕реЗ рдкреБрдирд░реНрдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдЬрд╣рд╛рдВ рдЙрдиреНрд╣реЗрдВ рдХреЙрдкреА рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред

рдПрдХ рдмрд╛рд░ рдЬрдм рдЖрдкрдХреЗ рдкрд╛рд╕ рдКрдкрд░ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдлрд╛рдЗрд▓реЗрдВ рд╣реЛрдВ, рддреЛ рдЖрдк рдЗрд╕рдХреЗ рд╕рд╛рде рдирд┐рд░реНрдорд╛рдг рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

cl libgo.lib go.o hello.cgo2.o hello.c Ws2_32.lib Winmm.lib -link /DEBUG:FULL

рдЕрдЧрд░ рдЖрдкрдХрд╛ рдХреЛрдИ рдкреНрд░рд╢реНрди рд╣реИрдВ, рддреЛ рдореБрдЭреЗ рд╕реЗ рдкреВрдЫреЗрдВред

cl libgo.lib go.o hello.cgo2.o hello.c Ws2_32.lib Winmm.lib -рд▓рд┐рдВрдХ / рдбреАрдмрдЧ: рдкреВрд░реНрдг

рдпрд╣ go.exe рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдирд╣реАрдВ рдЪрд▓рддрд╛ рд╣реИред рдореБрдЭреЗ рд╡рд╣рд╛рдВ рдХреЛрдИ рд╕рдордЭрджрд╛рд░ рдПрдПрд╕рдПрдо рдХреЛрдб рдирд╣реАрдВ рджрд┐рдЦ рд░рд╣рд╛ рд╣реИред рдкрд╣рд▓рд╛ рдирд┐рд░реНрджреЗрд╢ рдмрд╕ рдХрд╣реАрдВ рдирд╣реАрдВ рдХреВрджреЛред рдпрд╣ рд╕рд┐рд░реНрдл рдПрдХ рдЧрдбрд╝рдмрдбрд╝ рд╣реИред

рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдЖрдкрдХреЛ рдХреБрдЫ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕рд░рд▓ рд╕реЗ рд╢реБрд░реВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдПрдХрд▓ рдПрдПрд╕рдПрдо рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд╕рд╛рде рдПрдХ рдПрдПрд╕рдПрдо рдлрд╝рд╛рдЗрд▓ (рдЧреЛ рдПрдПрд╕рдПрдо рдлрд╝рд╛рдЗрд▓) рд▓рд┐рдЦреЗрдВ рдЬреЛ "рдЖрдИрдПрдирдЯреА $ 3" тАЛтАЛрдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЙрд╕рдХреЗ рдкрд╛рд╕ рдХреБрдЫ рднреА рдирд╣реАрдВ рд╣реИред рдФрд░ рдЗрд╕рдореЗрдВ рд╕реЗ рдПрдХ рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рдкреНрд░реЛрдЧреНрд░рд╛рдо рдмрдирд╛рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВ - рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЛ рдЖрдкрдХреЗ рдХрд╛рд░реНрдп рдХреЛ рдмрд╣реБрдд рд╢реБрд░реБрдЖрдд рдореЗрдВ рдЪрд▓рд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред

рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕реЗ рдкрд╣рд▓реЗ рдЧреЛ рдЯреВрд▓реНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдмрдирд╛рдПрдВ (рдФрд░ рдпрджрд┐ рдЖрд╡рд╢реНрдпрдХ рд╣реЛ рддреЛ рдЬреАрд╕реАрд╕реА рдХрд╛ рднреА рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ), рдФрд░ рдлрд┐рд░ рдХреЛрд╢рд┐рд╢ рдХрд░реЗрдВ рдФрд░ рдПрдордПрд╕рд╡реАрд╕реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдРрд╕рд╛ рд╣реА рдХрд░реЗрдВред

рдПрд▓реЗрдХреНрд╕

рдПрд▓реЗрдХреНрд╕, рдЖрдкрдХреА рдорджрдж рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред рдореИрдВ рдЙрд╕ рдкрд░ рдХрд╛рдо рдХрд░реВрдВрдЧрд╛ред

рдореИрдВ рдЗрди рджреЛ рд▓реЗрдЦреЛрдВ рдХреЛ рдЕрдкрдиреЗ рд╕рдВрджрд░реНрдн рдХреЗ рд▓рд┐рдП рдпрд╣рд╛рдБ рд╕рдВрд▓рдЧреНрди рдХрд░рдиреЗ рдЬрд╛ рд░рд╣рд╛ рд╣реВрдБред рдЕрдиреНрдпрдерд╛, рдореЗрд░реЗ рдкрд╛рд╕ рдХреЛрдИ рдФрд░ рдЕрдкрдбреЗрдЯ рдирд╣реАрдВ рд╣реИред

рдореБрдЭреЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрдХ рдХрд╛рдлреА рдЬрдЯрд┐рд▓ рдЧреЛ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИ рдЬреЛ рдХреЗрд╡рд▓ рдПрдордПрд╕рд╡реАрд╕реА рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рд╣реИ рдХрд┐ рд╡реИрдирд┐рд▓рд╛ msvc рд▓рд┐рдВрдХрд░ рдФрд░ llvm-lld рджреЛрдиреЛрдВ рдиреЗ .bss рд╕реЗрдХреНрд╢рди рдХреЛ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рд╣реИрдВрдбрд▓ рдирд╣реАрдВ рдХрд┐рдпрд╛ред

рдПрдХ рдмрд╛рд░ рдЬрдм рдореИрдВрдиреЗ рд▓рд┐рдВрдХрд░ рдХреЛ рдкреИрдЪ рдХрд░ рджрд┐рдпрд╛ рддреЛ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдЪрд▓ рд╕рдХрддрд╛ рд╣реИред

рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ go build рдЯреВрдЯ рдЬрд╛рддрд╛ рд╣реИ рдЬрдм рдпрд╣ _cgo_.o / _all.o рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реИред рдХреНрдпрд╛ рд╕реАрдЬреАрдУ рдореЗрдВ рдЗрди рджреЛ рдлрд╛рдЗрд▓реЛрдВ рдХреЛ рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХреЗ рдкреАрдЫреЗ рддрд░реНрдХреЛрдВ рдкрд░ рдХреБрдЫ рдкреНрд░рдХрд╛рд╢ рдбрд╛рд▓рдирд╛ рд╕рдВрднрд╡ рд╣реИ?

cgo рдХреЛ рд╕реАрдзреЗ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдк go tool cgo рдЪрд▓рд╛ рд╕рдХрддреЗ рд╣реИрдВред рд╕реНрд░реЛрдд рдпрд╣рд╛рдБ рд╣реИрдВ: https://github.com/golang/go/tree/master/src/cmd/cgo

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдпрджрд┐ рдЖрдк рдЗрд╕реЗ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ред рдореИрдВрдиреЗ рдЕрднреА рдЗрд╕рдХреЗ рд▓рд┐рдП рд╕рдордп рдирд╣реАрдВ рджрд┐рдпрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдХреЛрдИ рдкреНрд░рдЧрддрд┐ рдирд╣реАрдВ рд╣реБрдИ рд╣реИред рдЙрд╕рдХреЗ рд▓рд┐рдП рдорд╛рдлрд╝ рдХрд░рдирд╛ред

рдореЗрд░реЗ рдкрд╛рд╕ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдкреНрд░реЛрдЧреНрд░рд╛рдо рд╣реИрдВ рдЬреЛ рд╣рд╛рде рд╕реЗ рд╕рд┐рд▓рд╛рдИ рдХреА рдПрдХ рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдЪрд▓ рд╕рдХрддреЗ рд╣реИрдВ - рдореИрдВ рдпрд╣рд╛рдВ рдЬреЛ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рд╡рд╣ рдпрд╣ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рд╣реИ рдХрд┐ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рдХрдо рджрд░реНрджрдирд╛рдХ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд╛рдкрд╕ рдПрдХреАрдХреГрдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдпрд╛ рдирд╣реАрдВред :-)

рдпрджрд┐ рдЖрдк рд╣рд╛рде рд╕реЗ рд╕рд┐рд▓рд╛рдИ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд╛ рджрд╕реНрддрд╛рд╡реЗрдЬреАрдХрд░рдг рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рддреЛ рдореИрдВ рдорджрдж рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛ рд╕рдХрддрд╛ рд╣реВрдВред

рдмрд╕ рджреЗрдЦрдиреЗ рд╕реЗ, _cgo_.o рдЗрд╕ рддрд░рд╣ (рд╕рд░рд▓реАрдХреГрдд) рдЙрддреНрдкрдиреНрди рд╣реЛрдиреЗ рд▓рдЧрддрд╛ рд╣реИ:

gcc [*.c] [*.cxx] -o _cgo_.o

рдпрд╣рд╛рдВ рд╕реЗ: https://github.com/golang/go/blob/b4c84a1b010f012668b5e3ccaf63f609cd11c5fe/src/cmd/go/internal/work/exec.go#L1975

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг рдХреЗ рд▓рд┐рдП рдпрд╣рд╛рдВ рджреЗрдЦреЗрдВ:
https://github.com/golang/go/blob/840f2c167f1d5196559d8a1e77c370960e66d34e/src/cmd/cgo/doc.go#L607

рдЖрджрд░реНрд╢ рд░реВрдк рд╕реЗ рд╣рдо рдПрдХ рдЧреЛ рдкреНрд░реЛрдЧреНрд░рд╛рдо рд▓рд┐рдЦреЗрдВрдЧреЗ рдЬреЛ рдСрдмреНрдЬреЗрдХреНрдЯ рдлрд╛рдЗрд▓реЛрдВ рдХреЛ рдкреНрд░реА-рдкреНрд░реЛрд╕реЗрд╕ рдХрд░рддрд╛ рд╣реИ рддрд╛рдХрд┐ рд╡реЗ рдиреНрдпреВрдирддрдо рдШрд░реНрд╖рдг рдХреЗ рд▓рд┐рдП link.exe рдХреЗ рд╕рд╛рде рд╕рдВрдЧрдд рд╣реЛрдВ, рд▓реЗрдХрд┐рди рдпрд╣ рдПрдХ рддрд░рд╣ рдХрд╛ рдЦрд┐рдВрдЪрд╛рд╡ рд▓рдХреНрд╖реНрдп рд╣реИред

рд╕реВрдЪрдХ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж -- рдореИрдВ рд╢реАрдШреНрд░ рд╣реА рдЗрд╕ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рд▓рд┐рдЦрдиреЗ рдЬрд╛ рд░рд╣рд╛ рд╣реВрдБред

рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ link.exe рдЬрдм рддрдХ рдХрд┐ рд╣рдо рдореЗрдВ рдЕрдкреНрд░рд╛рд░рдВрднреАрдХреГрдд рдбреЗрдЯрд╛ рдлреЗрдВрдХрдирд╛ рдЬреАрд╕реАрд╕реА рдмрджрд▓ .data рдХреЗ рдмрдЬрд╛рдп рдЦрдВрдб .bss рдЕрдиреБрднрд╛рдЧ - рд▓реЗрдХрд┐рди рд╣рдо рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ .bss рдЕрдиреБрднрд╛рдЧ (рдЬреЛ рдореИрдВрдиреЗ рдХрд┐рдпрд╛ рд╣реИ) рдХреЛ рдкрд╣рдЪрд╛рдирдиреЗ рдХреЗ рд▓рд┐рдП рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ llvm-lld рдХреЛ рдареАрдХ рдХрд░реЗрдВред

рд╣рдореЗрдВ рдЕрд▓рдЧ-рдЕрд▓рдЧ _cgo_.o рдФрд░ _all.o рд╕реЗ рдирд┐рдкрдЯрдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИред рдореЗрд░реЗ рдкрд╛рд╕ рдЙрди рдкрд░ рдХреБрдЫ рдкреНрд░рд╢реНрди рд╣реИрдВ:

(1) рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ _cgo_.o рдЕрдВрддрд┐рдо рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рдирд╣реАрдВ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕рдореЗрдВ рдЧреЛ рд░рдирдЯрд╛рдЗрдо рд╢рд╛рдорд┐рд▓ рдирд╣реАрдВ рд╣реИред рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╕рдВрдХрд▓рдХ рд╕рдВрд░рдЪрдирд╛ рдХреА рдкрд░рд┐рднрд╛рд╖рд╛ рдХреЛ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдкрдиреЗ рдбреАрдбрдмреНрд▓реНрдпреВрдПрдЖрд░рдПрдл рдкреНрд░рддреАрдХреЛрдВ рдХреЛ рджреЗрдЦрддрд╛ рд╣реИред рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдпрджрд┐ рдЖрдк рдмрд╛рд╣рд░реА рд░реВрдк рд╕реЗ рдХрдИ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рд╕реЗ рд▓рд┐рдВрдХ рдХрд░рдиреЗ рдЬрд╛ рд░рд╣реЗ рд╣реИрдВ, рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдПрдордПрд╕рд╡реАрд╕реА рджреНрд╡рд╛рд░рд╛ рдЙрддреНрдкрдиреНрди рдХрд┐рдП рдЧрдП рд╣реИрдВ рддреЛ рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рдЙрддреНрдкрдиреНрди рдХрд░рдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реИред

рдХреНрдпрд╛ рдЗрд╕ рдХрджрдо рд╕реЗ рдмрдЪрдирд╛ рд╕рдВрднрд╡ рд╣реИ?

(2) рдЬреАрд╕реАрд╕реА рдореЗрдВ -Wl,-r рдкрд╛рд╕ рдХрд░рдХреЗ рд╕рднреА рдСрдмреНрдЬреЗрдХреНрдЯ рдлрд╛рдЗрд▓реЛрдВ рдХреЛ _all.o рдореЗрдВ рд╕рд┐рд▓рд╛рдИ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬреАрдПрдирдпреВ ld рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред рдпрд╣ рд╕рдорд╕реНрдпрд╛рдЧреНрд░рд╕реНрдд рд╣реИ рдХреНрдпреЛрдВрдХрд┐ (1) рдРрд╕рд╛ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдЕрдиреНрдп рд▓рд┐рдВрдХрд░ рдореЗрдВ рдпрд╣ рд╕реБрд╡рд┐рдзрд╛ рд╣реИ, рдФрд░ (2) рдХрдорд╛рдВрдб CGO_LDFLAGS рд╕реЗ рдкреНрд░рднрд╛рд╡рд┐рдд рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдирд┐рдореНрди рдЖрджреЗрд╢ рдЧрд▓рдд рдкрд░рд┐рдгрд╛рдо рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реИ:

CGO_LDFLAGS="-Wl,-T,my-linker-script"
gcc .... $CGO_LDFLAGS -Wl,-r,...

рдпрд╣ рдПрдХ рдмрдВрдбрд▓ рдСрдмреНрдЬреЗрдХреНрдЯ рдлрд╝рд╛рдЗрд▓ рдХреЗ рдмрдЬрд╛рдп рдПрдХ рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реИред

рдХреНрдпрд╛ рд╕рднреА рдСрдмреНрдЬреЗрдХреНрдЯ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рд╕реАрдзреЗ рдЬреЗрдирд░реЗрдЯ рдХрд┐рдП рдЧрдП .a рдореЗрдВ рдбрд╛рд▓рдХрд░ рдЗрд╕ рдЪрд░рдг рд╕реЗ рдмрдЪрдирд╛ рд╕рдВрднрд╡ рд╣реИ?

@zooba рдЗрд╕ рдкреИрдЪ рдХреЗ рд╕рд╛рде MSFT рдХреЛ link.exe рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рдХреА рдХреНрдпрд╛ рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ?

рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рд▓рд┐рдВрдХрд┐рдВрдЧ link.exe рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдЬрдм рддрдХ рдХрд┐ рд╣рдо .bss рд╕реЗрдХреНрд╢рди рдХреЗ рдмрдЬрд╛рдп .data рд╕реЗрдХреНрд╢рди рдореЗрдВ uninitialized рдбреЗрдЯрд╛ рдХреЛ рдЙрддреНрд╕рд░реНрдЬрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП gcc рдХреЛ рдирд╣реАрдВ рдмрджрд▓рддреЗ - рд▓реЗрдХрд┐рди рд╣рдо .bss рд╕реЗрдХреНрд╢рди рдХреЛ рдкрд╣рдЪрд╛рдирдиреЗ рдХреЗ рд▓рд┐рдП llvm-lld рдХреЛ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдареАрдХ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред (рдЬреЛ рдореИрдВрдиреЗ рдХрд┐рдпрд╛ рд╣реИ)ред

рдпрд╣ рд╕реЛрдЪрддреЗ рд╣реИрдВ рдХрд┐ MSFT рдЕрдкрдбреЗрдЯ рдирд╣реАрдВ рдХрд░рддрд╛ рддреЛ link.exe (рдЬреЛ рд╕рдВрднрд╡ рд╣реИ), рдЗрд╕рдХреЗ рд╕рд╛рде рд╡рд╕реНрддреБ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рд╕рдВрдХрд▓рд┐рдд рдХрд░рдиреЗ рдХреЗ рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ cl.exe рдмрдЬрд╛рдп gcc ред

рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ _cgo_.o рдЕрдВрддрд┐рдо рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рдирд╣реАрдВ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕рдореЗрдВ рдЧреЛ рд░рдирдЯрд╛рдЗрдо рд╢рд╛рдорд┐рд▓ рдирд╣реАрдВ рд╣реИред

рдпрд╣ рд╕рд╣реА рд╣реИ, рдореВрд▓ рд░реВрдк рд╕реЗ рдСрдмреНрдЬреЗрдХреНрдЯ рдлрд╛рдЗрд▓реЛрдВ рдХреЗ рджреЛ рд╕реЗрдЯ рд╣реИрдВ (рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ) рдЬреЛ рдЕрдВрдд рдореЗрдВ рдПрдХ рд╕рд╛рде рдЬреБрдбрд╝ рдЬрд╛рддреЗ рд╣реИрдВред go.o рдлрд╝рд╛рдЗрд▓ (IIRC) рдореЗрдВ рд╕рднреА рдЧреЛ рдХреЛрдб + рд░рдирдЯрд╛рдЗрдо рд╣реЛрддреЗ рд╣реИрдВ, рдФрд░ рдЕрдиреНрдп рдСрдмреНрдЬреЗрдХреНрдЯ рдореЗрдВ C рдХреЛрдб рд╣реЛрддрд╛ рд╣реИред рд╡рд╕реНрддреБрдУрдВ рдХреЗ рджреЛ рд╕реЗрдЯреЛрдВ рдХреЗ рдмреАрдЪ рдХреВрджрдиреЗ рдХреЗ рд▓рд┐рдП рдЕрд╕реЗрдВрдмрд▓реА рд░реВрдЯреАрди рд╣реИрдВред

рд╕рд╛рде рд╣реА, рд╣рдореЗрдВ рдпреВрдирд┐рдХреНрд╕ рдЕрд╕реЗрдВрдмрд▓реА рдлрд╛рдЗрд▓реЛрдВ рдХреЛ рд╕рдВрдХрд▓рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП clang рд╣реИред

рд╣рдорд╛рд░реЗ рдЙрджреНрджреЗрд╢реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП, -Wl,-r lib.exe [object files] /OUT:obj рдЪрд▓рд╛рдиреЗ рдЬреИрд╕рд╛ рд╣реА рд╣реЛрдЧрд╛ред рд╡рд┐рдХрд▓реНрдк рдХрд╛ рдЕрд░реНрде рд╣реИ "рд╡реГрджреНрдзрд┐рд╢реАрд▓ рд░реВрдк рд╕реЗ рд▓рд┐рдВрдХ," рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ "рдХреБрдЫ рдЗрдирдкреБрдЯ рдлрд╝рд╛рдЗрд▓реЗрдВ рд▓реЗрдВ, рдХреБрдЫ рдХрд╛рдо рдХрд░реЗрдВ, рдлрд┐рд░ рджреВрд╕рд░реА рдСрдмреНрдЬреЗрдХреНрдЯ рдлрд╝рд╛рдЗрд▓ рдХреЛ рдереВрдХ рджреЗрдВред" рдЕрдЧрд░ рд╣рдо рдЕрднреА рдХреЗ рд▓рд┐рдП "рдХреБрдЫ рдХрд╛рдо рдХрд░реЗрдВ" рднрд╛рдЧ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЪрд┐рдВрддрд╛ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╣рдо рдХреЗрд╡рд▓ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЛ "рдХреБрдЫ рдЗрдирдкреБрдЯ рдлрд╝рд╛рдЗрд▓реЗрдВ рдФрд░/рдпрд╛ рдСрдмреНрдЬреЗрдХреНрдЯ рдлрд╝рд╛рдЗрд▓реЗрдВ рд▓реЗ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдХрд┐рд╕реА рдЕрдиреНрдп рдСрдмреНрдЬреЗрдХреНрдЯ рдлрд╝рд╛рдЗрд▓ рдХреЛ рдереВрдХ рд╕рдХрддреЗ рд╣реИрдВ" рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдХреЛ рдЫреЛрдбрд╝рдХрд░ рдСрдмреНрдЬреЗрдХреНрдЯ рдлрд╝рд╛рдЗрд▓ рд╣реЛрдЧреА рдПрдХ рдкреБрд╕реНрддрдХрд╛рд▓рдпред

рдЖрдк -fno-zero-initialized-in-bss рд╡рд┐рдХрд▓реНрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЬреАрд╕реАрд╕реА рдХреЛ .bss рдЕрдиреБрднрд╛рдЧ рдХреЗ рдмрдЬрд╛рдп .data рдЕрдиреБрднрд╛рдЧ рдореЗрдВ рдЪрд░ рдбрд╛рд▓рдиреЗ рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣ рд╕рдХрддреЗ рд╣реИрдВред

рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдЯрд┐рдк рдкрд░ рд╣рдо cgo рдХреЛрдб рдмрдирд╛рддреЗ рд╕рдордп -Wl,-r рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВред

MSVC рдСрдмреНрдЬреЗрдХреНрдЯ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ .syso рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП cmd/link рдХреЗ рд▓рд┐рдП рдпрд╣ рдЖрд╡рд╢реНрдпрдХ рдирд╣реАрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рд╡реЗ рдлрд╛рдЗрд▓реЗрдВ рдХрд┐рд╕реА рднреА рддрд░рд╣ рдмрд╛рд╣рд░реА рд▓рд┐рдВрдХрд░ рдХреЛ рдкрд╛рд╕ рдХрд░ рджреА рдЬрд╛рддреА рд╣реИрдВред рддреЛ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣рд╛рдВ рдПрдордПрд╕рд╡реАрд╕реА рд▓рд┐рдВрдХрд░ рдХреЛ рдмрд╛рд╣рд░реА рд▓рд┐рдВрдХрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдЖрдордВрддреНрд░рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЬрд┐рд╕реЗ рдЖрдкрдХреЛ -extld рд╡рд┐рдХрд▓реНрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдпрджрд┐ рдЖрдк рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдРрд╕рд╛ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рддреЛ рдореБрдЭреЗ рдХреНрд╖рдорд╛ рдХрд░реЗрдВ; рдЙрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдХреНрдпрд╛ рд╡рд┐рдлрд▓ рд╣реЛ рд░рд╣рд╛ рд╣реИ?

рдпрджрд┐ рдЖрдк рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдРрд╕рд╛ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рддреЛ рдореБрдЭреЗ рдХреНрд╖рдорд╛ рдХрд░реЗрдВ; рдЙрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдХреНрдпрд╛ рд╡рд┐рдлрд▓ рд╣реЛ рд░рд╣рд╛ рд╣реИ?

рдЖрдИрдЖрдИрдЖрд░рд╕реА, link.exe рдЬреАрд╕реАрд╕реА рдЙрддреНрдкрдиреНрди рд╡рд╕реНрддреБрдУрдВ рдкрд░ рдмрд╛рд░рдлреНрд╕ред

рд╕рдЪ рд╣реИ, рдЖрдкрдХреЛ CC рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░ рдХреЛ рдЙрдЪрд┐рдд рд░реВрдк рд╕реЗ рд╕реЗрдЯ рдХрд░рдХреЗ, рдПрдордПрд╕рд╡реАрд╕реА рд╕реА рдХреЗ рдХрдВрдкрд╛рдЗрд▓рд░ рдХрд╛ рднреА рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдпрд╣ рдЬреАрд╕реАрд╕реА рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдФрд░ рдПрдордПрд╕рд╡реАрд╕реА рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдХреЛ рдПрдХ рд╣реА рд▓рд┐рдВрдХ рдореЗрдВ рд╕рдВрдпреЛрдЬрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░рдиреЗ рдЬрд╛ рд░рд╣рд╛ рд╣реИред

рд▓реЗрдХрд┐рди рдлрд┐рд░ рдЖрдк рдЙрд╕ рд╕рдорд╕реНрдпрд╛ рдореЗрдВ рднрд╛рдЧ рд▓реЗрддреЗ рд╣реИрдВ рдЬрд╣рд╛рдВ рд░рдирдЯрд╛рдЗрдо рд╕реА рдкреБрд╕реНрддрдХрд╛рд▓рдп рдкреВрд░реНрд╡-рд╕рдВрдХрд▓рд┐рдд рд╣реЛрддреЗ рд╣реИрдВред рдФрд░ рдпрджрд┐ рдЖрдк рдЙрдиреНрд╣реЗрдВ рдкреБрди: рд╕рдВрдХрд▓рд┐рдд рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдореЗрдВ рднрд╛рдЧ рд▓реЗрддреЗ рд╣реИрдВ рдХрд┐ cl рдпреВрдирд┐рдХреНрд╕ рдЕрд╕реЗрдВрдмрд▓реА рдХреЛ рд╕рдВрдХрд▓рд┐рдд рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдФрд░ рдЗрд╕рд▓рд┐рдП рдЖрдк рд░рдирдЯрд╛рдЗрдо рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЗ рдХреБрдЫ рд╣рд┐рд╕реНрд╕реЛрдВ рдХреЛ рдкреЛрд░реНрдЯ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдЬреЛрдбрд╝рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВ, рдЬреЛ рдореИрдВрдиреЗ рдХрд┐рдпрд╛ рдФрд░ рдЕрд╕рдлрд▓ рд░рд╣рд╛ред

рдХрд╣реАрдВ рди рдХрд╣реАрдВ, cl рдХреЛрдб рдХреЗ рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рднрд╛рдЧ рдХреЛ рдЧрд▓рдд рддрд░реАрдХреЗ рд╕реЗ рд╕рдВрдХрд▓рд┐рдд рдХрд░рддрд╛ рд╣реИред рдлрд┐рдХреНрд╕рд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдореЗрд░рд╛ рд╡рд┐рдЪрд╛рд░ рдПрдордПрд╕рд╡реАрд╕реА рдХреЛрдб рдХреЛ рдПрдХ рдлреНрд▓реИрдЯ рд╕реА рдПрдкреАрдЖрдИ рдХреЗ рд╕рд╛рде рдПрдХ рдбреАрдПрд▓рдПрд▓ рдореЗрдВ рдХрд╛рд░рдХ рдмрдирд╛рдирд╛ рд╣реЛрдЧрд╛, рдФрд░ рддрдм рддрдХ рдХреЗрд╡рд▓ рд░рдирдЯрд╛рдЗрдо рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЛ рддрдм рддрдХ рд╕рдВрдХрд▓рд┐рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдЬрдм рддрдХ рдХрд┐ рдпрд╣ рдХрд╛рдо рдХрд░рдирд╛ рдмрдВрдж рди рдХрд░ рджреЗред

рд╕рдорд╕реНрдпрд╛ рдХреЛ рдареАрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП @haohui рдХрд╛ рд╡рд┐рдЪрд╛рд░ рдЕрд▓рдЧ рдерд╛ред рд╕рдорд╕реНрдпрд╛ рдХреА рдЬрдбрд╝ рдХреЛ рдареАрдХ рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп, рдЙрдиреНрд╣реЛрдВрдиреЗ рд▓рд┐рдВрдХрд░ рдХреЛ рдкреИрдЪ рдХрд░рдХреЗ рдЗрд╕рдХреЗ рдЖрд╕рдкрд╛рд╕ рдХрд╛рдо рдХрд┐рдпрд╛ред рдЬрд╛рд╣рд┐рд░ рд╣реИ рдХрд┐ рдЙрд╕реЗ рдореБрдЭрд╕реЗ рдЬреНрдпрд╛рджрд╛ рд╕рдлрд▓рддрд╛ рдорд┐рд▓реА, рд▓реЗрдХрд┐рди рд╢рд╛рдпрдж рдРрд╕рд╛ рдЗрд╕рд▓рд┐рдП рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЙрд╕рдХрд╛ рджреГрд╖реНрдЯрд┐рдХреЛрдг, рдореЗрд░реА рддреБрд▓рдирд╛ рдореЗрдВ рдХрд╛рдо рдХрд░рдиреЗ рдХреА рдЕрдзрд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИред

рдЗрд╕ рдмрд┐рдВрджреБ рдкрд░ рдореИрдВ рдЬреЛ рдЕрдиреБрд╢рдВрд╕рд╛ рдХрд░рддрд╛ рд╣реВрдВ (рдЖрдИрдПрдордПрдЪрдУ) cl рд╕рд╛рде рд░рдирдЯрд╛рдЗрдо рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЛ рдЕрдзрд┐рдХ рд╕реЗ рдЕрдзрд┐рдХ рд╕рдВрдХрд▓рд┐рдд рдХрд░рдирд╛ рд╣реИ рдЬрдм рддрдХ рдХрд┐ рдпрд╣ рдХрд╛рдо рдХрд░рдирд╛ рдмрдВрдж рди рдХрд░ рджреЗ рдпрд╛ рдЬрдм рддрдХ рдЖрдкрдХреЗ рдкрд╛рд╕ рдХреЛрдИ рдЬреАрд╕реАрд╕реА рдХреЛрдб рди рд╣реЛред рддрдм рдЖрдк рдареАрдХ рд╕реЗ рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рд╕рдорд╕реНрдпрд╛ рдХрд╣рд╛рдБ рд╣реИред

рдФрд░ рд▓рд┐рдВрдХрд░ рдкреИрдЪ рдХреЗ рд╕рд╛рде, рдХреЛрдИ рдбреАрдПрд▓рдПрд▓ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред

llvm-lld рдХрд╛ рдкреИрдЪ https://bugs.llvm.org/show_bug.cgi?id=35283 рдкрд░ рдЙрдкрд▓рдмреНрдз рд╣реИ

рдореИрдВ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рд╕рдордп рдмрд┐рддрд╛рдКрдВрдЧрд╛ред

+1 @haohui рдЗрд╕реЗ рдЖрдЧреЗ рдмрдврд╝рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдмрд╣реБрдд рдзрдиреНрдпрд╡рд╛рдж!

@haohui llvm рдХреЗ рдХрд┐рд╕ рд╕рдВрд╕реНрдХрд░рдг рдкрд░ рдЖрдкрдХрд╛ рдкреИрдЪ рд▓рд╛рдЧреВ рд╣реЛрддрд╛ рд╣реИ? рдЕрдкрдиреЗ рдкреИрдЪ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд░реЗрдВ рдФрд░ рдПрдордПрд╕рд╡реАрд╕реА рдлрд╛рдЗрд▓реЛрдВ рдХреЗ рдЦрд┐рд▓рд╛рдл рдХреИрд╕реЗ рд▓рд┐рдВрдХ рдХрд░реЗрдВ, рдЗрд╕ рдкрд░ рдХреЛрдИ рдирд┐рд░реНрджреЗрд╢?

_cgo_.o рдФрд░ _all.o рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рд╕рдВрдмрдВрдз рдореЗрдВ, рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ рд╣реА рд╕рдорд╕реНрдпрд╛ рдереА, рдЗрд╕рд▓рд┐рдП рд╢рд╛рдпрдж рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рдорд╛рдзрд╛рди рдЕрдиреНрдп рд╕рдорд╕реНрдпрд╛ рдХреЗ рд▓рд┐рдП рднреА рдареАрдХ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ: https://github.com/golang/go /рдореБрджреНрджреЗ/17014

рдЗрд╕ рдкрд░ рд╕рднреА рдХрд╛рдо рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЕрдЪреНрдЫреА рдкреНрд░рдЧрддрд┐ рд╣реЛ рд░рд╣реА рд╣реИред рдирдИ рд╕реБрд╡рд┐рдзрд╛рдПрдВ Go 1.11 рддрдХ рд░реБрдХреА рд╣реБрдИ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдореАрд▓ рдХрд╛ рдкрддреНрдерд░ рдмрджрд▓ рд░рд╣рд╛ рд╣реИред

рддреЛ рдореИрдВ рдХрд▓ рд░рд╛рдд рдЗрд╕рдореЗрдВ рдХреВрдж рдЧрдпрд╛ред рдПрдордПрд╕рд╡реАрд╕реА рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕рдм рдХреБрдЫ рдмрдирд╛рдирд╛ рд╕рдВрднрд╡ рд╣реИ рдПрдордПрд╕рд╡реАрд╕реА рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕рдм рдХреБрдЫ

рддреЛ рдПрдордПрд╕рд╡реАрд╕реА рдЬреИрд╕реА рд╕рд╛рдзрд╛рд░рдг рд╕рдорд╕реНрдпрд╛рдУрдВ рд╕реЗ рдкрд░реЗ msvc: рд▓рд┐рдВрдХ .bss рд╕реЗрдЧрдореЗрдВрдЯ рдХреЛ рдЙрдбрд╝рд╛ рджреЗрддрд╛ рд╣реИ (рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╕рд┐рд░реНрдл рдЗрд╕ рдбреЗрдЯрд╛ рдХреЛ .data рдореЗрдВ рдлреЗрдВрдХ рд╕рдХрддрд╛ рд╣реИ) рдЬреЛ рдХрд┐ рдПрдХ рд╕рдорд╕реНрдпрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЧреЛ рдЕрд╕реЗрдВрдмрд▓рд░ SB (рдЫрджреНрдо reg) рдкрд░рд┐рдгрд╛рдо рдХреЛ рд╕рдВрдмреЛрдзрд┐рдд рдХрд░рдиреЗ рдореЗрдВ рдЧрд▓рдд рд╣реИ рдпрджрд┐ .bss рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ .

рдореЗрд░рд╛ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рд╡рд┐рдЪрд╛рд░ рдпрд╣ рд╣реЛрдЧрд╛ рдХрд┐ рдЕрд╕реЗрдВрдмрд▓рд░ рдХреЛ рдЙрди рдЪреАрдЬреЛрдВ рдХреЛ рд░рдЦрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рдиреА рдЪрд╛рд╣рд┐рдП рдЬреЛ рдХреНрд░рдорд╢рдГ .bss рдФрд░ .noptrbss рдореЗрдВ .data рдФрд░ .noptrdata рдореЗрдВ рдЬрд╛рддреА рд╣реИрдВред рдореБрдЭреЗ рдпрдХреАрди рднреА рдирд╣реАрдВ рд╣реИ рдХрд┐ рдпрд╣ рд╕рдВрднрд╡ рд╣реИ; рдЗрд╕рдХреЗ рд╕рд╛рде рдореЗрд░рд╛ рдЭреБрдХрд╛рд╡ рд╕рдлрд▓ рдирд╣реАрдВ рд░рд╣рд╛ рд╣реИ рдФрд░ рд╕рдВрдмреЛрдзрди рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдмрдВрдж рд╣реЛ рдЧрдпрд╛ рд╣реИред

рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдЕрднреА рдХреЗ рд▓рд┐рдП link.exe рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рдореЗрдВ lld-link.exe рд╕реЗ рд╢реБрд░реБрдЖрдд рдХрд░рдиреА рдЪрд╛рд╣рд┐рдП

рдЕрдЧрд░ рдЗрд╕рдХреЗ рдкреАрдЫреЗ рд╡рд┐рдЪрд╛рд░ рдпрд╣ рд╣реИ рдХрд┐ рд╣рдо .bss рдбреЗрдЯрд╛ рдХреЗ рдЖрд╕рдкрд╛рд╕ рдирд╣реАрдВ рдЬрд╛рдиреЗ рдХреЗ рд▓рд┐рдП lld-link рдХреЛ рдкреИрдЪ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рддреЛ рдореИрдВ рдЕрдкреАрд▓ рдХреЛ рд╕рдордЭрддрд╛ рд╣реВрдВред рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд░реВрдк рд╕реЗ рдпрджрд┐ рд▓рдХреНрд╖реНрдп рд╡рд╛рд╕реНрддрд╡рд┐рдХ msvc рдЙрдкрдХрд░рдг рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдирд╛ рд╣реИ рддреЛ рдбреЗрдЯрд╛ рдХреЛ .bss/.noptrbss рдореЗрдВ рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдВрддрд░рд┐рдХ рд╕рдВрдХрд▓рди рдкрд░ рдЬрд╛рдПрдВ, рдЬрд┐рд╕реЗ рд╕рдВрдмреЛрдзрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред

рдХреНрдпрд╛ рд╣рдо lld-link.exe рдХреЛ рдЧреЛ рдХреЗ рд╕рд╛рде рдкреБрдирд░реНрд╡рд┐рддрд░рд┐рдд рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ? рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЬрдм рддрдХ рдПрд▓рдЯреАрд╕реАрдЬреА рд╕рдХреНрд╖рдо рдирд╣реАрдВ рд╣реИ, рддрдм рддрдХ рдПрдордПрд╕рд╡реАрд╕реА рдСрдмреНрдЬреЗрдХреНрдЯ рдлрд╛рдЗрд▓реЛрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рдХрдо рдЬреЛрдЦрд┐рдо рд╡рд╛рд▓рд╛ рдкрде рд╣реИред рдореИрдВ рд╕рдордЭрддрд╛ рд╣реВрдВ рдХрд┐ рдпрд╣ рдЖрджрд░реНрд╢ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рд╣рдорд╛рд░реЗ рд╕рд╛рдордиреЗ рд╕рдВрд╕рд╛рдзрди рдХреА рдХрдореА рд╣реИред

рдпрд╣ рд╡реГрджреНрдзрд┐рд╢реАрд▓ рдкреНрд░рдЧрддрд┐ рдХреА рднреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ рдЬреЛ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫреА рд░рдгрдиреАрддрд┐ рд╣реИред

рдареАрдХ рд╣реИ, рдХреБрдЫ рдЕрдЪреНрдЫреА рдЕрдиреБрд╡рд░реНрддреА рдЦрдмрд░реЗрдВ, рдореИрдВ рджреЛрдкрд╣рд░ рдХреЗ рднреЛрдЬрди рдкрд░ рдЗрд╕ рдкрд░ рдХрд╛рдо рдХрд░рдиреЗ рдореЗрдВ рдПрдХ рдШрдВрдЯрд╛ рдмрд┐рддрд╛рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдерд╛ред

рдлрд┐рд▓рд╣рд╛рд▓ рдореЗрд░реЗ рдкрд╛рд╕ рдХрд╛рдо рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдореБрджреНрджреЗ рдореЗрдВ рдкрд╣рд▓реЗ рд╕реЗ рдЙрджрд╛рд╣рд░рдг рд╣реИ:

- hello.go:
package main

/*
    extern void hello();
*/
import "C"

func main() {
    C.hello()
}

- extern.c
#include <stdio.h>

extern void hello()
{
    printf("Hello World from C");
}
>ac.out.exe
Hello World from C

рдмрд╛рдЗрдирд░реА рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдПрдордПрд╕рд╡реАрд╕реА рдФрд░ рдЧреЛ рдЯреВрд▓рдЪреЗрди (рдХреЛрдИ рдЬреАрд╕реАрд╕реА рдпрд╛ рдЕрдиреНрдп рдПрд▓рдПрд▓рд╡реАрдПрдо рд╕реНрдерд╛рдкрд┐рдд рдирд╣реАрдВ) рдХреЗ рд╕рд╛рде рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред

рдЬрд╛рдБрдЪ - рдкрд░рд┐рдгрд╛рдо:

  • рдЧреЛ рдЯреВрд▓реНрд╕/link.exe рдЖрдЙрдЯрдкреБрдЯ .bss рдбреЗрдЯрд╛ рдХреЛ рдЖрдВрддрд░рд┐рдХ рдЕрд╕реЗрдВрдмрд▓реА рдХреЗ рд▓рд┐рдП .data рдореЗрдВ рд░рдЦрдирд╛ рдЕрдВрддрддрдГ рдХрд╛рдлреА рддреБрдЪреНрдЫ рдерд╛
  • msvc . рдХреЗ рд▓рд┐рдП рдХрдИ ASM рдЯреБрдХрдбрд╝реЛрдВ рдХреЛ рд╕реНрдердЧрд┐рдд рдХрд░рдирд╛ рдкрдбрд╝рд╛
  • рдХреБрдЫ GCC #defs рдХреЛ рд╢рд░реНрдорд╕рд╛рд░ рдХрд┐рдпрд╛ рдЧрдпрд╛
  • рдХреБрдЫ cgo рдЬрдирд░реЗрдЯ рдХреА рдЧрдИ .c рдлрд╝рд╛рдЗрд▓реЛрдВ рдореЗрдВ рдХрдИ рдЫреЛрдЯреЗ рд╕рдорд╛рдпреЛрдЬрди рдХрд░рдиреЗ рдкрдбрд╝реЗ
  • рд╕рдореНрдорд┐рд╢реНрд░ рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХреЛ рдЪрдордХрд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА, рдлрд┐рд▓рд╣рд╛рд▓ рд╡реЗ рдЕрд╕рдорд░реНрдерд┐рдд рд╣реИрдВ
  • рдпрд╣ рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ рдХрд┐ рдирд┐рд░реНрдорд╛рдг рдХреЗ рд▓рд┐рдП рд╕реАрдзреЗ рдЕрддрд┐рд░рд┐рдХреНрдд рдЭрдВрдбреЛрдВ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА рдпрд╛ msvc рд╕рдорд░реНрдерди рдХреЗ рд▓рд┐рдП рд▓рд┐рдВрдХ, ldflags рдЖрджрд┐ рдкрд░реНрдпрд╛рдкреНрдд рдирд╣реАрдВ рд╣реЛрдВрдЧреЗ

рдЕрдЧрд▓рд╛ рдХрджрдо:
рдпрджрд┐ рдореЗрд░реЗ рдкрд╛рд╕ рдЗрд╕ рд╕рдкреНрддрд╛рд╣ рдХреЗ рдЕрдВрдд рдореЗрдВ рд╕рдордп рд╣реИ рддреЛ рдореИрдВ рдЕрдкрдиреЗ рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЛ рдПрдХ рдХрд╛рдВрдЯрд╛ рдореЗрдВ рд▓рд╛рдиреЗ рдкрд░ рдХрд╛рдо рдХрд░реВрдВрдЧрд╛, рд▓реЗрдХрд┐рди рдирд┐рд░реНрдорд╛рдг/рд▓рд┐рдВрдХ рдореЗрдВ рдЭрдВрдбреЗ рдХреЗ рдкреАрдЫреЗ рдХреА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ред рдмрд╛рдж рдореЗрдВ рдореИрдВ рд╕рдореАрдХреНрд╖рд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреАрдЖрд░ рдкреНрд░рд╛рдкреНрдд рдХрд░реВрдВрдЧрд╛ рддрд╛рдХрд┐ рд╣рдо рдкреНрд░рдХрд╛рд░реЛрдВ рдкрд░ рдХрд╛рдо рдХрд░ рд╕рдХреЗрдВред рдореБрдЭреЗ 100% рд╡рд┐рд╢реНрд╡рд╛рд╕ рдирд╣реАрдВ рд╣реИ рдХрд┐ .bss рдбреЗрдЯрд╛ рдХреЛ рдЗрдзрд░-рдЙрдзрд░ рд▓реЗ рдЬрд╛рдиреЗ рд╕реЗ рдХрд╣реАрдВ рди рдХрд╣реАрдВ рдХрд┐рд╕реА рддрд░рд╣ рдХрд╛ рдкреНрд░рднрд╛рд╡ рдкрдбрд╝реЗрдЧрд╛ред

рдПрдХрдорд╛рддреНрд░ рдбреНрд░рд╛ рдмреИрдХ рдЬрд┐рд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдореИрдВ рд╕реЛрдЪ рд╕рдХрддрд╛ рд╣реВрдВ рдХрд┐ рдпрд╣ рдмрд╛рдЗрдирд░реА рдХреЗ рдЖрдХрд╛рд░ рдХреЛ рдЙрдбрд╝рд╛ рджреЗрдЧрд╛, рд▓реЗрдХрд┐рди рдпрд╣ рдареАрдХ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред

рдареАрдХ!

рдХреНрд╖рдорд╛ рдХрд░реЗрдВ, рдЗрд╕реЗ рдПрдХ рд╕рд╛рде рд░рдЦрдиреЗ рдореЗрдВ рдореБрдЭреЗ рдХреБрдЫ рдЕрддрд┐рд░рд┐рдХреНрдд рджрд┐рди рд▓рдЧреЗред рддреЛ рдПрдХ рдкреИрдЪ рдкрд░ рдкрд╣рд▓рд╛ рдбреНрд░рд╛рдлреНрдЯ рдпрд╣рд╛рдВ рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ: https://github.com/ccamplin/go/commit/69a5cfc1dd0106fd8a2928a83e4c7001e81e89b8 :: https://github.com/ccamplin/go/tree/msvc_toolchain_support

рдпрд╣ рдЕрднреА рднреА рдореЛрдЯрд╛ рд╣реИ рд▓реЗрдХрд┐рди рдореЗрд░реЗ рдкрд╛рд╕ рдПрдордПрд╕рд╡реАрд╕реА рдХреЗ рд╕рд╛рде рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдХреЛрдб рдмрдирд╛ рд░рд╣рд╛ рд╣реИред

рдЕрдЧрд░ рд▓реЛрдЧ рдЕрднреА рдЗрд╕рдХрд╛ рдкрд░реАрдХреНрд╖рдг рд╢реБрд░реВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдореБрдЭреЗ рдмрдЧ рдХреА рд░рд┐рдкреЛрд░реНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рддреЛ рдпрд╣ рдмрд╣реБрдд рдмрдврд╝рд┐рдпрд╛ рд╣реЛрдЧрд╛ рддрд╛рдХрд┐ рдореИрдВ рдЗрд╕реЗ рдЕрдкрд╕реНрдЯреНрд░реАрдо рдХреЗ рд▓рд┐рдП рдмреЗрд╣рддрд░ рд╕реНрдерд╛рди рдкрд░ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХреВрдВред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдЕрдЧрд░ рдХреЛрдИ рд▓рд┐рдЦрд┐рдд рдкрд░реАрдХреНрд╖рд╛ рдореЗрдВ рднрд╛рдЧ рд▓реЗрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реИ рддреЛ рдпрд╣ рдЖрд╢реНрдЪрд░реНрдпрдЬрдирдХ рд╣реЛрдЧрд╛!

рдЙрдкрдпреЛрдЧ:

go build -compiler msvc [path]
  • рд╕рдореНрдорд┐рд╢реНрд░ рд╕рдВрдЦреНрдпрд╛рдПрдБ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рддрдм рддрдХ рдЕрд╕рдорд░реНрдерд┐рдд рд╣реИрдВ рдЬрдм рддрдХ рдореБрдЭреЗ рдпрд╣ рдкрддрд╛ рдирд╣реАрдВ рдЪрд▓ рдЬрд╛рддрд╛ рдХрд┐ рдХреНрдпрд╛ рд╣рдо рдЙрдиреНрд╣реЗрдВ рдХрд╛рдо рдореЗрдВ рд▓рд╛ рд╕рдХрддреЗ рд╣реИрдВред
  • рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рдпрджрд┐ рдЖрдк msvc рдХрдВрдкрд╛рдЗрд▓рд░ рдХреЗ рд╕рд╛рде рдЧреЛ рд░рдирдЯрд╛рдЗрдо рдмрдирд╛рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВ рддреЛ рдХреНрдпрд╛ рд╣реЛрддрд╛ рд╣реИред
  • рдЬреАрд╕реАрд╕реА рдХреА рдЕрднреА рднреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдФрд░ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдЬреАрд╕реАрдУ рджреНрд╡рд╛рд░рд╛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдиреЗ рдФрд░ рдбреЗрдЯрд╛ рдЯрд╛рдЗрдк рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬрдм рдЗрд╕реЗ рд╕рдВрдХрд▓рд┐рдд рдХреБрдЫ рднреА рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ )ред рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рдХреНрдпрд╛ рд╣рдо рдЗрд╕рдХреЗ рдЖрд╕рдкрд╛рд╕ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ, рдПрдордПрд╕рд╡реАрд╕реА рдХреЗ рдкрд╛рд╕ рдРрд╕рд╛ рдХреБрдЫ рднреА рдирд╣реАрдВ рд╣реИ рдЬреЛ рдПрдХ рд╣реА рдмреМрдирд╛ рдФрд░ рдХреЛрдб рдХреЗ # рдкрд░рд┐рднрд╛рд╖рд┐рдд рдбрдВрдк рдХрд░ рд╕рдХрддрд╛ рд╣реИ ... рдЕрдЧрд░ рдХрд┐рд╕реА рдХреЗ рдкрд╛рд╕ рдЗрд╕ рдкрд░ рд╡рд┐рдЪрд╛рд░ рд╣реИ рддреЛ рдпрд╣ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛

рдЬреБрдбрд╝рд╛ рд╣реБрдЖ рдкреИрдЪ рдмреВрдЯрд╕реНрдЯреНрд░реИрдкрд┐рдВрдЧ рд╕рдорд╕реНрдпрд╛ рдкреИрджрд╛ рдХрд░рддрд╛ рд╣реИред

@alexbrainman рдпрд╣ рдХреИрд╕реЗ рдФрд░ рдХрд╣рд╛рдБ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ toolchain1 рдмреВрд╕реНрдЯрд░реИрдкрд┐рдВрдЧ рдЪрд░рдг рдХреЗ рджреМрд░рд╛рди рдХреМрди рд╕реА рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ pkg/boostrap/src/bootstrap рдореЗрдВ рдХреЙрдкреА рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛?

cc @alexbrainman

рдЬреБрдбрд╝рд╛ рд╣реБрдЖ рдкреИрдЪ рдмреВрдЯрд╕реНрдЯреНрд░реИрдкрд┐рдВрдЧ рд╕рдорд╕реНрдпрд╛ рдкреИрджрд╛ рдХрд░рддрд╛ рд╣реИред

рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рдмреВрдЯрд╕реНрдЯреНрд░реИрдкрд┐рдВрдЧ рдЖрдЬрдХрд▓ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддреА рд╣реИред рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдпрдХреАрди рд╣реИ рдХрд┐ рдЕрдиреНрдп ( @rsc рдФрд░ @ianlancetaylor) рдорджрдж рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдореБрдЭреЗ рдЖрд╢реНрдЪрд░реНрдп рд╣реИ рдХрд┐ рдЕрдЧрд░ рдмреВрдЯрд╕реНрдЯреНрд░реИрдкрд┐рдВрдЧ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддреА рд╣реИ рддреЛ @ccamplin рдХреИрд╕реЗ

рдПрд▓реЗрдХреНрд╕

@xoviat рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рд╕рдорд╕реНрдпрд╛ рдХреНрдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдмреВрдЯрд╕реНрдЯреНрд░реИрдк рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛рдУрдВ рдХреА рд╕реВрдЪреА cmd/dist/buildtool.go рдореЗрдВ рд╣реИред

рдЕрд░реЗ @alexbrainman , @ianlancetaylor , @xoviat рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЦреЗрдж рд╣реИ рдХрд┐ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореБрдЭреЗ рдФрд░ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдерд╛ред

рдореИрдВрдиреЗ рдпрд╣рд╛рдВ рд╢рд╛рдЦрд╛ рдХреЛ рдЕрджреНрдпрддрди рдХрд┐рдпрд╛ рд╣реИ https://github.com/ccamplin/go/commit/69a5cfc1dd0106fd8a2928a83e4c7001e81e89b8 рдмреВрдЯрд╕реНрдЯреНрд░реИрдкрд┐рдВрдЧ рд╕рдорд╕реНрдпрд╛ рдХреЗ рд╕рдорд╛рдзрд╛рди рдХреЗ рд╕рд╛рде, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕реЗ рдЕрдм рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдмреВрдЯрд╕реНрдЯреНрд░реИрдк рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред

рдореБрдЭреЗ рдХреБрдЫ/src/рдЖрдВрддрд░рд┐рдХ/syscall рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛рдУрдВ рдХреЛ cmd/рдЖрдВрддрд░рд┐рдХ/msvc рдореЗрдВ рдХреЙрдкреА рдХрд░рдирд╛ рдкрдбрд╝рд╛ред рдХреНрдпрд╛ рдпрд╣ рдмрд╣реБрдд рдмрдбрд╝реА рд╕рдорд╕реНрдпрд╛ рд╣реЛрдЧреА? рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рд╕реНрд░реЛрдд/рдЖрдВрддрд░рд┐рдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдмрд┐рдирд╛ рд░рдЬрд┐рд╕реНрдЯреНрд░реА рддрдХ рдкрд╣реБрдВрдЪ рдХреИрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВред

рдореБрдЭреЗ рдХреБрдЫ/src/рдЖрдВрддрд░рд┐рдХ/syscall рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛рдУрдВ рдХреЛ cmd/рдЖрдВрддрд░рд┐рдХ/msvc рдореЗрдВ рдХреЙрдкреА рдХрд░рдирд╛ рдкрдбрд╝рд╛ред рдХреНрдпрд╛ рдпрд╣ рдмрд╣реБрдд рдмрдбрд╝реА рд╕рдорд╕реНрдпрд╛ рд╣реЛрдЧреА? рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рд╕реНрд░реЛрдд/рдЖрдВрддрд░рд┐рдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдмрд┐рдирд╛ рд░рдЬрд┐рд╕реНрдЯреНрд░реА рддрдХ рдкрд╣реБрдВрдЪ рдХреИрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВред

рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рдпрд╣ рдЖрдЬрдХрд▓ рдХреИрд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд╕рдВрджреЗрд╣ рд╣реИ рдХрд┐ cmd/dist рдРрд╕рд╛ рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдмрд┐рдирд╛ рдЖрдк рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рд╕реНрд░реЛрдд рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреА рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВред рдореБрдЭреЗ рдпрдХреАрди рд╣реИ рдХрд┐ рдЬрдм рдЖрдк рдХреЛрдб рдЬрдорд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд╣реЛрдВрдЧреЗ рддреЛ Russ рдпрд╛ Ian рдЖрдкрдХреА рдорджрдж рдХрд░реЗрдВрдЧреЗред

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ @bradfitz рдФрд░ @ianlancetaylor рдХреЗ рд▓рд┐рдП рдпрд╣ рддрдп рдХрд░рдиреЗ рдХрд╛ рд╕рдордп рд╣реИ рдХрд┐ рдпрд╣рд╛рдВ рдХреИрд╕реЗ рдЖрдЧреЗ рдмрдврд╝рдирд╛ рд╣реИред рдХреНрдпрд╛ рд╣рдо рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдХрд┐ рдЧреЛ рдорд╛рдЗрдХреНрд░реЛрд╕реЙрдлреНрдЯ рдмрд┐рд▓реНрдб рдЯреВрд▓реНрд╕ рдХреЗ рд╕рд╛рде-рд╕рд╛рде рдЬреАрд╕реАрд╕реА рдХрд╛ рднреА рд╕рдорд░реНрдерди рдХрд░реЗ? рд╣рдореЗрдВ рдЕрдкрдиреЗ рдмрд┐рд▓реНрдбрд░реЛрдВ рдкрд░ рдХреЙрд░реЗрд╕реНрдкреЛрдВрдбреЗрдВрдЯ рдорд╛рдЗрдХреНрд░реЛрд╕реЙрдлреНрдЯ рдЯреВрд▓реНрд╕ рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ (рд╕реАрдПрд▓ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рд╣рдореЗрдВ рдРрд╕рд╛ рдХрд░рдирд╛ рд╣реЛрдЧрд╛)ред рд╣рдореЗрдВ, рд╢рд╛рдпрдж, рдирдП рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░ рдкреЗрд╢ рдХрд░рдиреЗ рд╣реЛрдВрдЧреЗред рдирдпрд╛ рджрд╕реНрддрд╛рд╡реЗрдЬред

рдпрджрд┐ рдЙрддреНрддрд░ рд╣рд╛рдБ рд╣реИ, рддреЛ @ccamplin рдХреЛ https://golang.org/doc/contribute.html рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдЕрдкрдиреЗ рдХреЛрдб рдкрд░рд┐рд╡рд░реНрддрди рд╕рдмрдорд┐рдЯ рдХрд░рдиреЗ рд╣реЛрдВрдЧреЗ рдХреНрдпрд╛ рдЖрдк рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рдЗрдЪреНрдЫреБрдХ рд╣реЛрдВрдЧреЗ? рдкрд░рд┐рд╡рд░реНрддрди рдХрд╛рдлреА рдмрдбрд╝рд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЗрд╕реЗ рдЫреЛрдЯреЗ CL рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддрд╛рдХрд┐ рдЙрдирдХреА рд╕рдореАрдХреНрд╖рд╛ рдХреА рдЬрд╛ рд╕рдХреЗ рдФрд░ рдЕрд▓рдЧ рд╕реЗ рд╕рдмрдорд┐рдЯ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХреЗред рд╕рдмрдорд┐рдЯ рдХрд┐рдП рдЬрд╛рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдкреНрд░рддреНрдпреЗрдХ рдкрд░рд┐рд╡рд░реНрддрди рдореЗрдВ all.bat рдкрд╛рд╕ рд╣реЛрдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИред рдпрд╣ рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ рдпрджрд┐ рд╣рдо рдкрд╣рд▓рд╛ CL рд╕рдмрдорд┐рдЯ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рд╕рднреА CL рджреЗрдЦ рд╕рдХреЗрдВред

рдзрдиреНрдпрд╡рд╛рджред

рдПрд▓реЗрдХреНрд╕

рдХреНрдпрд╛ рд╣рдо рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдХрд┐ рдЧреЛ рдорд╛рдЗрдХреНрд░реЛрд╕реЙрдлреНрдЯ рдмрд┐рд▓реНрдб рдЯреВрд▓реНрд╕ рдХреЗ рд╕рд╛рде-рд╕рд╛рде рдЬреАрд╕реАрд╕реА рдХрд╛ рднреА рд╕рдорд░реНрдерди рдХрд░реЗ?

рдмрд╕ рдПрдХ рдиреЛрдЯ рдпрд╣ рдкреИрдЪ # 17014 рдХреА рд╕реБрд╡рд┐рдзрд╛ рднреА рджреЗрддрд╛ рд╣реИ рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рдореЗрд░реЗ рдкрд╛рд╕ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдПрдХ рдкреИрдЪ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рд╣реИред

рдпрджрд┐ рдЙрддреНрддрд░ рд╣рд╛рдБ рд╣реИ, рддреЛ @ccamplin рдХреЛ https://golang.org/doc/contribute.html рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдЕрдкрдиреЗ рдХреЛрдб рдкрд░рд┐рд╡рд░реНрддрди рд╕рдмрдорд┐рдЯ рдХрд░рдиреЗ рд╣реЛрдВрдЧреЗ рдХреНрдпрд╛ рдЖрдк рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рдЗрдЪреНрдЫреБрдХ рд╣реЛрдВрдЧреЗ? рдкрд░рд┐рд╡рд░реНрддрди рдХрд╛рдлреА рдмрдбрд╝рд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЗрд╕реЗ рдЫреЛрдЯреЗ CL рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддрд╛рдХрд┐ рдЙрдирдХреА рд╕рдореАрдХреНрд╖рд╛ рдХреА рдЬрд╛ рд╕рдХреЗ рдФрд░ рдЕрд▓рдЧ рд╕реЗ рд╕рдмрдорд┐рдЯ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХреЗред

рд╣рд╛рдВ, рдФрд░ рдЗрд╕реЗ рддреЛрдбрд╝рдирд╛ рдХреЛрдИ рдмрдбрд╝реА рдмрд╛рдд рдирд╣реАрдВ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдПред рдореБрдЭреЗ рд╕рд┐рд░реНрдл рдпрд╣ рдЬрд╛рдирдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдпрд╣ рдРрд╕рд╛ рдХреБрдЫ рд╣реИ рдЬреЛ рд╕рднреА рдХреЛрдб рдХреЛ рд╕рд╛рдл рдХрд░рдиреЗ, рджрд╕реНрддрд╛рд╡реЗрдЬ рд▓рд┐рдЦреЗ рдЬрд╛рдиреЗ, рдкрд░реАрдХреНрд╖рдг рдХрд┐рдП рдЬрд╛рдиреЗ рдЖрджрд┐ рдХреЗ рдкреНрд░рдпрд╛рд╕ рд╕реЗ рдкрд╣рд▓реЗ рдЬрд╛рдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИред

рдХреНрдпрд╛ рд╣рдо рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдХрд┐ рдЧреЛ рдорд╛рдЗрдХреНрд░реЛрд╕реЙрдлреНрдЯ рдмрд┐рд▓реНрдб рдЯреВрд▓реНрд╕ рдХреЗ рд╕рд╛рде-рд╕рд╛рде рдЬреАрд╕реАрд╕реА рдХрд╛ рднреА рд╕рдорд░реНрдерди рдХрд░реЗ?

рдореЗрд░реЗ рджрд┐рдорд╛рдЧ рдореЗрдВ рдЗрд╕рдХрд╛ рдЬрд╡рд╛рдм рд╣рд╛рдВ рд╣реИред рдХрдВрдкрд╛рдЗрд▓рд░реНрд╕ рд╕реНрд╡рдпрдВ рд╡реАрдПрд╕ рдХрдореНрдпреБрдирд┐рдЯреА рд╕реЗ рдореБрдХреНрдд рд╣реИрдВ, рдФрд░ рдкреВрд░реНрдг рд╡рд┐рдВрдбреЛрдЬрд╝ рд╕рдорд░реНрдерди рдирд╣реАрдВ рд╣реЛрдиреЗ рд╕реЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдирд┐рд░рд╛рд╢рд╛ рд╣реЛрддреА рд╣реИред рдореБрдЭреЗ github.com/Microsoft/hcsshim (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП) рд╕рдВрдХрд▓рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд▓рд┐рдирдХреНрд╕ рдмреЙрдХреНрд╕ рдЦрдбрд╝рд╛ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рдХреНрдпреЛрдВрдХрд┐ рдПрдХ рд╡рд┐рдВрдбреЛрдЬрд╝ рдЯреВрд▓рдЪреЗрди рд╕рдорд░реНрдерд┐рдд рдирд╣реАрдВ рд╣реИред

рд╡рд┐рдВрдбреЛрдЬ рдЯреВрд▓рдЪреЗрди рдХрд╛ рд╕рдорд░реНрдерди рди рдХрд░рдиреЗ рдХрд╛ рдХреНрдпрд╛ рдХрд╛рд░рдг рд╣реЛрдЧрд╛?

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдПрдордПрд╕рд╡реАрд╕реА рдСрдмреНрдЬреЗрдХреНрдЯ рдлрд╛рдЗрд▓реЛрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд┐рджреНрдзрд╛рдВрдд рд░реВрдк рдореЗрдВ рдпрд╣ рдареАрдХ рд╣реИред рд╣рдореЗрдВ рдПрдХ рдмрд┐рд▓реНрдбрд░ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред

рдореЗрд░реА рдореБрдЦреНрдп рдЪрд┐рдВрддрд╛ рдпрд╣ рд╣реИ рдХрд┐ рд╡рд┐рдВрдбреЛрдЬ рдпрд╛ рдПрдордПрд╕рд╡реАрд╕реА рд░рд┐рд▓реАрдЬ рдХреЗ рдмреАрдЪ рдкреНрд░рд╛рд░реВрдк рдХрд┐рддрдирд╛ рдмрджрд▓ рд╕рдХрддрд╛ рд╣реИред рдЕрдзрд┐рдХрд╛рдВрд╢ рдЕрдиреНрдп рдкреНрд▓реЗрдЯрдлрд╛рд░реНрдореЛрдВ рдкрд░ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдиреЗ рд╡рд╛рд▓рд╛ рдИрдПрд▓рдПрдл рдкреНрд░рд╛рд░реВрдк рдмрд╣реБрдд рд╕реНрдерд┐рд░ рд╣реИ; рдирдП рдкреНрд░реЛрд╕реЗрд╕рд░ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рдЬреЛрдбрд╝рдиреЗ рдХреЗ рдЕрд▓рд╛рд╡рд╛ рд╣рдореЗрдВ рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕реЗ рдИрдПрд▓рдПрдл рд╕рдорд░реНрдерди рдХреЛ рдмрд╣реБрдд рдХрдо рдХрд░рдирд╛ рдкрдбрд╝рддрд╛ рд╣реИред рдХреНрдпрд╛ MSVC рдлрд╝рд╛рдЗрд▓ рд╕реНрд╡рд░реВрдк рд╕рдорд╛рди рд░реВрдк рд╕реЗ рд╕реНрдерд┐рд░ рд╣реИ?

MSVC рдЯреВрд▓рдЪреЗрди рд╕реЗ рдЬреБрдбрд╝реЗ рдкреНрд░рд╛рд░реВрдк рдХрд╛рдлреА рд╕реНрдерд┐рд░ рд╣реИрдВред рд╕рдмрд╕реЗ рдмрдбрд╝рд╛ рдореБрджреНрджрд╛ рд╕реНрд╡рдпрдВ рдЯреВрд▓ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рд╣реИред рдорд╛рдЗрдХреНрд░реЛрд╕реЙрдлреНрдЯ рдореЗрдВ рд╡рд┐рдЬреБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ рдХреЗ рд░рд┐рд▓реАрдЬ рдХреЗ рдмреАрдЪ рдЪреАрдЬреЛрдВ рдХреЛ рдЗрдзрд░-рдЙрдзрд░ рдХрд░рдиреЗ рдХреА рдкреНрд░рд╡реГрддреНрддрд┐ рд╣реИ (рдлрд╛рдЗрд▓реЗрдВ рдФрд░ рд░рдЬрд┐рд╕реНрдЯреНрд░реА рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐рдпрд╛рдВ)ред рдЗрдирдореЗрдВ рд╕реЗ рдЕрдзрд┐рдХрд╛рдВрд╢ рд╡рд┐рдиреНрдпрд╛рд╕ рдпреЛрдЧреНрдп рд╣реИ (рдХрдо рд╕реЗ рдХрдо рдкреИрдЪ рдореЗрдВ рдореИрдВрдиреЗ рд▓рд┐рдЦрд╛ рдерд╛) рд▓реЗрдХрд┐рди рд╕рдВрднрд╛рд╡рдирд╛ рдЕрднреА рднреА рдореМрдЬреВрдж рд╣реИ рдХрд┐ рдЬрдм рд╡рд┐рдЬреБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ рдХрд╛ рдПрдХ рдирдпрд╛ рдкреНрд░рдореБрдЦ рд╕рдВрд╕реНрдХрд░рдг рдЬрд╛рд░реА рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рддреЛ рдпрд╣ рдЧреЛ рдореЗрдВ рдмрджрд▓рд╛рд╡ рдХрд┐рдП рдмрд┐рдирд╛ рдмрд┐рд▓реНрдб рдЯреВрд▓рдЪреЗрди рдХреЗ рд░реВрдк рдореЗрдВ рд╕рдВрдЧрдд рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐ рд╡рд┐рдЬреБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ рдХреЗ рд╕рднреА рд╕рдорд░реНрдерд┐рдд рдкреВрд░реНрд╡ рд╕рдВрд╕реНрдХрд░рдг рдХрд╛рдо рдХрд░рдирд╛ рдЬрд╛рд░реА рд░рдЦреЗрдВрдЧреЗред

рдЬрд╣рд╛рдВ рддрдХ тАЛтАЛтАЛтАЛрдореБрдЭреЗ рдкрддрд╛ рд╣реИ, рд╕реАрдУрдПрдлрдПрдл рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рдЙрдЪрд┐рдд рд╕реНрдерд┐рд░рддрд╛ рд╣реИ рдпрджрд┐ рдЖрдк рд╕реНрд╡рдпрдВ рдХреЛ рдХреЗрд╡рд▓ рд╕реА рдПрдмреАрдЖрдИ (рд╕реА ++ рдирд╣реАрдВ) рдХреЗ рд╕рд╛рдордиреЗ рдЙрдЬрд╛рдЧрд░ рдХрд░рддреЗ рд╣реИрдВред рдпрд╣ рднреА рд╡реНрдпрд╛рдкрдХ рд░реВрдк рд╕реЗ рдкреНрд░рд▓реЗрдЦрд┐рдд рд╣реИ рдФрд░ рдПрд▓рдПрд▓рд╡реАрдПрдо рдПрдХ рд╕рдВрджрд░реНрдн рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред

@ccamplin рдореИрдВ рдЕрдиреБрд╢рдВрд╕рд╛

рд╣рдореЗрдВ рдПрдХ рдмрд┐рд▓реНрдбрд░ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред

@ianlancetaylor рдПрдХ рдмрд╛рд░ MSVC рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдЗрд░рд╛рджреЗ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд┐рджреНрдз рд╣реЛ рдЧрдП рд╣реИрдВ, рдХреНрдпрд╛ рдЖрдк рдорд╛рдирддреЗ рд╣реИрдВ рдХрд┐ msys/cygwin рдмрд┐рд▓реНрдбрд░ рдФрд░ MSVC рдмрд┐рд▓реНрдбрд░ рджреЛрдиреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА, рдпрд╛ рдХреЗрд╡рд▓ MSVC рдмрд┐рд▓реНрдбрд░ рд╣реЛрдЧрд╛?

рдореБрдЭреЗ рдпрдХреАрди рд╣реИ рдХрд┐ рдХреБрдЫ рд▓реЛрдЧ рд╕рд╛рдЗрдмрд░рд╡рд┐рди рдЯреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдкрд╕рдВрдж рдХрд░реЗрдВрдЧреЗ, рдФрд░ рд╡реЗ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдХрд╛рдо рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдФрд░ рд╣рдо рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдХрд┐ рд╡реЗ рдХрд╛рдо рдХрд░рдирд╛ рдЬрд╛рд░реА рд░рдЦреЗрдВ, рдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рдореЗрдВ рджреЛ рдмрд┐рд▓реНрдбрд░реЛрдВ рдХреА рдЬрд░реВрд░рдд рд╣реИред

рдЕрд░реЗ рдпрд╣ рдЗрд╕ рдзрд╛рдЧреЗ рдХреЗ рдиреАрдЪреЗ рд╕реЗ рджрд┐рдЦрддрд╛ рд╣реИ рдХрд┐ рдЖрдкрдиреЗ рдЕрдкрдиреЗ рдПрдордПрд╕рд╡реАрд╕реА рдореБрджреНрджреЛрдВ рдХреЛ рд╕реБрд▓рдЭрд╛ рд▓рд┐рдпрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдЖрдкрдХреЛ рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдЖрддреА рд╣реИ, рддреЛ рдореИрдВ рдПрдордПрд╕рд╡реАрд╕реА рдЯреАрдо рдореЗрдВ рд╣реВрдВред рдмреЗрдЭрд┐рдЭрдХ рдореБрдЭреЗ рдЬреАрдердм рдпрд╛ рдИрдореЗрд▓ рдкрд░ рдкрд┐рдВрдЧ рдХрд░реЗрдВ ([email protected])

рд╣рдореЗрдВ рдПрдХ рдмрд┐рд▓реНрдбрд░ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред

рд╣рд╛рдВред рдФрд░ рд╣рдореЗрдВ рд╕рдВрднрд╛рд╡рд┐рдд рд░реВрдк рд╕реЗ рдЕрдкрдиреЗ рдореМрдЬреВрджрд╛ рдмрд┐рд▓реНрдбрд░реЛрдВ рдХреЛ рдПрдордПрд╕ рдмрд┐рд▓реНрдб рдЯреВрд▓реНрд╕ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрджрд▓рдиреЗ рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЗрд╕рд▓рд┐рдП рд╣рдо рдЙрдирдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рд╣рдо рдЗрд╕ рдореБрджреНрджреЗ рдХреЗ рд▓рд┐рдП рд╕реАрдПрд▓ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддреЗ рд╣реИрдВред

рд╣рдо рдЕрдкрдиреЗ рд╕рднреА рдмрд┐рд▓реНрдбрд░реЛрдВ рдкрд░ gcc рдЯреВрд▓ рдФрд░ Microsoft рдЯреВрд▓ рджреЛрдиреЛрдВ рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдХреНрдпрд╛ рд╣рдо all.bat рдЪрд▓рд╛ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рдПрдХ рд╣реА рдмрд╛рд░ рдореЗрдВ gcc рдФрд░ microsoft рджреЛрдиреЛрдВ рдЯреВрд▓ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рддрд╛ рд╣реИ? рдпрджрд┐ рдирд╣реАрдВ, рддреЛ рд╣рдореЗрдВ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдЯреВрд▓ рдХреЗ рд▓рд┐рдП рдЕрд▓рдЧ-рдЕрд▓рдЧ рдмрд┐рд▓реНрдбрд░реЛрдВ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред рдРрд╕реЗ рдХреМрди рд╕реЗ рдкреИрд░рд╛рдореАрдЯрд░ рд╣реИрдВ рдЬреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рдмрд╛рд╣рд░реА рдХрдВрдкрд╛рдЗрд▓рд░ рдФрд░ рд▓рд┐рдВрдХрд░реНрд╕ рдХрд╛ рдХреНрдпрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ?

рдореЗрд░реА рдореБрдЦреНрдп рдЪрд┐рдВрддрд╛ рдпрд╣ рд╣реИ рдХрд┐ рд╡рд┐рдВрдбреЛрдЬ рдпрд╛ рдПрдордПрд╕рд╡реАрд╕реА рд░рд┐рд▓реАрдЬ рдХреЗ рдмреАрдЪ рдкреНрд░рд╛рд░реВрдк рдХрд┐рддрдирд╛ рдмрджрд▓ рд╕рдХрддрд╛ рд╣реИред

рдЖрдкрдХреЛ рд╡рд┐рдВрдбреЛрдЬрд╝ рдХреЗ рд╕рд╛рде рдПрдХ рдХрдВрдкрд╛рдЗрд▓рд░ рд╕реНрдерд╛рдкрд┐рдд рдирд╣реАрдВ рдорд┐рд▓рддрд╛ рд╣реИред рдЖрдкрдХреЛ рдЗрд╕реЗ рд╕реНрд╡рдпрдВ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдЬреИрд╕реЗ рд╣рдо рдЬреАрд╕реАрд╕реА рдХреЗ рд╕рд╛рде рдХрд░рддреЗ рд╣реИрдВред рд╣рдо рдЬреЛ рднреА рд╕рдВрд╕реНрдХрд░рдг рдкрд╕рдВрдж рдХрд░рддреЗ рд╣реИрдВ рдЙрд╕реЗ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рддреЗ рд╣реИрдВред рд╣рдо рд╡рд┐рднрд┐рдиреНрди рдмрд┐рд▓реНрдбрд░реЛрдВ рдкрд░ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдЬреАрд╕реАрд╕реА рд╕рдВрд╕реНрдХрд░рдг рднреА рдЪрд▓рд╛ рд╕рдХрддреЗ рд╣реИрдВред

рдХреНрдпрд╛ MSVC рдлрд╝рд╛рдЗрд▓ рд╕реНрд╡рд░реВрдк рд╕рдорд╛рди рд░реВрдк рд╕реЗ рд╕реНрдерд┐рд░ рд╣реИ?

рдореБрдЭреЗ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рдирд╣реАрдВ рдкрддрд╛ред рдореБрдЭреЗ рд╕рдВрджреЗрд╣ рд╣реИ рдХрд┐ рдЖрдк рдХреЗрд╡рд▓ рдкреНрд░рджрд╛рди рдХрд┐рдП рдЧрдП рдЯреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред

рдПрд▓реЗрдХреНрд╕

рдореЗрд░реА рдореБрдЦреНрдп рдЪрд┐рдВрддрд╛ рдпрд╣ рд╣реИ рдХрд┐ рд╡рд┐рдВрдбреЛрдЬ рдпрд╛ рдПрдордПрд╕рд╡реАрд╕реА рд░рд┐рд▓реАрдЬ рдХреЗ рдмреАрдЪ рдкреНрд░рд╛рд░реВрдк рдХрд┐рддрдирд╛ рдмрджрд▓ рд╕рдХрддрд╛ рд╣реИред рдЕрдзрд┐рдХрд╛рдВрд╢ рдЕрдиреНрдп рдкреНрд▓реЗрдЯрдлрд╛рд░реНрдореЛрдВ рдкрд░ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдиреЗ рд╡рд╛рд▓рд╛ рдИрдПрд▓рдПрдл рдкреНрд░рд╛рд░реВрдк рдмрд╣реБрдд рд╕реНрдерд┐рд░ рд╣реИ; рдирдП рдкреНрд░реЛрд╕реЗрд╕рд░ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рдЬреЛрдбрд╝рдиреЗ рдХреЗ рдЕрд▓рд╛рд╡рд╛ рд╣рдореЗрдВ рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕реЗ рдИрдПрд▓рдПрдл рд╕рдорд░реНрдерди рдХреЛ рдмрд╣реБрдд рдХрдо рдХрд░рдирд╛ рдкрдбрд╝рддрд╛ рд╣реИред рдХреНрдпрд╛ MSVC рдлрд╝рд╛рдЗрд▓ рд╕реНрд╡рд░реВрдк рд╕рдорд╛рди рд░реВрдк рд╕реЗ рд╕реНрдерд┐рд░ рд╣реИ?

рд╣рд╛рдВ, рд╕реАрдУрдПрдлрдПрдл рдмрд╣реБрдд рд╕реНрдерд┐рд░ рд╣реИред

@bradfitz рдФрд░ @ianlancetaylor рдЗрд╕ рдореБрджреНрджреЗ рдХреЗ рд▓рд┐рдП рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд┐рдВрдбреЛрдЬрд╝ рдмрд┐рд▓реНрдбрд░ рдЙрдкрд▓рдмреНрдз рдХрд░рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╣рдореЗрдВ рдХреНрдпрд╛ рдЪрд╛рд╣рд┐рдП? рдореЗрд░реЗ рдкреНрд░рд╢реНрди https://github.com/golang/go/issues/20982#issuecomment -370719472 рдкрд░

рд╢реБрдХреНрд░рд┐рдпрд╛

рдПрд▓реЗрдХреНрд╕

рдЧреЛ рдЕрдм рдПрдордПрд╕рд╡реАрд╕реА рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░ рд░рд╣рд╛ рд╣реИ?

рдмрджрд▓реЗрдВ https://golang.org/cl/110555 рдЗрд╕ рдореБрджреНрджреЗ рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд░рддрд╛ рд╣реИ: debug/pe: parse the import directory correctly

@alexbrainman @bradfitz @ianlancetaylor :

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдкреИрдЪ рдХреЛ рд╕рд╛рдл рдХрд░рдиреЗ рдФрд░ рдЕрдзрд┐рдХ рд╕реБрдкрд╛рдЪреНрдп рдЯреБрдХрдбрд╝реЛрдВ рдореЗрдВ рддреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдореИрдВрдиреЗ рдЕрдзрд┐рдХрд╛рдВрд╢ рдЖрд╡рд╢реНрдпрдХ рдХрд╛рд░реНрдп рдХрд┐рдП рд╣реИрдВред рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛрд╣реИ рдХрд┐ рдореИрдВ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЛ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд░реВрдк рд╕реЗ рдкреНрд░рд╕реНрддреБрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд╣реЛрдиреЗ рдХреЗ рдХрд░реАрдм рд╣реВрдВред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореБрдЭреЗ рдпрд╣ рдЬрд╛рдирдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдореБрдЭреЗ рдХреЛрдб рдЬрдорд╛ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдмрд┐рд▓реНрдбрд░ рдХреА рд╕реНрдерд┐рддрд┐ рдкрд░ рд╢рдмреНрдж рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░рдиреА рдЪрд╛рд╣рд┐рдП рдпрд╛ рдмрд╕ рдЗрд╕реЗ рдЬрд▓реНрдж рд╕реЗ рдЬрд▓реНрдж рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП?

рдЖрдк рдХрд┐рд╕реА рднреА рд╕рдордп рд╕реАрдПрд▓ рднреЗрдЬ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдХрд┐рд╕реА рдХреЛ рдПрдХ рдмрд┐рд▓реНрдбрд░ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдЕрдиреНрдпрдерд╛ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЙрдирдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рдирд╣реАрдВ рд╣реИред

@johnsonj , рдХреНрдпрд╛ рдЖрдк рд╣рдорд╛рд░реА рд╡рд┐рдВрдбреЛрдЬрд╝ рдЫрд╡рд┐рдпреЛрдВ рдореЗрдВ рдПрдордПрд╕рд╡реАрд╕реА рдХрдВрдкрд╛рдЗрд▓рд░ рдЯреВрд▓реНрд╕ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ?

рдореИрдВ рдЖрджрд░реНрд╢ рд░реВрдк рд╕реЗ рдПрдХ рдирдпрд╛ рд╣реЛрд╕реНрдЯ рдкреНрд░рдХрд╛рд░ рдирд╣реАрдВ рдЬреЛрдбрд╝рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдФрд░ рд╣рдорд╛рд░реЗ рдореМрдЬреВрджрд╛ рд╡рд┐рдВрдбреЛрдЬрд╝ рд╣реЛрд╕реНрдЯ рдкреНрд░рдХрд╛рд░реЛрдВ рдореЗрдВ рд╕реЗ рдХреЗрд╡рд▓ 1-3 рдХреЛ рд╕рд╛рдЗрдЧрд╡рд┐рди рдХреЗ рдЕрддрд┐рд░рд┐рдХреНрдд рдПрдордПрд╕рд╡реАрд╕реА рдЯреВрд▓реНрд╕ рдмрдирд╛рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред рдФрд░ рдлрд┐рд░ рд╣рдо рдЙрди рд╕рдВрд╢реЛрдзрд┐рдд рд╣реЛрд╕реНрдЯ рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЗ рд╢реАрд░реНрд╖ рдкрд░ рдЕрдзрд┐рдХ рдмрд┐рд▓реНрдбрд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВред

/cc @andybons @bcmills FYI рдХреЗ рд░реВрдк рдореЗрдВ (рд╡рд┐рдВрдбреЛрдЬ рд╕рд╛рдорд╛рди рдХреИрд╕реЗ рд╣реЛрддрд╛ рд╣реИ ... рд╣рдо рдЬреЗрдл рд╕реЗ рдорджрдж рдХреА рднреАрдЦ рдорд╛рдБрдЧрддреЗ рд╣реИрдВ :))

@johnsonj , рдХреНрдпрд╛ рдЖрдк рд╣рдорд╛рд░реА рд╡рд┐рдВрдбреЛрдЬрд╝ рдЫрд╡рд┐рдпреЛрдВ рдореЗрдВ рдПрдордПрд╕рд╡реАрд╕реА рдХрдВрдкрд╛рдЗрд▓рд░ рдЯреВрд▓реНрд╕ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ?

@ccamplin рдореЗрд░рд╛ рд╕реБрдЭрд╛рд╡ рд╣реИ рдХрд┐ рдЖрдк рд╕реНрд╡рдпрдВ рдмрд┐рд▓реНрдбрд░ рдХреЗ рд▓рд┐рдП рдЬреЛ рднреА рдЙрдкрдХрд░рдг рдЖрд╡рд╢реНрдпрдХ рд╣реИрдВ рдЙрдиреНрд╣реЗрдВ рдЬреЛрдбрд╝рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВред рдХреЛрдИ рдФрд░ рдирд╣реАрдВ, рд▓реЗрдХрд┐рди рдЖрдк рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдХреНрдпрд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИред рдкреВрд░реНрдг рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХреЗ рд▓рд┐рдП рдЖрдк golang.org/x/build/env/windows рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВред рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдЖрдк, рд╢рд╛рдпрдж, рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк.ps1 рдореЗрдВ рдФрд░ рд▓рд╛рдЗрдиреЗрдВ рдЬреЛрдбрд╝рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рдПрдХ рдмрд╛рд░ рдЬрдм рдЖрдк рдЬрд╛рди рдЬрд╛рддреЗ рд╣реИрдВ рдХрд┐ рдЙрд╕ рдирд┐рджреЗрд╢рдХ рдореЗрдВ рдХреНрдпрд╛ рдкрд░рд┐рд╡рд░реНрддрди рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рдкрд░рд┐рд╡рд░реНрддрди рдХрд░реЗрдВ рдФрд░ рдЕрдкрдиреЗ рдкрд░рд┐рд╡рд░реНрддрди рдХреЛ рд╕рдореАрдХреНрд╖рд╛ рдХреЗ рд▓рд┐рдП https://golang.org/doc/contribute.html рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рднреЗрдЬреЗрдВред

рдореИрдВ рдЖрджрд░реНрд╢ рд░реВрдк рд╕реЗ рдПрдХ рдирдпрд╛ рд╣реЛрд╕реНрдЯ рдкреНрд░рдХрд╛рд░ рдирд╣реАрдВ рдЬреЛрдбрд╝рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдФрд░ рд╣рдорд╛рд░реЗ рдореМрдЬреВрджрд╛ рд╡рд┐рдВрдбреЛрдЬрд╝ рд╣реЛрд╕реНрдЯ рдкреНрд░рдХрд╛рд░реЛрдВ рдореЗрдВ рд╕реЗ рдХреЗрд╡рд▓ 1-3 рдХреЛ рд╕рд╛рдЗрдЧрд╡рд┐рди рдХреЗ рдЕрддрд┐рд░рд┐рдХреНрдд рдПрдордПрд╕рд╡реАрд╕реА рдЯреВрд▓реНрд╕ рдмрдирд╛рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред рдФрд░ рдлрд┐рд░ рд╣рдо рдЙрди рд╕рдВрд╢реЛрдзрд┐рдд рд╣реЛрд╕реНрдЯ рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЗ рд╢реАрд░реНрд╖ рдкрд░ рдЕрдзрд┐рдХ рдмрд┐рд▓реНрдбрд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВред

рд╡рд┐рдВрдбреЛрдЬрд╝ рдкрд░ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рд╣рдореЗрд╢рд╛ рдорд┐рдВрдЧрд╡ (рдЬреАрд╕реАрд╕реА) рд╕реА рдХрдВрдкрд╛рдЗрд▓рд░ рдФрд░ рд▓рд┐рдВрдХрд░ рдерд╛ред рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдХрднреА рднреА рд╕реА рдмрд┐рд▓реНрдб рдЯреВрд▓реНрд╕ рдХреЗ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╕реЗрдЯ рдирд╣реАрдВ рд╣реЛрддреЗ рд╣реИрдВред рдПрдХ рдмрд╛рд░ рдЬрдм рд╣рдо рдорд╛рдЗрдХреНрд░реЛрд╕реЙрдлреНрдЯ рд╕реА рдХрдВрдкрд╛рдЗрд▓рд░ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ, рддреЛ рдХреНрдпрд╛ рдпрд╣ рд╕рдВрднрд╡ рд╣реЛрдЧрд╛ рдХрд┐ рд╕рднреА рдХреЗ рдПрдХ рд░рди рдХреЗ рд╕рд╛рде рдорд┐рдВрдЧрд╡ рдФрд░ рдорд╛рдЗрдХреНрд░реЛрд╕реЙрдлреНрдЯ рд╕реА рджреЛрдиреЛрдВ рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХреЗред рдпрд╛ рдХреНрдпрд╛ рдорд┐рдВрдЧрд╡ рдпрд╛ рдорд╛рдЗрдХреНрд░реЛрд╕реЙрдлреНрдЯ рд╕реА рдПрдХ рджреВрд╕рд░реЗ рдХреЛ рдмрд╛рд╣рд░ рдХрд░рддреЗ рд╣реИрдВ? рдХреНрдпрд╛ рд╣рдореЗрдВ рдорд┐рдВрдЧрд╡ рдпрд╛ рдорд╛рдЗрдХреНрд░реЛрд╕реЙрдлреНрдЯ рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░ рд╕реЗрдЯ рдХрд░рдирд╛ рд╣реЛрдЧрд╛, рд▓реЗрдХрд┐рди рджреЛрдиреЛрдВ рдХреЛ рдХрднреА рдирд╣реАрдВ? рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореИрдВ рдпрд╣ рд╕рдордЭрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдХрд┐ рдХреЛрдб рдХреЛ рдХреИрд╕реЗ рд╕рдВрд░рдЪрд┐рдд рдФрд░ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рд╕рд╛рде рд╣реА рдпрд╣ рддрдп рдХрд░реЗрдЧрд╛ рдХрд┐ рд╣рдореЗрдВ рдХрд┐рддрдиреЗ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдмрд┐рд▓реНрдбрд░реЛрдВ рдХреА рдЬрд░реВрд░рдд рд╣реИред

рдПрд▓реЗрдХреНрд╕

рдореИрдВ рдЫрд╡рд┐ рдореЗрдВ рдмрд╛рдпрдиреЗрд░рд┐рдЬрд╝ рдХреЛ рдмреЗрдХ рдХрд░рдиреЗ рдкрд░ рдзреНрдпрд╛рди рджреВрдВрдЧрд╛

рдмрджрд▓реЗрдВ https://golang.org/cl/112036 рдЗрд╕ рдореБрджреНрджреЗ рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд░рддрд╛ рд╣реИ: env/windows: add visual studio tools to image

@johnsonj @bradfitz: рд╣реЛ рд░рд╣реА рд╣реИ рдХрд┐ рдмрд┐рд▓реНрдбрд░ рдореЗрдВ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред

@alexbrainman @bradfitz @ianlancetaylor : рддреЛ рдЬрд╣рд╛рдВ рддрдХ тАЛтАЛрдЗрд╕рдХреЗ рд▓рд┐рдП рдкрд░реАрдХреНрд╖рдг рд░рдгрдиреАрддрд┐ рдХреА рдмрд╛рдд рд╣реИ, рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреНрдпрд╛ рдХрд░рдирд╛ рд╣реИред рд╣рдо рдЦрд┐рдбрд╝рдХреА рдкрд░ рджреЛрдиреЛрдВ рдЯреВрд▓рдЪреЗрди рдХреЗ рд▓рд┐рдП рдбрд┐рд╕реНрдЯ рдЯреЗрд╕реНрдЯ рдЪрд▓рд╛рдиреЗ рдХрд╛ рд░рд╛рд╕реНрддрд╛ рдЕрдкрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рд╣рд░ рдЯреЗрд╕реНрдЯ рджреЛ рдмрд╛рд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдпрд╛ рдХреНрдпрд╛ рд╣рдореЗрдВ рдХреЗрд╡рд▓ рджреЛ рдмрд╛рд░ рд╕реАрдЬреАрдУ рдЯреЗрд╕реНрдЯ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП (рдПрдХ рдмрд╛рд░ рдЬреАрд╕реАрд╕реА рдХреЗ рд▓рд┐рдП, рдПрдХ рдмрд╛рд░ рдПрдордПрд╕рд╡реАрд╕реА рдХреЗ рд▓рд┐рдП)?

рддреЛ рдЗрд╕рдХреЗ рд▓рд┐рдП рдкрд░реАрдХреНрд╖рдг рд░рдгрдиреАрддрд┐ рдХреЗ рд░реВрдк рдореЗрдВ рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреНрдпрд╛ рдХрд░рдирд╛ рд╣реИред рд╣рдо рдЦрд┐рдбрд╝рдХреА рдкрд░ рджреЛрдиреЛрдВ рдЯреВрд▓рдЪреЗрди рдХреЗ рд▓рд┐рдП рдбрд┐рд╕реНрдЯ рдЯреЗрд╕реНрдЯ рдЪрд▓рд╛рдиреЗ рдХрд╛ рд░рд╛рд╕реНрддрд╛ рдЕрдкрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рд╣рд░ рдЯреЗрд╕реНрдЯ рджреЛ рдмрд╛рд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдпрд╛ рдХреНрдпрд╛ рд╣рдореЗрдВ рдХреЗрд╡рд▓ рджреЛ рдмрд╛рд░ рд╕реАрдЬреАрдУ рдЯреЗрд╕реНрдЯ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП (рдПрдХ рдмрд╛рд░ рдЬреАрд╕реАрд╕реА рдХреЗ рд▓рд┐рдП, рдПрдХ рдмрд╛рд░ рдПрдордПрд╕рд╡реАрд╕реА рдХреЗ рд▓рд┐рдП)?

@ccamplin рдореЗрд░реЗ рдкрд╛рд╕ рдЖрдкрдХреЗ рдкреНрд░рд╢реНрди рдХрд╛ рдЙрддреНрддрд░ рдирд╣реАрдВ рд╣реИред рдореБрдЭреЗ рд╕рдВрджреЗрд╣ рд╣реИ рдХрд┐ рдЗрдпрд╛рди рдЬрд╡рд╛рдм рдЬрд╛рдирддрд╛ рд╣реИред

рдПрд▓реЗрдХреНрд╕

рдХреЗрд╡рд▓ cgo рдХреЗ рдмрдЬрд╛рдп рд╕рднреА рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЛ рджреЛ рдмрд╛рд░ рдЪрд▓рд╛рдиреЗ рдХреА рд▓рд╛рдЧрдд рдХреНрдпрд╛ рд╣реИ?

@mxplusb , рд╣рдо рд╕рд┐рд░реНрдл рд╡рд┐рдВрдбреЛрдЬ рдХреЗ рд▓рд┐рдП рдПрдХ рдирдпрд╛ рдмрд┐рд▓реНрдб рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдЪрд▓рд╛ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдпрд╣ рд╣рдорд╛рд░реЗ рдореМрдЬреВрджрд╛ 3 рдХреЗ рд╕рдорд╛рдирд╛рдВрддрд░ рдЪрд▓реЗрдЧрд╛ред рдПрдХ рдирдпрд╛ рдмрд┐рд▓реНрдбрд░ рдХреЙрдиреНрдлрд┐рдЧрд░реЗрд╢рди рдареАрдХ рд╣реИред рд╣рдо рдЙрдиреНрд╣реЗрдВ рдирд┐рдпрдорд┐рдд рд░реВрдк рд╕реЗ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВред

рдмрд╕ рдореБрдЭреЗ рдмрддрд╛рдПрдВ рдХрд┐ рдЗрд╕реЗ рдЕрд▓рдЧ рдХреИрд╕реЗ рдмрдирд╛рдпрд╛ рдЬрд╛рдП: рдПрдХ рдЕрд▓рдЧ/рдирдпрд╛ рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░ рд╕реЗрдЯ рдХрд░реЗрдВ рдФрд░ рдлрд┐рд░ рдЙрд╕ рдкрд░ рдХреБрдЫ рдЙрдард╛рдПрдЧрд╛, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ?

рдЗрд╕реЗ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╢рд╛рдпрдж рдХреБрдЫ рдЪреАрдЬреЗрдВ рд▓реЗрдиреА рд╣реЛрдВрдЧреАред

рдпрд╛ рддреЛ рд╣рдореЗрдВ рдПрдХ рд╢реЗрд▓/рд╡рд╛рддрд╛рд╡рд░рдг рдХреЗ рдЕрдВрджрд░ рдЪрд▓рд╛рдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИ, рдЬрд╣рд╛рдВ рдЙрдкрдпреБрдХреНрдд vsvars.bat рдХреЛ рдЪрд▓рд╛рдиреЗ/рдХреЙрд▓ рдХрд┐рдП рдЬрд╛рдиреЗ рдХреЗ рдмрд╛рдж рдбрд┐рд╕реНрдЯ рдЯреЗрд╕реНрдЯ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдЧреЛ рдЯреЗрд╕реНрдЯ рдХреЛ рдЕрдВрджрд░ рдЪрд▓рд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛

рдпрд╛ рд╣рдо рдЙрдкрдпреБрдХреНрдд vsvars рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░ рдирд┐рдХрд╛рд▓ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдлрд┐рд░ рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП рдЙрдиреНрд╣реЗрдВ рд╕реЗрдЯ/рдкрд╛рд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рд╣рдо рд╢рд╛рдпрдж рдХреБрдЫ рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░ рднреА рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдЬреЛ dist рдпрд╛ make.bat рдХреЛ рдмрддрд╛рдП рдХрд┐ рд╣рдо -compiler msvc рд╕реЗрдЯ рдХреЗ рд╕рд╛рде рдкрд░реАрдХреНрд╖рдг рдЪрд▓рд╛рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред

рдпрд╛ рддреЛ рд╣рдореЗрдВ рдПрдХ рд╢реЗрд▓/рд╡рд╛рддрд╛рд╡рд░рдг рдХреЗ рдЕрдВрджрд░ рдЪрд▓рд╛рдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИ, рдЬрд╣рд╛рдВ рдЙрдкрдпреБрдХреНрдд vsvars.bat рдХреЛ рдЪрд▓рд╛рдиреЗ/рдХреЙрд▓ рдХрд┐рдП рдЬрд╛рдиреЗ рдХреЗ рдмрд╛рдж рдбрд┐рд╕реНрдЯ рдЯреЗрд╕реНрдЯ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдЧреЛ рдЯреЗрд╕реНрдЯ рдХреЛ рдЕрдВрджрд░ рдЪрд▓рд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛

рдпрд╛ рд╣рдо рдЙрдкрдпреБрдХреНрдд vsvars рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░ рдирд┐рдХрд╛рд▓ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдлрд┐рд░ рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП рдЙрдиреНрд╣реЗрдВ рд╕реЗрдЯ/рдкрд╛рд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдореИрдВ рдкрд╕рдВрдж рдХрд░реВрдВрдЧрд╛ рдпрджрд┐ рд╣рдо dist.exe рдпрд╛ go.exe рд╕реЗ рдмреИрдЪ рдлрд╝рд╛рдЗрд▓реЗрдВ рдирд╣реАрдВ рдЪрд▓рд╛рддреЗ рд╣реИрдВред рдмреИрдЪ рдлрд╝рд╛рдЗрд▓реЛрдВ рд╕реЗ рдирд┐рдкрдЯрдиреЗ рдореЗрдВ рдкрд░реЗрд╢рд╛рдиреА рд╣реЛрддреА рд╣реИред

рд╣рдо рд╢рд╛рдпрдж рдХреБрдЫ рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░ рднреА рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдЬреЛ dist рдпрд╛ make.bat рдХреЛ рдмрддрд╛рдП рдХрд┐ рд╣рдо -compiler msvc рд╕реЗрдЯ рдХреЗ рд╕рд╛рде рдкрд░реАрдХреНрд╖рдг рдЪрд▓рд╛рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред

рдореИрдВ рдЙрдореНрдореАрдж рдХрд░ рд░рд╣рд╛ рдерд╛ рдХрд┐ рдЗрдпрд╛рди рдХреЛ рдкрддрд╛ рд╣реЛрдЧрд╛ рдХрд┐ рдпрд╣рд╛рдВ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рддрд░реАрдХрд╛ рдХреНрдпрд╛ рд╣реИред рдореИрдВ рдЬреЛ рдЬрд╛рдирддрд╛ рд╣реВрдВ рдЙрд╕рд╕реЗ рд╣рдо рдпреВрдирд┐рдХреНрд╕ рдкрд░ рднреА рд╡рд┐рднрд┐рдиреНрди рд╕реА рдХрдВрдкрд╛рдЗрд▓рд░реЛрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддреЗ рд╣реИрдВ (рдЬреАрд╕реАрд╕реА рдпрд╛ рдХреНрд▓реИрдВрдЧ)ред рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рд╣рдорд╛рд░реА рдирд┐рд░реНрдорд╛рдг рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╣рдореЗрдВ рд╡рд┐рднрд┐рдиреНрди рд╕реА рдХрдВрдкрд╛рдЗрд▓рд░реЛрдВ рдХреЗ рд▓рд┐рдП рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреА рд╣реИред

рдПрд▓реЗрдХреНрд╕

рдореИрдВрдиреЗ рдкрд╣рд▓реЗ рдзреНрдпрд╛рди рдирд╣реАрдВ рджрд┐рдпрд╛ рдХрд┐ рдЖрдк go build -compiler msvc рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдпреЛрдЬрдирд╛ рдмрдирд╛ рд░рд╣реЗ рд╣реИрдВред рдЗрд╕рдХрд╛ рдХреЛрдИ рдорддрд▓рдм рдирд╣реАрдВ рд╣реИред go build -compiler рд╡рд┐рдХрд▓реНрдк рдПрдХ рдЧреЛ рдХрдВрдкрд╛рдЗрд▓рд░ (рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдпрд╛ рддреЛ gc рдпрд╛ gccgo) рдХрд╛ рдирд╛рдо рд▓реЗрддрд╛ рд╣реИред рдпрд╣ рд╕реА рдХрдВрдкрд╛рдЗрд▓рд░ рдХрд╛ рдирд╛рдо рдирд╣реАрдВ рд▓реЗрддрд╛ рд╣реИред рд╕реА рдХрдВрдкрд╛рдЗрд▓рд░ CC рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░ рдореЗрдВ рдкрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдореЗрдХ.рдмреИрдЯ рдЪрд▓рд╛рддреЗ рд╕рдордп рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╕реА рдХрдВрдкрд╛рдЗрд▓рд░ CC_FOR_TARGET рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░ рд╕реЗрдЯ рдХрд░рдХреЗ рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреИрд╕рд╛ рдХрд┐ make.bat рдореЗрдВ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдореЗрдВ рдкреНрд░рд▓реЗрдЦрд┐рдд рд╣реИред

рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рдмрд┐рд▓реНрдбрд░ рд╣реЛрдЧрд╛ рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рд╣рдо all.bat рдЪрд▓рд╛рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ CC_FOR_TARGET рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░ рдХреЛ msvc рдкрд░ рд╕реЗрдЯ рдХрд░рдиреЗ рдХреА рд╡реНрдпрд╡рд╕реНрдерд╛ рдХрд░рддреЗ рд╣реИрдВред рдореИрдВ рдирд╣реАрдВ рджреЗрдЦрддрд╛ рдХрд┐ рд╣рдореЗрдВ рдХреБрдЫ рдФрд░ рдХреНрдпреЛрдВ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред

рд╕реА рдХрдВрдкрд╛рдЗрд▓рд░ рд╕реАрд╕реА рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░ рдореЗрдВ рдкрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдореЗрдХ.рдмреИрдЯ рдЪрд▓рд╛рддреЗ рд╕рдордп рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╕реА рдХрдВрдкрд╛рдЗрд▓рд░ CC_FOR_TARGET рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░ рд╕реЗрдЯ рдХрд░рдХреЗ рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреИрд╕рд╛ рдХрд┐ make.bat рдореЗрдВ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдореЗрдВ рдкреНрд░рд▓реЗрдЦрд┐рдд рд╣реИред

рд╕рдордЭрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж рдЗрдпрд╛рдиред

@ccamplin рдореБрдЭреЗ рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдЖрдк рдореМрдЬреВрджрд╛ рдореЙрдбрд▓ рдореЗрдВ рдлрд┐рдЯ рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдкрдиреЗ рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЛ рд╕рдорд╛рдпреЛрдЬрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдХреЛрдИ рдкрд░реЗрд╢рд╛рдиреА рд╣реЛ рддреЛ рд╣рдореЗрдВ рдмрддрд╛рдПрдВред рдзрдиреНрдпрд╡рд╛рджред

рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рдирд┐рд░реНрдорд╛рддрд╛ рд╣реЛрдЧрд╛ рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рд╣рдо all.bat рдЪрд▓рд╛рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ CC_FOR_TARGET рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░ рдХреЛ msvc рдкрд░ рд╕реЗрдЯ рдХрд░рдиреЗ рдХреА рд╡реНрдпрд╡рд╕реНрдерд╛ рдХрд░рддреЗ рд╣реИрдВред

рд╣рдорд╛рд░реЗ рдкрд╛рд╕ https://build.golang.org рдкрд░ 3 amd64 рд╡рд┐рдВрдбреЛрдЬрд╝ рдирд┐рд░реНрдорд╛рддрд╛ рд╣реИрдВ

рдПрд▓реЗрдХреНрд╕

@ianlancetaylor @alexbrainman -рдХрдВрдкрд╛рдЗрд▓рд░ рдзреНрд╡рдЬ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕рдордЭ рдЧрдпрд╛ред рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╕ CC="msvc" (рдпрд╛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ CC="cl.exe" ) рд╕реЗрдЯ рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рдЖрд╕рд╛рди рддрд░реАрдХрд╛ рд╣реИред MSVC рдХреЗ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП CC рдХреЛ рдЕрднреА рднреА GCC рд╕реНрдерд╛рди рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдПрдордПрд╕рд╡реАрд╕реА рдХрдВрдкрд╛рдЗрд▓рд░ рдЯреВрд▓рд╕реЗрдЯ рдореЗрдВ рд╕реАрдЬреАрдУ рдХреЛ рдЖрддреНрдордирд┐рд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдЯреВрд▓рд┐рдВрдЧ рдЙрдкрд▓рдмреНрдз рдирд╣реАрдВ рд╣реИ (рдкрд░рд┐рднрд╛рд╖рд╛ рд▓реБрдХрдЕрдк, рдЯрд╛рдЗрдк рд░рд┐рдЬрд╝реЙрд▓реНрдпреВрд╢рди) рдЗрд╕рд▓рд┐рдП рдЬреАрд╕реАрд╕реА рдЕрднреА рднреА рдПрдордПрд╕рд╡реАрд╕реА рдмрд┐рд▓реНрдб рдкрд░ рдЖрд╡рд╢реНрдпрдХ рд╣реИ, рдЬреАрд╕реАрд╕реА рдХрд╛ рдЙрдкрдпреЛрдЧ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕рдВрдХрд▓рди/рд▓рд┐рдВрдХрд┐рдВрдЧ рдЪрд░рдг рдореЗрдВ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рдХреНрдпрд╛ рдмрд┐рд▓реНрдб рдПрдЯ рдЬрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдирдпрд╛ рдЭрдВрдбрд╛ рдЬреЛрдбрд╝рдирд╛ рд╕реНрд╡реАрдХрд╛рд░реНрдп рд╣реЛрдЧрд╛ (рдЯреВрд▓рдЪреЗрди рдпрд╛ рдХреБрдЫ рдФрд░)? рдореБрдЭреЗ рд╡рд┐рд╢реНрд╡рд╛рд╕ рд╣реИ рдХрд┐ рдореБрдЭреЗ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╕реАрдЬреАрдУ рдореЗрдВ рдЯреВрд▓рдЪреЗрди рдзреНрд╡рдЬ рдЬреЛрдбрд╝рдирд╛ рдкрдбрд╝рд╛ рд╣реИред

рд╕рд╛рде рд╣реА CC_FOR_TARGET рдХреЛ all.bat рд╕реЗ рдкрд╣рд▓реЗ рд╕реЗрдЯ рдХрд░рдирд╛ рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕рдХреЗ рдирдХрд╛рд░рд╛рддреНрдордХ рдкрд░рд┐рдгрд╛рдо рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдмреВрдЯрд╕реНрдЯреНрд░реИрдкрд┐рдВрдЧ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЧрдП рдХрдВрдкрд╛рдЗрд▓рд░ рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░реЗрдЧрд╛ред рдореБрдЭреЗ рд╡рд┐рд╢реНрд╡рд╛рд╕ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдмреВрдЯрд╕реНрдЯреНрд░реИрдкрд┐рдВрдЧ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рджреМрд░рд╛рди рдПрдордПрд╕рд╡реАрд╕реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ (рдореИрдВ рдЗрд╕ рдкрд░ 100% рдирд╣реАрдВ рд╣реВрдВ, рдореИрдВрдиреЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреЛрд╢рд┐рд╢ рдирд╣реАрдВ рдХреА рд╣реИ рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдЕрддреНрдпрдзрд┐рдХ рд╕рдВрджреЗрд╣ рд╣реИ рдХрд┐ рдпрд╣ рдХрд╛рдо рдХрд░реЗрдЧрд╛)

рдореИрдВ рджреЗрдЦрддрд╛ рд╣реВрдВ, рдПрдордПрд╕рд╡реАрд╕реА рдХреЗ рд▓рд┐рдП рд╣рдореЗрдВ рдЬреАрд╕реАрд╕реА рдФрд░ рдПрдордПрд╕рд╡реАрд╕реА рджреЛрдиреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ? рдЬрд╣рд╛рдБ GCC рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреЗрд╡рд▓ cgo рдЯреВрд▓ рджреНрд╡рд╛рд░рд╛ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ? рдпрд╣ рдХреБрдЫ рд╣рдж рддрдХ рджреБрд░реНрднрд╛рдЧреНрдпрдкреВрд░реНрдг рд▓рдЧрддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рд╣рдо рдмрд┐рд▓реНрдХреБрд▓ рдЙрд╕реА рдПрдмреАрдЖрдИ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдЬреАрд╕реАрд╕реА рдФрд░ рдПрдордПрд╕рд╡реАрд╕реА рдкрд░ рдирд┐рд░реНрднрд░ рд╣реЛрдВрдЧреЗ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕рдХреА рдХрд╛рдлреА рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИред

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рдо рдПрдХ рдФрд░ рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░ CC_FOR_CGO рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ, рдЬрд┐рд╕реЗ рдЬреАрд╕реАрд╕реА рдкрд░ рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

Make.bat рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЧрдП CC_FOR_TARGET рдЙрдкрдпреЛрдЧ рд░рдирдЯрд╛рдЗрдо/cgo рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдпрд╣ рдореЗрд░реЗ рд▓рд┐рдП рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдпрджрд┐ рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛ рд░рд╣реЗ рд╕реА рдХрдВрдкрд╛рдЗрд▓рд░ рджреНрд╡рд╛рд░рд╛ рд░рдирдЯрд╛рдЗрдо/рд╕реАрдЬреАрдУ рдирд╣реАрдВ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ рддреЛ рд╕реАрдЬреАрдУ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░ рд╕рдХрддрд╛ рд╣реИред

CC_FOR_TARGET рд╕реЗ cl рдФрд░ CGO_ENABLED рд╕реЗ 0 рд╕реЗрдЯрд┐рдВрдЧ рдХрд░рддреЗ рд╕рдордп рд╢рд╛рдпрдж рд╣рдореЗрдВ рдЪреАрдЬреЛрдВ рдХреЛ рдХрд╛рдо рдореЗрдВ рд▓рд╛рдирд╛ рд╢реБрд░реВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред

рдзрдиреНрдпрд╡рд╛рдж @ianlancetaylor :

рдореИрдВ рджреЗрдЦрддрд╛ рд╣реВрдВ, рдПрдордПрд╕рд╡реАрд╕реА рдХреЗ рд▓рд┐рдП рд╣рдореЗрдВ рдЬреАрд╕реАрд╕реА рдФрд░ рдПрдордПрд╕рд╡реАрд╕реА рджреЛрдиреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ? рдЬрд╣рд╛рдБ GCC рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреЗрд╡рд▓ cgo рдЯреВрд▓ рджреНрд╡рд╛рд░рд╛ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ? рдпрд╣ рдХреБрдЫ рд╣рдж рддрдХ рджреБрд░реНрднрд╛рдЧреНрдпрдкреВрд░реНрдг рд▓рдЧрддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рд╣рдо рдмрд┐рд▓реНрдХреБрд▓ рдЙрд╕реА рдПрдмреАрдЖрдИ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдЬреАрд╕реАрд╕реА рдФрд░ рдПрдордПрд╕рд╡реАрд╕реА рдкрд░ рдирд┐рд░реНрднрд░ рд╣реЛрдВрдЧреЗ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕рдХреА рдХрд╛рдлреА рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИред

рдореИрдВ рдорд╛рдирддрд╛ рд╣реВрдВ рдХрд┐ рдпрд╣ рджреБрд░реНрднрд╛рдЧреНрдпрдкреВрд░реНрдг рд╣реИ, рдФрд░ рдХреБрдЫ рд╡рд┐рдХрд▓реНрдк рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд░ рдЦреБрд╢реА рд╣реЛрдЧреА, рдореБрдЭреЗ рдЕрднреА рддрдХ рдПрдХ рдирд╣реАрдВ рдорд┐рд▓рд╛ рд╣реИред рдЗрд╕ рддрд░рд╣ рд╕реЗ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдЬреЛрдЦрд┐рдо рдирд┐рд░реНрдорд╛рдг рд╣реЛрддрд╛ рд╣реИ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдмрдирд╛рдП рдЬрд╛ рд░рд╣реЗ рд╕реАрдЬреАрдУ рдХреЛрдб рдореЗрдВ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдкреНрд░рдХрд╛рд░ рдХреЗ рдбреАрдлрд╝ рд╣реЛрддреЗ рд╣реИрдВ рдпрд╛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рдХрд┐рд╕ рдХрдВрдкрд╛рдЗрд▓рд░ рджреНрд╡рд╛рд░рд╛ рдмрдирд╛рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ)ред рддреЛ рдмрд┐рд▓реНрдб рд╣рдореЗрд╢рд╛ рд╕рдлрд▓ рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдпрд╛ рдмрд┐рдирд╛ рдХрд┐рд╕реА рдмрджрд▓рд╛рд╡ рдХреЗ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдХрд╛рдо рдХрд░ рд╕рдХрддрд╛ рд╣реИ (рдореЗрд░реЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдореЗрдВ рдЗрд╕реЗ рд╕рдВрднрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рддрдВрддреНрд░ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдПрдХ рдореИрдиреНрдпреБрдЕрд▓ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд╛ рдПрдХ рд╕рд╛ рд╣реИ)ред рдЕрдлрд╕реЛрд╕ рдХреА рдмрд╛рдд рд╣реИ рдХрд┐ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдПрдХ рдЬреЛрдЦрд┐рдо рд╣реИ рдЬрд┐рд╕реЗ рд▓реЛрдЧреЛрдВ рдХреЛ рд▓реЗрдирд╛ рд╣реЛрдЧрд╛ рдпрджрд┐ рд╡реЗ рдПрдордПрд╕рд╡реАрд╕реА рдЯреВрд▓рдЪреЗрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдФрд░ рд╣рдо рдХреЗрд╡рд▓ рдЗрд╕реЗ рдЕрднреА рдХреЗ рд▓рд┐рдП рджрд╕реНрддрд╛рд╡реЗрдЬ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдЗрд╕реА рддрд░рд╣ рдХреЗ рдиреЛрдЯ рдкрд░ рдЕрднреА рднреА MSVC рдирд┐рд░реНрдорд┐рдд cgo рдкреНрд░реЛрдЧреНрд░рд╛рдореЛрдВ рдореЗрдВ complex64 рдФрд░ complex128 рд╕рдорд░реНрдерди рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд░рд╛рд╕реНрддрд╛ рдирд╣реАрдВ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ MSVC рдХрдВрдкрд╛рдЗрд▓рд░ c99 рдЕрдиреБрд░реВрдк рдирд╣реАрдВ рд╣реИред

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рдо рдПрдХ рдФрд░ рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░ CC_FOR_CGO рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ, рдЬрд┐рд╕реЗ рдЬреАрд╕реАрд╕реА рдкрд░ рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рддреЛ рдореЗрд░реЗ рдкрд╛рд╕ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдпрд╣ рд╣реИ рдХрд┐ рдпрджрд┐ рдирд┐рд░реНрдорд╛рдг рдХреЛ рдПрдордПрд╕рд╡реАрд╕реА рдХреЗ рд╕рд╛рде рдмрдирд╛рдиреЗ рдХрд╛ рдирд┐рд░реНрджреЗрд╢ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рддреЛ рдпрд╣ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдкрде рдкрд░ cl.exe рдХреА рддрд▓рд╛рд╢ рдХрд░реЗрдЧрд╛ рд▓реЗрдХрд┐рди рдЗрд╕реЗ рдкрд░реНрдпрд╛рд╡рд░рдг рдкрд░рд┐рд╡рд░реНрддрдиреАрдп рдПрдордПрд╕рд╕реАрд╕реА рдХреЗ рд╕рд╛рде рдУрд╡рд░рд░рд╛рдЗрдб рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рд╕реАрдЬреАрдУ рд╕реАрд╕реА рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЬрд╛рд░реА рд░рдЦреЗрдЧрд╛ рдЬреЛ рдЬреАрд╕реАрд╕реА рдореЗрдВ рд╡рд╛рдкрд╕ рдЖ рд░рд╣рд╛ рд╣реИ/рдЬреЛ рднреА рдЙрддреНрдкрдиреНрди zdefaultcc.go рдореЗрдВ рдмреИрдард╛ рд╣реИ

Make.bat рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЧрдП CC_FOR_TARGET рдЙрдкрдпреЛрдЧ рд░рдирдЯрд╛рдЗрдо/cgo рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдпрд╣ рдореЗрд░реЗ рд▓рд┐рдП рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдпрджрд┐ рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛ рд░рд╣реЗ рд╕реА рдХрдВрдкрд╛рдЗрд▓рд░ рджреНрд╡рд╛рд░рд╛ рд░рдирдЯрд╛рдЗрдо/рд╕реАрдЬреАрдУ рдирд╣реАрдВ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ рддреЛ рд╕реАрдЬреАрдУ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░ рд╕рдХрддрд╛ рд╣реИред

рд╡рд░реНрддрдорд╛рди рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдореЗрдВ cgo рдЦреБрд╢реА рд╕реЗ msvc рдмрд╛рдпрдиреЗрд░рд┐рдЬрд╝ рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░реЗрдЧрд╛, рднрд▓реЗ рд╣реА рд╕рдВрдкреВрд░реНрдг рдЧреЛ рдЯреВрд▓рдЪреЗрди gcc рджреНрд╡рд╛рд░рд╛ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реЛред рдЬреИрд╕реЗ MSVC рдХреЛрдб go/src рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛рддрд╛ рд╣реИред all.bat рдЬреАрд╕реАрд╕реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЧреЛ рдкрд░реНрдпрд╛рд╡рд░рдг рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░ рд░рд╣рд╛ рд╣реИред рдЙрд╕рдХреЗ рдмрд╛рдж go/bin/go.exe рдХрд╛ рдЙрдкрдпреЛрдЧ msvc рдЯреВрд▓рдЪреЗрди рдХреЗ рд╕рд╛рде рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ (рдпрд╣ рдорд╛рдирддреЗ рд╣реБрдП рдХрд┐ рдЭрдВрдбреЗ рдХреА рдЖрдкреВрд░реНрддрд┐ рдХреА рдЬрд╛рддреА рд╣реИ)ред рд╣рд╛рд▓рд╛рдБрдХрд┐ рдЖрдк рдпрд╣рд╛рдБ рдЬреЛ рдХрд╣ рд░рд╣реЗ рд╣реИрдВ рдЙрд╕реЗ рдореИрдВ рдЧрд▓рдд рд╕рдордЭ рд░рд╣рд╛ рд╣реВрдБред

рдЗрд╕рдХреЗ рдЖрд╕-рдкрд╛рд╕ рдХреА рдЬрдЯрд┐рд▓рддрд╛ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдмрддрд╛рдирд╛ рдХрд┐ рд╣рдо msvc рдХреЗ рд╕рд╛рде рдирд┐рд░реНрдорд╛рдг рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рд╣реИ рддреЛ рдмрд╕ рдХрдВрдкрд╛рдЗрд▓рд░ рдХреЛ cl рдкрд░ рд╕реНрд╡рд┐рдЪ рдХрд░рдирд╛ред MSVC рдЯреВрд▓рдЪреЗрди gcc рдЯреВрд▓рдЪреЗрди рд╕реЗ рдмрд╣реБрдд рдЕрд▓рдЧ рд╣реИред MSVC рдореЗрдВ рдПрдХ рд╡рд╛рддрд╛рд╡рд░рдг рдХреЛ vcvars.bat рдХреЗ рдЕрдВрджрд░ рдЪрд▓рд╛рдиреЗ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕реЗрдЯрдЕрдк рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ (рдпрд╛ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП v8 рдХреНрдпрд╛ рдХрд░рддрд╛ рд╣реИ рдЬреЛ vcvars.bat рдЪрд▓рд╛ рд░рд╣рд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░ рд╕реЗ рд╕рднреА рдЬрд╛рдирдХрд╛рд░реА рдирд┐рдХрд╛рд▓рдиреЗ рдФрд░ рдлрд┐рд░ рдЕрдкрдиреЗ рдирд┐рд░реНрдорд╛рдг рдореЗрдВ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реИ) рдкреНрд░рдХреНрд░рд┐рдпрд╛)ред рдЬрдм рд╣рдо рдПрдХ MSVC рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ рд╣реЛрддреЗ рд╣реИрдВ, рддреЛ рдореБрдЦреНрдп рдЕрдВрддрд░ рд╕реНрд╡рдпрдВ рдЙрдкрдХрд░рдг рдмрди рдЬрд╛рддрд╛ рд╣реИ cl.exe рдХрд╛ рдЙрдкрдпреЛрдЧ C рдФрд░ C ++ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рд╕рдВрдХрд▓рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, ml.exe рдФрд░ ml64.exe рдХрд╛ рдЙрдкрдпреЛрдЧ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдЗрдХрдЯреНрдард╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдЕрдВрдд рдореЗрдВ link.exe (ms) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╕рдм рдХреБрдЫ рдПрдХ рд╕рд╛рде рдЬреЛрдбрд╝рдирд╛ред рддреЛ рдпрд╣ рд╕рд┐рд░реНрдл CC=cl.exe рдФрд░ рдЗрд╕реЗ рд╕рд╣реА рдЭрдВрдбреЗ рджреЗрдиреЗ рд╕реЗ рдХрд╣реАрдВ рдЕрдзрд┐рдХ рд╣реИред рдХреНрдпрд╛ рдпрд╣ рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИ/рдЪреАрдЬреЛрдВ рдХреЛ рд╕реНрдкрд╖реНрдЯ рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░рддрд╛ рд╣реИ?

рдЖрдЧреЗ рд╕реНрдкрд╖реНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП

Make.bat рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдиреЗ рд╡рд╛рд▓рд╛ CC_FOR_TARGET рд░рдирдЯрд╛рдЗрдо/cgo рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдпрд╣ рдореЗрд░реЗ рд▓рд┐рдП рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдпрджрд┐ рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛ рд░рд╣реЗ рд╕реА рдХрдВрдкрд╛рдЗрд▓рд░ рджреНрд╡рд╛рд░рд╛ рд░рдирдЯрд╛рдЗрдо/рд╕реАрдЬреАрдУ рдирд╣реАрдВ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ рддреЛ рд╕реАрдЬреАрдУ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░ рд╕рдХрддрд╛ рд╣реИред

go build рдирд┐рд░реНрдорд╛рдг рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рджреМрд░рд╛рди рдХреНрд░рдо / рд╕реАрдЬреАрдУ рд╕реЗ рдЙрдкрдпреБрдХреНрдд рдлрд╝рд╛рдЗрд▓реЛрдВ рдХрд╛ рдЪрдпрди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП go build / go test / go run - рдирд╣реАрдВ рдмрд┐рд▓реНрдбрд░ рдкреНрд░рдХреНрд░рд┐рдпрд╛) рдЬрдм msvc рдЯреВрд▓рдЪреЗрди рдХрд╛ рдЪрдпрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред

рдореИрдВ рд╕реБрдЭрд╛рд╡реЛрдВ рдХреЗ рд▓рд┐рдП рдЦреБрд▓рд╛ рд╣реВрдВ рдХрд┐ рдпрд╣ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рд▓реЗрдХрд┐рди рдЗрд╕реЗ рдЧреЛ рдЯреВрд▓ рдХреЗ рд▓рд┐рдП рдПрдХ рдирдП рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рд╡рд┐рдХрд▓реНрдк рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдПред рдХреНрдпрд╛ рд╣рдо рдПрдХ рд╢реБрджреНрдз рдЧреЛ рдкреНрд░реЛрдЧреНрд░рд╛рдо рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рдЧреЛ рдЯреВрд▓ рдХреЗ рд╕рдВрдмрдВрдз рдореЗрдВ рдЬреАрд╕реАрд╕реА рдХреА рддрд░рд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рд▓реЗрдХрд┐рди рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрдордПрд╕рд╡реАрд╕реА рдЪрд▓рд╛рддрд╛ рд╣реИ?

рдХреНрдпрд╛ рд╣рдо рдПрдХ рд╢реБрджреНрдз рдЧреЛ рдкреНрд░реЛрдЧреНрд░рд╛рдо рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рдЧреЛ рдЯреВрд▓ рдХреЗ рд╕рдВрдмрдВрдз рдореЗрдВ рдЬреАрд╕реАрд╕реА рдХреА рддрд░рд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рд▓реЗрдХрд┐рди рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрдордПрд╕рд╡реАрд╕реА рдЪрд▓рд╛рддрд╛ рд╣реИ?

рдореБрдЭреЗ рд╡рд┐рд╢реНрд╡рд╛рд╕ рд╣реИ рдХрд┐ рдпрд╣ рдХрд╛рдо рдХрд░рдиреЗ рдпреЛрдЧреНрдп рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдореБрдЭреЗ рджреЗрдЦрдиреЗ рджреЛ рдХрд┐ рдХреНрдпрд╛ рдореБрдЭреЗ рдЙрд╕ рд░рд╛рд╕реНрддреЗ рдкрд░ рдХреБрдЫ рдорд┐рд▓ рд╕рдХрддрд╛ рд╣реИред

рдЗрд╕рдХреЗ рдЕрддрд┐рд░рд┐рдХреНрдд рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореБрдЭреЗ рдпрд╣ рд╕реНрдкрд╖реНрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдЕрдиреНрдп рдЙрдкрдХрд░рдгреЛрдВ рдореЗрдВ рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдХреЗ рдЭрдВрдбреЗ рдЬреЛрдбрд╝рдирд╛ рднреА рдПрдХ рдореБрджреНрджрд╛ рд╣реИред рдлрд┐рд▓рд╣рд╛рд▓ рдЗрд╕рдХреЗ рд▓рд┐рдП рд╡реНрдпрд╛рдкрдХ рдкреИрдЪ рд╡рд┐рднрд┐рдиреНрди рдЙрдкрдХрд░рдгреЛрдВ рдореЗрдВ рдХрдИ рдирдП рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдЭрдВрдбреЗ рдмрдирд╛ рд░рд╣рд╛ рд╣реИ

  • рд╕реАрдПрдордбреА/рд╕реАрдЬреАрдУ

    • -рдЯреВрд▓рдЪреЗрди [рдЬреАрд╕реАрд╕реА, рдПрдордПрд╕рд╡реАрд╕реА] (рдЬреАрд╕реАрд╕реА рдХреЗ рд▓рд┐рдП рдбрд┐рдлрд╝реЙрд▓реНрдЯ) рд╕реАрдЬреАрдУ рдЖрдЙрдЯрдкреБрдЯ рдлрд╛рдЗрд▓ рдмрдирд╛рддреЗ рд╕рдордп рдЯреВрд▓рдЪреИрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП

  • рд╕реАрдПрдордбреА/рд▓рд┐рдВрдХ

    • -rlocbss (рдЧрд▓рдд рдХреЗ рд▓рд┐рдП рдбрд┐рдлрд╝реЙрд▓реНрдЯ) .bss рдХреЛ .data рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░реЗрдВ

    • -рдЯреВрд▓рдЪреЗрди [рдЬреАрд╕реАрд╕реА, рдПрдордПрд╕рд╡реАрд╕реА] (рдЬреАрд╕реАрд╕реА рдХреЗ рд▓рд┐рдП рдбрд┐рдлрд╝реЙрд▓реНрдЯ) рдмрд╛рд╣рд░реА рд▓рд┐рдВрдХрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдЯреВрд▓рдЪреИрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рд╣реИ

рд╣рдо рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдмрд┐рд▓реНрдб рд╡рд┐рдХрд▓реНрдк/cgo рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░ рднреА рдмрдирд╛рддреЗ рд╣реИрдВ:

  • MSCXX
  • MSCC
  • MSCFLAGS
  • MSCPPFLAGS
  • MSCXXFLAGS
  • MSLDFLAGS

рдХреБрдЫ рдорд┐рдирдЯреЛрдВ рдХреЗ рд╡рд┐рдЪрд╛рд░ рдХреЗ рдмрд╛рдж рдХреБрдЫ рдмрд╛рдзрд╛рдПрдВ рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рджреВрд░ рдХрд░рдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдЕрдЧрд░ рд╣рдо рд╕рд┐рд░реНрдл рдкреНрд░реЙрдХреНрд╕реА рдХрд░рддреЗ рд╣реИрдВ рддреЛ рдХрдВрдкрд╛рдЗрд▓рд░ рдХрдорд╛рдВрдб рдиреЗ рдПрдХ рдЕрд▓рдЧ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЛ рдПрдХ рд╕рд╛рде рд╕реЛрдЪрд╛

  1. go build рдХреЛ рдпрд╣ рдЬрд╛рдирдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИ рдХрд┐ рдХреМрди рд╕реА рд░рдирдЯрд╛рдЗрдо/рд╕реАрдЬреАрдУ рдлрд╛рдЗрд▓реЛрдВ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░рдирд╛ рд╣реИ, рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╛рд╣рд░реА рдЯреВрд▓рдЪреЗрди рдХреНрдпрд╛ рд╣реИ, рдЕрдиреНрдпрдерд╛ рдпрд╣ рд╣рдорд╛рд░реЗ рдкреНрд░реЙрдХреНрд╕реА рдХрдорд╛рдВрдб рдореЗрдВ рдЕрд╕рдВрдЧрдд рдЬреАрд╕реАрд╕реА рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЛ рдкрд╛рд╕ рдХрд░ рджреЗрдЧрд╛ред рд╣рдо рдкреНрд░реЙрдХреНрд╕реА рдХреЗ рдЕрдВрджрд░ рд╣реА рдЗрд╕рдХреЗ рдЪрд╛рд░реЛрдВ рдУрд░ рд╣реИрдХ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ рд▓реЗрдХрд┐рди рдпрд╣ рднрдВрдЧреБрд░ рд╣реЛрдЧрд╛ рдФрд░ рдЕрдЧрд░ рдЕрддрд┐рд░рд┐рдХреНрдд рдлрд╛рдЗрд▓реЗрдВ рдХрднреА рднреА рд░рдирдЯрд╛рдЗрдо/рд╕реАрдЬреАрдУ рдореЗрдВ рдЬреЛрдбрд╝ рджреА рдЬрд╛рддреА рд╣реИрдВ рддреЛ рдЯреВрдЯрдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИред
  2. cmd/cgo рдХреЛ рдпрд╣ рдЬрд╛рдирдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИ рдХрд┐ рдЖрдЙрдЯрдкреБрдЯ рд╕реА рдХреЛрдб рдХреЗ рдХрд┐рд╕ рд╕рдВрд╕реНрдХрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рд╕ рдкреНрд░рдХрд╛рд░ рдХреЗ рдмрд╛рд╣рд░реА рдЯреВрд▓рдЪреЗрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ
  3. рдкреНрд░реЙрдХреНрд╕реА рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЛ рдпрд╣ рдЬрд╛рдирдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рддрдВрддреНрд░ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА рдХрд┐ рдЙрд╕реЗ рдЬреАрд╕реАрд╕реА рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдпрд╛ рдирд╣реАрдВ (рдЬреИрд╕рд╛ рдХрд┐ рд╕реАрдПрдордбреА/рд╕реАрдЬреАрдУ рджреНрд╡рд╛рд░рд╛ рдмреБрд▓рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ) рдпрд╛ cl.exe рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд┐рд╕реЗ рдкрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рд▓реЗрдХрд┐рди рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдХреЙрд▓рд░ рдХреЛ рдпрд╣ рдЬрд╛рдирдирд╛ рд╣реЛрдЧрд╛ рдХрд┐ рдЯреВрд▓рдЪреЗрди рдХреНрдпрд╛ рд╣реИ рд╣реИ рдпрд╛ рд╣рдо cmd/cgo рдЬреАрд╕реАрд╕реА рдХреЛ рдЧреИрд░-рдореМрдЬреВрдж рдЭрдВрдбреЗ рдкрд╛рд╕ рдХрд░ рд░рд╣реЗ рд╣реИрдВред
  4. go build cmd/link рдХреЛ рдХреЙрд▓ рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕реЗ рдпрд╣ рдЬрд╛рдирдиреЗ рдХреА рднреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдХрд┐ рдЯреВрд▓рдЪреЗрди рдХреНрдпрд╛ рд╣реИ рддрд╛рдХрд┐ рд╡рд╣ .bss рд╕реЗ .data рд╕реНрдерд╛рдирд╛рдВрддрд░рдг рдХрд░ рд╕рдХреЗ рдФрд░ рддрд╛рдХрд┐ рдпрд╣ рд▓рд┐рдВрдХрд░ рдХреЛ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдлрд╝реНрд▓реИрдЧ рдкрд╛рд╕ рдХрд░ рд╕рдХреЗ (рд╣рдо рдЗрд╕реЗ рдмрд╛рдж рдореЗрдВ рд╕рдВрднрд╛рд▓рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ) рд╣рд╛рд▓рд╛рдВрдХрд┐ рдкреНрд░реЙрдХреНрд╕реА рдореЗрдВ рд╣реА рд╣рд┐рд╕реНрд╕рд╛)

msvc рдмрд┐рд▓реНрдб рдХрд╛рд░реНрдп рдХреЛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП go build рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдирд╛ рд╣реЛрдЧрд╛? рд╣рд╛рд▓рд╛рдВрдХрд┐ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдХрд┐рд╕реА рдРрд╕реЗ рд╡реНрдпрдХреНрддрд┐ рдХреЗ рд▓рд┐рдП рдмрд╛рд░ рдЙрдЪреНрдЪ рд╕реЗрдЯ рдХрд░рддрд╛ рд╣реИ рдЬреЛ рд╕рд┐рд░реНрдл рдПрдордПрд╕рд╡реАрд╕реА рдХреЗ рд╕рд╛рде рдПрдХ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдмрдирд╛рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЕрдм рдЙрдиреНрд╣реЗрдВ vsvars.bat рдХреЗ рдЕрдВрджрд░ рдЪрд▓рдиреЗ рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдХрдИ рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░ рд╕реЗрдЯ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ (рдиреНрдпреВрдирддрдо CC рдФрд░ UNDECIDED_TURN_ON_MSVC_BUILD_VAR )

рдПрдХ рдЕрдиреНрдп рд╡рд┐рдХрд▓реНрдк рдпрд╣ рд╣реЛрдЧрд╛ рдХрд┐ go build рдирд┐рд░реНрджрд┐рд╖реНрдЯ CC рдкрд░ рдПрдХ рдлрд░реНрдЬреА noop рдХрдорд╛рдВрдб рдЪрд▓рд╛рдПрдВ рдФрд░ рдлрд┐рд░ рд▓реЛрдЧреЛ/рд╣реЗрдбрд░ рдХреЛ рдкрд╛рд░реНрд╕ рдХрд░реЗрдВ рддрд╛рдХрд┐ рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдпрд╛ рдЬрд╛ рд╕рдХреЗ рдХрд┐ рдпрд╣ msvc рдпрд╛ gcc рд╣реИ рдФрд░ рдЙрд╕ рдмрд┐рдВрджреБ рдкрд░ рдЙрдкрдпреБрдХреНрдд рдЯреВрд▓рдЪреЗрди рд╕рдорд╛рдпреЛрдЬрди рдХреЗ рд╕рд╛рде рдЖрдЧреЗ рдмрдврд╝реЗрдВред ... рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдирд╣реАрдВ рд╣реИ рдХрд┐ рдпрд╣ рдХрд┐рддрдирд╛ рднрдВрдЧреБрд░ рд╣реИ рдпрд╛ рдпрд╣ рдХреНрд▓реИрдВрдЧ рдЬреИрд╕реЗ рдПрдордПрд╕рд╡реАрд╕реА рд╕рдВрдЧрдд рдЯреВрд▓рдЪреЗрди рдХреЗ рд╕рд╛рде рдХреИрд╕реЗ рдХрд╛рдо рдХрд░реЗрдЧрд╛ред

рд╣рд╛рд▓ рд╣реА рдореЗрдВ рдЗрд╕ рдЬреАрдердм рдореБрджреНрджреЗ рдХреА рдЦреЛрдЬ рдХреА, рдФрд░ рдпрд╣ рдХрд╛рдо рдореЗрд░реЗ рд▓рд┐рдП рдмрд╣реБрдд рд░реЛрдорд╛рдВрдЪрдХ рд╣реИред рдореИрдВ рдЙрдореНрдореАрдж рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдХрд┐ рдпрд╣ рдирд┐рдХрдЯ рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдХрд╣реАрдВ рдЬрдореАрди рдкрд░ рдЖ рдЬрд╛рдПред

рдореЗрд░рд╛ рдЗрд░рд╛рджрд╛ рд╡рд┐рдВрдбреЛрдЬрд╝ рдкрд░ рд╕реАрдЬреАрдУ рдХреЛ рдХреБрдЫ рддреГрддреАрдп-рдкрдХреНрд╖ рдХреЛрдб рдХреЗ рд░реИрдкрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реИ рдЬрд┐рд╕реЗ рдПрдордПрд╕рд╡реАрд╕реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдХрд┐ рдореИрдВ mingw-w64 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕реНрд░реЛрддреЛрдВ рд╕реЗ рдкреБрдирд░реНрдирд┐рд░реНрдорд╛рдг рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ред рдореЗрд░реЗ рдкрд╛рд╕ рдЗрд╕реЗ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдЕрдкреЗрдХреНрд╖рд╛рдХреГрдд рдЧрдВрднреАрд░ рдкрд░реАрдХреНрд╖рдг-рдорд╛рдорд▓реЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдЗрд╕реЗ рдмрд╣реБрдд рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдорд╛рдиреНрдп рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдХрд┐рд╕реА рднреА рддрд░рд╣, @ccamplin рдХреЛ рдзрдиреНрдпрд╡рд╛рдж рдФрд░ рдЬреЛ рдХреЛрдИ рднреА рдЗрд╕ рдкрд░ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИ, рдФрд░ рдХреГрдкрдпрд╛ рдореБрдЭреЗ рдмрддрд╛рдПрдВ рдХрд┐ рдореИрдВ рдорджрдж рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВред

@ccamplin рдореИрдВ рд╡рд┐рдВрдбреЛрдЬрд╝ рдФрд░ рд╕реАрдЬреАрдУ рдореЗрдВ рдХрдВрдкрд╛рдЗрд▓рд░ рдЯреВрд▓рдЪреЗрди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЦрддрд░рдирд╛рдХ рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рдЬрд╛рдирддрд╛ рд╣реВрдВ рдХрд┐ рдореИрдВ рд╕рд╣рд╛рдпрддрд╛ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛ рд╕рдХрддрд╛ рд╣реВрдВред рдХреНрдпрд╛ рдЖрдк рдореБрдЭреЗ рдХреБрдЫ рдкрд░ рдкрдХрдбрд╝ рдкрд╛рдПрдВрдЧреЗ рдЬреЛ рдЖрдк рдХрд╛рдо рдХрд░ рд░рд╣реЗ рд╣реИрдВ? рдореИрдВ рджреЗрдЦреВрдВрдЧрд╛ рдХрд┐ рд╕рд╣рд╛рдпрддрд╛ рдХреЗ рд▓рд┐рдП рдореИрдВ рдХреНрдпрд╛ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВред рдореБрдЭреЗ рдкрддрд╛ рд╣реИ рдХрд┐ рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЗ @deadprogram рдореЗрдВ рд╣реИ рдЗрд╕рд▓рд┐рдП рдЬрдм рд╣рдо рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд╣реЛрддреЗ рд╣реИрдВ рддреЛ рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ рдЕрдЪреНрдЫрд╛ рдЙрдиреНрдирдд рдкрд░реАрдХреНрд╖рдг рдмрд┐рд╕реНрддрд░ рд╣реЛрддрд╛ рд╣реИред

рдЕрд░реЗ @mxplusb , рдкреИрдЪ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХрдореЛрдмреЗрд╢ рдЬрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд╣реИред рдЕрдЧрд░ рдореБрдЭреЗ рд╕рдордп рдорд┐рд▓ рдЬрд╛рддрд╛ рд╣реИ рддреЛ рдореИрдВ рдЖрдЬ рд░рд╛рдд рдпрд╛ рдХрд▓ рдЧреЗрд░рд┐рдЯ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рд╕рдмрдорд┐рдЯ рдХрд░ рджреВрдВрдЧрд╛ рдЬреЛ рд╣рдореЗрдВ рд╣рд░ рдЪреАрдЬ рдХреА рд╕рдореАрдХреНрд╖рд╛, рдЕрджреНрдпрддрди рдФрд░ рд╕реНрд╡реАрдХреГрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░реЗрд░рд┐рдд рдХрд░реЗрдЧрд╛ред

рдмрджрд▓реЗрдВ https://golang.org/cl/133937 рдЗрд╕ рдореБрджреНрджреЗ рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд░рддрд╛ рд╣реИ: cmd/link: Add flag rlocbss to relocate .bss data to .data

рдмрджрд▓реЗрдВ https://golang.org/cl/133938 рдореЗрдВ рдЗрд╕ рдореБрджреНрджреЗ рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рд╣реИ: runtime/cgo: MSVC toolchain support in cgo native code

рдмрджрд▓реЗрдВ https://golang.org/cl/133939 рдореЗрдВ рдЗрд╕ рдореБрджреНрджреЗ рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рд╣реИ: cmd/cgo: Add toolchain flag to cgo command for MSVC support

рдмрджрд▓реЗрдВ https://golang.org/cl/133946 рдЗрд╕ рдореБрджреНрджреЗ рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд░рддрд╛ рд╣реИ: cmd/compile: Add support for MSVC toolchain to go build

рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореИрдВрдиреЗ рдХреБрдЫ рдХрд╛рдореЛрдВ рдореЗрдВ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдЯрд╛рдЗрдк рдХрд┐рдпрд╛ рд╣реИред рдореИрдВ рд╕рдореАрдХреНрд╖рд╛ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рдЪрд▓рдиреЗ рджреВрдВрдЧрд╛ рдФрд░ рдареАрдХ рдХрд░рдиреЗ рдХрд╛ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рддрд░реАрдХрд╛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░реВрдВрдЧрд╛ред

рдмрджрд▓реЗрдВ https://golang.org/cl/133943 рдЗрд╕ рдореБрджреНрджреЗ рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд░рддрд╛ рд╣реИ: cmd/cgo: Add support for CC_FOR_CGO environment variable

рдмрджрд▓реЗрдВ https://golang.org/cl/133942 рдореЗрдВ рдЗрд╕ рдореБрджреНрджреЗ рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рд╣реИ: tests: Update various tests to prepare for MSVC compiler toolchain

рдмрджрд▓реЗрдВ https://golang.org/cl/133940 рдореЗрдВ рдЗрд╕ рдореБрджреНрджреЗ рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рд╣реИ: misc/cgo: Adjust tests to be compatible with MSVC toolchain support

рдмрджрд▓реЗрдВ https://golang.org/cl/133941 рдореЗрдВ рдЗрд╕ рдореБрджреНрджреЗ рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рд╣реИ: runtime: Add runtime.CompilerType to denote between host compiler type

рдмрджрд▓реЗрдВ https://golang.org/cl/133945 рдЗрд╕ рдореБрджреНрджреЗ рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд░рддрд╛ рд╣реИ: cmd/link: Add external toolchain support for MSVC

рдмрджрд▓реЗрдВ https://golang.org/cl/133944 рдЗрд╕ рдореБрджреНрджреЗ рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд░рддрд╛ рд╣реИ: cmd/compile, cgo: Add support for MSVC flags

@ccamplin рдХреНрдпрд╛ рдЖрдк

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╣рдо рдЗрд╕ рдкреИрдЪ рдХреЛ рдХреИрд╕реЗ рдЖрдЬрдорд╛ рд╕рдХрддреЗ рд╣реИрдВ? рдореБрдЭреЗ рд░реЗрдкреЛ рдкрд░ рдЖрдкрдХреЗ рдХрд╛рдо рдирд╣реАрдВ рдорд┐рд▓реЗред

@rasky рдпрд╣ рдЕрднреА рднреА рдереЛрдбрд╝рд╛ рдкреНрд░рд╡рд╛рд╣ рдореЗрдВ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдкрд░рд┐рд╡рд░реНрддрди рд╕рдореАрдХреНрд╖рд╛ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЬрд╛рддреЗ рд╣реИрдВред рд╕рдВрднрд╛рд╡рд┐рдд рд░реВрдк рд╕реЗ рдХреЛрдИ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдЭрдВрдбреЗ рдирд╣реАрдВ рд╣реЛрдВрдЧреЗ рдЬрд┐рдиреНрд╣реЗрдВ рд╕реЗрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдХреЗрд╡рд▓ рд╕реАрдЬреАрдУ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдЬрд╣рд╛рдВ рд╕реАрд╕реА рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░ рдПрдордПрд╕рд╡реАрд╕реА рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдпрд╛ рдХреЛрдИ рд╕реАрд╕реА рд╕реЗрдЯ рдирд╣реАрдВ рд╣реИ, рдПрдХ cl.exe рдкрде рдкрд░ рд╣реИ рд▓реЗрдХрд┐рди рдЬреАрд╕реАрд╕реА рдирд╣реАрдВ рд╣реИред

@blizzardplus рдЙрдкрд░реЛрдХреНрдд рдЪреАрдЬреЛрдВ рдХреЗ рд╕рдорд╛рди рдЕрднреА рд╕рдореАрдХреНрд╖рд╛ рдХреЗ рд╕рд╛рде рдмрд╣реБрдд рдЕрдзрд┐рдХ рдкреНрд░рд╡рд╛рд╣ рдореЗрдВ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЗрд╕реЗ

@ccamplin рдпрд╛ рддреЛ gcc рдпрд╛ clang рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХреНрд░реЙрд╕ рд╕рдВрдХрд▓рди рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рд╣реИ? рдпрджрд┐ рд╣рд╛рдВ, рддреЛ рдХреНрдпрд╛ рдЙрдирдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ ?

@ccamplin рдореБрдЭреЗ 9/11 рдХреЗ рдмрд╛рдж рд╕реЗ

@ccamplin рдЗрд╕рдХреЗ рд▓рд┐рдП

рд╕рд╛рде рд╣реА, рдЗрд╕рдХреЗ рд▓рд┐рдП рдирд┐рд░реНрдпрд╛рдд рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рд╕реА-рд╕рд╛рдЭрд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП __declspec (dllexport) рд╕рдЬрд╛рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдпрд╣ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐//рдирд┐рд░реНрдпрд╛рдд рдХрд╛ рдпрд╣ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд╣рд╛рдВ рд╣реЛрддрд╛ рд╣реИред

@blizzardplus рдХреНрд▓реИрдВрдЧ -

@kshelton рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ рдпрд╣ рдореЗрд░реЗ рд▓рд┐рдП рд╡рд░реНрд╖ рдХрд╛ рдПрдХ рдмрд╣реБрдд рд╡реНрдпрд╕реНрдд рд╕рдордп рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдореЗрд░реЗ рдкрд╛рд╕ рдЙрди рдХрд╛рд░реНрдпреЛрдВ рдФрд░ рд╕рдореНрдореЗрд▓рдиреЛрдВ рдореЗрдВ рдЕрдиреНрдп рдкрд░рд┐рдпреЛрдЬрдирд╛рдПрдВ рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рдореИрдВ рдкреНрд░рд╕реНрддреБрдд рдХрд░ рд░рд╣рд╛ рд╣реВрдВред рдореИрдВ рджрд┐рд╕рдВрдмрд░ рддрдХ рдкреИрдЪ рдореЗрдВ рдЖрд╡рд╢реНрдпрдХ рд░рд┐рдлреИрдХреНрдЯрд░рд┐рдВрдЧ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдореЗрдВ рд╡рд╛рдкрд╕ рдХреВрджрдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ред

@kshelton рдзрдиреНрдпрд╡рд╛рджред рдореИрдВрдиреЗ рдкреИрдЪ рдХреА рджреЛрдмрд╛рд░рд╛ рдЬрд╛рдВрдЪ рдирд╣реАрдВ рдХреА рд╣реИ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореИрдВрдиреЗ рдЗрд╕реЗ рдЗрд╕ рдзрд╛рд░рдгрд╛ рдХреЗ рд╕рд╛рде рд╡рд┐рдХрд╕рд┐рдд рдХрд┐рдпрд╛ рд╣реИ рдХрд┐ рд╕реА-рд╕рдВрдЧреНрд░рд╣ рдПрдордПрд╕рд╡реАрд╕реА рдкрд░ рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдЧрд╛, рдпрд╛ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдЗрд╕реЗ рдЕрдХреНрд╖рдо рдХрд░ рджреЗрдЧрд╛? рдЬрдм рдореИрдВ рд╡рд┐рдВрдбреЛрдЬрд╝ рдкрд░ рдкреНрд▓рдЧрдЗрди/рд╕рд╛рдЭрд╛ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рдерд╛ рддреЛ рдореИрдВ рдирд┐рд░реНрдпрд╛рдд рдХреЛ рдареАрдХ рд╕реЗ рд╕рдЬрд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рдиреЗ рдХреЗ рд░рд╛рд╕реНрддреЗ рдкрд░ рдЪрд▓рд╛ рдЧрдпрд╛ред рдореБрдЭреЗ рд╡рд┐рд╢реНрд╡рд╛рд╕ рд╣реИ рдХрд┐ рдЕрдиреНрдп рдореБрджреНрджреЗ рднреА рд╣реИрдВ, рд▓реЗрдХрд┐рди рдореИрдВ рджреЛ рдореБрджреНрджреЛрдВ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВред рдИрдПрд▓рдПрдл рдмрдирд╛рдо рд╡рд┐рдВрдбреЛрдЬрд╝ .edata, idata рдФрд░ EAT рдХреЗ рд▓рд┐рдП рдкреАрдПрд▓рдЯреА/рдЬреАрдУрдЯреА рдореЗрдВ рдЕрдкрдиреЗ рд╕рд╛рдЭрд╛ рдХреЛрдб рдХреЗ рд╕рд╛рде рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕рдорд╕реНрдпрд╛рдПрдВ рд╣реИрдВред рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛтАЛтАЛрд╣реИ рдХрд┐ рдЬрд┐рди рдореБрджреНрджреЛрдВ рдХрд╛ рдореИрдВрдиреЗ рд╕рд╛рдордирд╛ рдХрд┐рдпрд╛ рдЙрдирдореЗрдВ рд╕реЗ рдЕрдзрд┐рдХрд╛рдВрд╢ рд╕реНрдерд╛рдирд╛рдВрддрд░рдг рдХреЗ рдЖрд╕рдкрд╛рд╕ рдереЗ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдХрд╛рдо рдкрд░ рд▓рд╛рдиреЗ рдореЗрдВ рдЕрд╕рдорд░реНрде рдереЗред рдЕрдЧрд░ рдХрд┐рд╕реА рдХреЗ рдкрд╛рд╕ рдЗрд╕рдореЗрдВ рдЕрдВрддрд░реНрджреГрд╖реНрдЯрд┐ рд╣реИ рддреЛ рдпрд╣ рдЕрджреНрднреБрдд рд╣реЛрдЧрд╛ред #19282 рджреЗрдЦреЗрдВ

@ccamplin рдореИрдВрдиреЗ рджреЗрдЦрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА, рдХреНрдпрд╛ рдореИрдВ рдЖрдкрдХреЗ CL . рдХреЗ рд╢реАрд░реНрд╖ рдкрд░ рдЧреЛ рдмрдирд╛ рд╕рдХрддрд╛ рд╣реВрдВ

https://go-review.googlesource.com/c/go/+/133946/3

рдореИрдВрдиреЗ рдЕрдкрдирд╛ рд╡рд╛рддрд╛рд╡рд░рдг рд╕реЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕ рдмреИрдЪ рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рд╣реИ

set TERM=msys
set MYHOME=c:\users\alex\dev
set GOROOT=%MYHOME%\go
set GOROOT_BOOTSTRAP=%MYHOME%\go1.4.3
set GOPATH=%MYHOME%
call "C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\VC\Auxiliary\Build\vcvars64.bat"
set CC=cl
set PATH=%PATH%;%MYHOME%\my\bin\;%GOROOT%\bin
cd %GOROOT%\src
CMD

рдФрд░ рдЬрдм рдореИрдВ make.bat рдЪрд▓рд╛рддрд╛ рд╣реВрдВ рддреЛ рдореБрдЭреЗ рдпрд╣ рддреНрд░реБрдЯрд┐ рдорд┐рд▓рддреА рд╣реИ

C:\Users\Alex\Desktop>set TERM=msys

C:\Users\Alex\Desktop>set MYHOME=c:\users\alex\dev

C:\Users\Alex\Desktop>set GOROOT=c:\users\alex\dev\go

C:\Users\Alex\Desktop>set GOROOT_BOOTSTRAP=c:\users\alex\dev\go1.4.3

C:\Users\Alex\Desktop>set GOPATH=c:\users\alex\dev

C:\Users\Alex\Desktop>call "C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\VC\Auxiliary\Build\vcvars64.bat"
**********************************************************************
** Visual Studio 2017 Developer Command Prompt v15.0.26730.12
** Copyright (c) 2017 Microsoft Corporation
**********************************************************************
[vcvarsall.bat] Environment initialized for: 'x64'
Microsoft Windows [Version 10.0.17134.407]
(c) 2018 Microsoft Corporation. All rights reserved.

c:\Users\Alex\dev\go\src>make
Building Go cmd/dist using c:\users\alex\dev\go1.4.3
go tool dist: cannot invoke C compiler "cl": exit status 2

Go needs a system C compiler for use with cgo.
To set a C compiler, set CC=the-compiler.
To disable cgo, set CGO_ENABLED=0.

Command output:

Microsoft (R) C/C++ Optimizing Compiler Version 19.11.25507.1 for x64
Copyright (C) Microsoft Corporation.  All rights reserved.

cl : Command line warning D9002 : ignoring unknown option '--help'
cl : Command line error D8003 : missing source filename

The system cannot find the batch label specified - fail

c:\Users\Alex\dev\go\src>

рдореБрдЭреЗ рдпрд╣рд╛рдВ рдХреНрдпрд╛ рд╕рдордЭ рдирд╣реАрдВ рдЖ рд░рд╣рд╛ рд╣реИ?

рдзрдиреНрдпрд╡рд╛рджред

рдПрд▓реЗрдХреНрд╕

@alexbrainman

рдореБрдЭреЗ рдпрд╣рд╛рдВ рдХреНрдпрд╛ рд╕рдордЭ рдирд╣реАрдВ рдЖ рд░рд╣рд╛ рд╣реИ?

рдЖрдкрдХреЛ рдХрдо рд╕реЗ рдХрдо CC_FOR_CGO=gcc рд╕реЗрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛ рд╕рдХрддреА рд╣реИред рдореИрдВрдиреЗ рдХрднреА рднреА рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ MSVC рдХреЗ рд╕рд╛рде рд╕реНрд╡рдпрдВ рдирд┐рд░реНрдорд╛рдг рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдирд╣реАрдВ рдХреА рд╣реИред рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдпрд╣ рдХрд╛рдо рдХрд░реЗрдЧрд╛/рд╕рдорд░реНрдерди рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред

-рд╕реА

рдЖрдкрдХреЛ рдХрдо рд╕реЗ рдХрдо CC_FOR_CGO=gcc рд╕реЗрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛ рд╕рдХрддреА рд╣реИред

рдЖрдкрдХреЗ https://go-review.googlesource.com/c/go/+/133940 рдореЗрдВ рдХреБрдЫ рдкрд░реАрдХреНрд╖рдг рд╣реИрдВред рдореИрдВ рдкрд░реАрдХреНрд╖рдг рдкрд╛рд╕ рдХреИрд╕реЗ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░реВрдВ? рд╕рдЯреАрдХ рдХрджрдо рдХреНрдпрд╛ рд╣реИрдВ?

рд╕рднреА рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЛ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд┐рд▓реНрдбрд░реЛрдВ рдкрд░ рдЬрд╛рдПрдВ https://build.golang.org %GOROOT%\src\all.bat рдЪрд▓рд╛рдПрдВ (https://go-review.googlesource.com/c/go/+/ рдореЗрдВ рд╕реВрдЪреАрдмрджреНрдз рдкрд░реАрдХреНрд╖рдгреЛрдВ рд╕рд╣рд┐рдд) 133940) рдкрд╛рд╕ред рдЖрдк рдХреИрд╕реЗ рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рд╣рдо %GOROOT%\src\all.bat рдХреЛ https://go-review.googlesource.com/c/go/+/133940 рд╕реЗ рдЕрдкрдиреЗ рд╕рдорд╛рдпреЛрдЬрд┐рдд рдкрд░реАрдХреНрд╖рдг рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЧреЛ рдХреЛрдб рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд

рдореИрдВрдиреЗ рдХрднреА рднреА рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ MSVC рдХреЗ рд╕рд╛рде рд╕реНрд╡рдпрдВ рдирд┐рд░реНрдорд╛рдг рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдирд╣реАрдВ рдХреА рд╣реИред рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдпрд╣ рдХрд╛рдо рдХрд░реЗрдЧрд╛/рд╕рдорд░реНрдерди рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред

рдЖрдк рдмрд┐рдирд╛ gcc рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд┐рдП all.bat рдХреЛ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдкреВрд░рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЪрд▓рд╛ рд╕рдХрддреЗ рд╣реИрдВред рдЧреЛ рдХреЗ рд╡рд░реНрддрдорд╛рди рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЗрд╡рд▓ рдЧреЛ рдХреЗ рджреВрд╕рд░реЗ рд╕рдВрд╕реНрдХрд░рдг (рдХрдо рд╕реЗ рдХрдо go1.4) рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдХреЗрд╡рд▓ рд╕реАрдЬреАрдУ рдХреЛ рд╕реА рдХрдВрдкрд╛рдЗрд▓рд░ рдХреА рдЬрд░реВрд░рдд рд╣реИ, рдореИрдВ рдЗрд╕ рдзрд╛рд░рдгрд╛ рдореЗрдВ рдерд╛ рдХрд┐ рдЖрдкрдХреЗ рдкрд░рд┐рд╡рд░реНрддрди рдПрдордПрд╕рд╡реАрд╕реА рджреНрд╡рд╛рд░рд╛ рдмрдирд╛рдП рдЧрдП рд╕реАрдЬреАрдУ рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди, рд╢рд╛рдпрдж, рдореБрдЭрд╕реЗ рдЧрд▓рддреА рд╣реБрдИ рд╣реИред рдЕрдЧрд░ рдореИрдВ рдЧрд▓рдд рд╣реВрдВ рдХреГрдкрдпрд╛ рдореБрдЭреЗ рд╕рд╣реАред

рдзрдиреНрдпрд╡рд╛рджред

рдПрд▓реЗрдХреНрд╕

@alexbrainman

рдЖрдкрдХреЗ https://go-review.googlesource.com/c/go/+/133940 рдореЗрдВ рдХреБрдЫ рдкрд░реАрдХреНрд╖рдг рд╣реИрдВред рдореИрдВ рдкрд░реАрдХреНрд╖рдг рдкрд╛рд╕ рдХреИрд╕реЗ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░реВрдВ? рд╕рдЯреАрдХ рдХрджрдо рдХреНрдпрд╛ рд╣реИрдВ?

рд╢рд╛рдпрдж all.bat рдкрд░реАрдХреНрд╖рдг рдХреЗ gcc рдФрд░ msvc рджреЛрдиреЛрдВ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░ рд╕рдХрддрд╛ рд╣реИред рд╢рд╛рдпрдж рд╣рдо рдХреБрдЫ рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рд╕рднреА рдХреЛ рдмрддрд╛рддрд╛ рд╣реИ рдХрд┐ рдкрд░реАрдХреНрд╖рдг рдХрд╛ рдХреМрди рд╕рд╛ рд╕рдВрд╕реНрдХрд░рдг рдЪрд▓рд╛рдирд╛ рд╣реИ - рд╡рд┐рдЬреНрдЮрд╛рдкрди рддрдм рд╣рдо рджреЛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдмрд┐рд▓реНрдбрд░реЛрдВ рдХреЛ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЗ рд╡рд┐рднрд┐рдиреНрди рд╕рдВрд╕реНрдХрд░рдг рдЪрд▓рд╛ рд╕рдХрддреЗ рд╣реИрдВред рдХреНрдпрд╛ рдЖрдкрдиреЗ рдпрд╣ рд╕рдм рд╕реЛрдЪрд╛?

рд╣рд╛рдВ, рдЗрд╕ рд╕рдЯреАрдХ рддрдВрддреНрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ https://go-review.googlesource.com/c/go/+/133946/ рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ

рдЖрдк рдмрд┐рдирд╛ gcc рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд┐рдП all.bat рдХреЛ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдкреВрд░рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЪрд▓рд╛ рд╕рдХрддреЗ рд╣реИрдВред рдЧреЛ рдХреЗ рд╡рд░реНрддрдорд╛рди рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЗрд╡рд▓ рдЧреЛ рдХреЗ рджреВрд╕рд░реЗ рд╕рдВрд╕реНрдХрд░рдг (рдХрдо рд╕реЗ рдХрдо go1.4) рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдХреЗрд╡рд▓ рд╕реАрдЬреАрдУ рдХреЛ рд╕реА рдХрдВрдкрд╛рдЗрд▓рд░ рдХреА рдЬрд░реВрд░рдд рд╣реИ, рдореИрдВ рдЗрд╕ рдзрд╛рд░рдгрд╛ рдореЗрдВ рдерд╛ рдХрд┐ рдЖрдкрдХреЗ рдкрд░рд┐рд╡рд░реНрддрди рдПрдордПрд╕рд╡реАрд╕реА рджреНрд╡рд╛рд░рд╛ рдмрдирд╛рдП рдЧрдП рд╕реАрдЬреАрдУ рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди, рд╢рд╛рдпрдж, рдореБрдЭрд╕реЗ рдЧрд▓рддреА рд╣реБрдИ рд╣реИред рдЕрдЧрд░ рдореИрдВ рдЧрд▓рдд рд╣реВрдВ рдХреГрдкрдпрд╛ рдореБрдЭреЗ рд╕рд╣реАред

рдареАрдХ рдХрд╣ рд░рд╣реЗ рд╣реИрдВ рдЖрдкред рдЬрд╛рдУ рд╣реА рдареАрдХ рдирд┐рд░реНрдорд╛рдг рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдкрд░реАрдХреНрд╖рдг рдореЗрдВ рдЖрдиреЗ рдкрд░ рд╕рдорд╕реНрдпрд╛рдПрдБ рд╣реЛ рд╕рдХрддреА рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ GOTESTMSVC = 1 рдкрд░ рдХреБрдЫ рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░ рд╕реЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП run.bat рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рд╣рдо рд╢рд╛рдпрдж рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдХреНрдпрд╛ рдПрдордПрд╕рд╡реАрд╕реА рдХреЗ рд╕рд╛рде рдмрд╕ рдмрдирд╛рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ, рдФрд░ рдЙрд╕рдХреЗ рдмрд╛рдж рдЙрдкрдпреБрдХреНрдд рджреВрд░рд╕реНрде рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░ рд╕реЗрдЯ рдХрд░реЗрдВ рддрд╛рдХрд┐ рдкрд░реАрдХреНрд╖рдг рд╡рд┐рдлрд▓ рди рд╣реЛрдВред

рдлрд┐рд░ рдЖрдк GOTESTMSVC=1 рдФрд░ GOVSVARSPATH=some vsvars.bat рдкрде рд╕реЗрдЯ рдХрд░реЗрдВрдЧреЗред рдЙрд╕рдХреЗ рдмрд╛рдж all.bat рдХреЗ рд╕рд╛рде рднрд╡рди рдХреЛ gcc рдФрд░ msvc cgo рджреЛрдиреЛрдВ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЪрд▓рд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред

рдореИрдВрдиреЗ рд╡рд╣ рдХреЛрд╢рд┐рд╢ рдХреАред

рдореИрдВрдиреЗрдВ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛

commit e56d52f66b95b87001867a2487a11bd961f40d4d (HEAD)
Author: Caleb Champlin <[email protected]>
Date:   Sat Sep 8 00:26:32 2018 -0600

    cmd/compile: add support for MSVC toolchain to go build

    Allows building with MSVC as an external compiler/linker.

    Setting CC=cl.exe inside an MSVC environment will automatically
    build cgo executables using MSVC as the external compiler and
    linker.

    For the builders setting the environment variable GOVSVARSPATH
    to the location of a msvsvars.bat file and setting the
    environment variable GOTESTMSVC=1 will automatically cause
    all.bat to run tests and compiler with both gcc and MSVC.

    Updates #20982

    Change-Id: I44be1f43aa0d53a688c595bc8336e0364b809ced

рдореИрдВ рдкрд╣рд▓реЗ рдЗрд╕ рдмреИрдЪ рдлрд╝рд╛рдЗрд▓ рдХреЛ рдЪрд▓рд╛рддрд╛ рд╣реВрдВ:

set TERM=msys
set MYHOME=c:\users\alex\dev
set GOROOT=%MYHOME%\go
set GOROOT_BOOTSTRAP=%MYHOME%\go1.4.3
set GOPATH=%MYHOME%
set MINGW=%MYHOME%\mingw64_4.9.1

set GOTESTMSVC=1
set GOVSVARSPATH="C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\VC\Auxiliary\Build\vcvars64.bat"

set PATH=%PATH%;%MINGW%\bin;%MYHOME%\my\bin\;%GOROOT%\bin
cd %GOROOT%\src
CMD

рдФрд░ рдлрд┐рд░ all.bat рдЪрд▓рд╛рдПрдБред all.bat рд╕рд╛рде рд╡рд┐рдлрд▓ рд░рд╣рддрд╛ рд╣реИ

--- FAIL: TestDocsUpToDate (0.00s)
    help_test.go:26: alldocs.go is not up to date; run mkalldocs.sh to regenerate it
go test proxy starting
go test proxy running at GOPROXY=http://127.0.0.1:52023/mod
go proxy: no archive w.1 v1.2.0
go proxy: no archive x.1 v1.0.0
go proxy: no archive z.1 v1.2.0
go proxy: no archive rsc.io v1.5.0
go proxy: no archive example.com/unused v0.0.0
go proxy: no archive example.com/unused v0.0.0
go proxy: no archive sub.1 v1.0.0
go proxy: no archive badsub.1 v1.0.0
go proxy: no archive versioned.1 v1.0.0
go proxy: no archive versioned.1 v1.1.0
go proxy: no archive golang.org/x/text/language 14c0d48
go proxy: no archive golang.org/x/text/language 14c0d48
go proxy: no archive golang.org/x/text/language 14c0d48
go proxy: no archive golang.org/x/text/foo 14c0d48
go proxy: no archive golang.org/x 14c0d48
go proxy: no archive golang.org 14c0d48
go proxy: no archive example.com/split/subpkg v1.0.0
FAIL
FAIL    cmd/go  147.247s
ok      cmd/go/internal/cache   13.115s
ok      cmd/go/internal/dirhash 0.518s
ok      cmd/go/internal/generate        0.180s
ok      cmd/go/internal/get     0.761s
ok      cmd/go/internal/imports 0.212s
ok      cmd/go/internal/load    1.050s
ok      cmd/go/internal/modconv 1.596s
ok      cmd/go/internal/modfetch        0.881s
ok      cmd/go/internal/modfetch/codehost       0.179s
ok      cmd/go/internal/modfile 0.193s
ok      cmd/go/internal/modload 2.820s
ok      cmd/go/internal/module  0.860s
ok      cmd/go/internal/mvs     0.255s
ok      cmd/go/internal/par     0.107s
ok      cmd/go/internal/search  0.087s
ok      cmd/go/internal/semver  0.140s
ok      cmd/go/internal/txtar   0.249s
ok      cmd/go/internal/web2    0.136s
ok      cmd/go/internal/work    0.200s
ok      cmd/gofmt       0.216s
ok      cmd/internal/buildid    0.522s
ok      cmd/internal/dwarf      0.077s
ok      cmd/internal/edit       0.160s
ok      cmd/internal/goobj      2.430s
ok      cmd/internal/obj        0.103s
ok      cmd/internal/obj/arm64  0.190s
ok      cmd/internal/obj/x86    0.845s
ok      cmd/internal/objabi     0.063s
ok      cmd/internal/src        0.093s
ok      cmd/internal/test2json  0.253s
ok      cmd/link        6.285s
ok      cmd/link/internal/ld    24.147s
ok      cmd/link/internal/sym   0.887s
ok      cmd/nm  7.678s
ok      cmd/objdump     2.772s
ok      cmd/pack        3.256s
ok      cmd/trace       0.449s
ok      cmd/vendor/github.com/google/pprof/internal/binutils    0.479s
ok      cmd/vendor/github.com/google/pprof/internal/driver      6.103s
ok      cmd/vendor/github.com/google/pprof/internal/elfexec     0.079s
ok      cmd/vendor/github.com/google/pprof/internal/graph       0.455s
ok      cmd/vendor/github.com/google/pprof/internal/measurement 0.066s
ok      cmd/vendor/github.com/google/pprof/internal/report      0.154s
ok      cmd/vendor/github.com/google/pprof/internal/symbolizer  0.096s
ok      cmd/vendor/github.com/google/pprof/internal/symbolz     0.078s
ok      cmd/vendor/github.com/google/pprof/profile      0.527s
ok      cmd/vendor/github.com/ianlancetaylor/demangle   0.109s
ok      cmd/vendor/golang.org/x/arch/arm/armasm 0.424s
ok      cmd/vendor/golang.org/x/arch/arm64/arm64asm     0.537s
ok      cmd/vendor/golang.org/x/arch/ppc64/ppc64asm     0.155s
ok      cmd/vendor/golang.org/x/arch/x86/x86asm 0.239s
ok      cmd/vendor/golang.org/x/crypto/ssh/terminal     0.174s
ok      cmd/vendor/golang.org/x/sys/windows     0.334s
ok      cmd/vendor/golang.org/x/sys/windows/registry    0.199s
ok      cmd/vendor/golang.org/x/sys/windows/svc 0.316s
ok      cmd/vendor/golang.org/x/sys/windows/svc/eventlog        0.089s
ok      cmd/vendor/golang.org/x/sys/windows/svc/mgr     0.432s
ok      cmd/vet 6.392s
ok      cmd/vet/internal/cfg    0.102s
2018/12/16 15:55:18 Failed: exit status 1

рд╕рд╛рде рд╣реА GOTESTMSVC рдФрд░ GOVSVARSPATH рдХреЛ рд╕реЗрдЯ рдХрд░рдирд╛ рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдЬреЛ all.bat рдХреЛ рдХреНрд░рд┐рдпрд╛рдиреНрд╡рд┐рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рдЖрдкрдХреЗ рдкрд░рд┐рд╡рд░реНрддрди рдХреЗ рдЕрдиреНрдп рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреНрдпрд╛ рдХрд░реЗрдВрдЧреЗ рдЬрдм рдЙрдиреНрд╣реЗрдВ Cgo рдХреЗ рд▓рд┐рдП MSVC рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА? рдЗрд╕рдХреЗ рд▓рд┐рдП рдЖрдкрдХреА рдХреНрдпрд╛ рдпреЛрдЬрдирд╛ рд╣реИ?

рдПрд▓реЗрдХреНрд╕

@alexbrainman
рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рд╣реЛ рд░рд╣рд╛ рд╣реИред рдорд╛рд╕реНрдЯрд░ рдкрд░ рдореЗрд░реЗ рд▓рд┐рдП рд╡рд╣ рдкрд░реАрдХреНрд╖рд╛ рд╡рд┐рдлрд▓ рд╣реЛ рд░рд╣реА рд╣реИ

> git status
On branch master
Your branch is up to date with 'origin/master'

> cd src\cmd\go
> go test .\help_test.go
--- FAIL: TestDocsUpToDate (0.00s)
    help_test.go:26: alldocs.go is not up to date; run mkalldocs.sh to regenerate it

help.go рдореЗрдВ https://github.com/golang/go/blob/c040786f37246f40ae29402fbdb6e97031a21713/src/cmd/go/internal/help/help.go#L37
рдпрд╣ рдЖрдзрд╛рд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкреБрдирд░рд╛рд╡реГрддрд┐ рдХрд░рддрд╛ рд╣реИредрдЬрд╛рдУредрдЖрджреЗрд╢ред рдЬрд┐рд╕реЗ main.go рдореЗрдВ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ https://github.com/golang/go/blob/c040786f37246f40ae29402fbdb6e97031a21713/src/cmd/go/main.go#L43
рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдкрд░реАрдХреНрд╖рдг рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рдореЗрдВ рдЙрд╕ init рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХрднреА рднреА рдХреИрд╕реЗ рдмреБрд▓рд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рдорд╛рд╕реНрдЯрд░ рдЕрднреА рдкрд░реАрдХреНрд╖рдг рдХреИрд╕реЗ рдкрд╛рд╕ рдХрд░ рд░рд╣рд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдкреВрд░реЗ рдмреЛрд░реНрдб рдореЗрдВ рд╡рд┐рдлрд▓ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред


рд╕рд╛рде рд╣реА GOTESTMSVC рдФрд░ GOVSVARSPATH рдХреЛ рд╕реЗрдЯ рдХрд░рдирд╛ рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдЬреЛ all.bat рдХреЛ рдХреНрд░рд┐рдпрд╛рдиреНрд╡рд┐рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рдЖрдкрдХреЗ рдкрд░рд┐рд╡рд░реНрддрди рдХреЗ рдЕрдиреНрдп рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреНрдпрд╛ рдХрд░реЗрдВрдЧреЗ рдЬрдм рдЙрдиреНрд╣реЗрдВ Cgo рдХреЗ рд▓рд┐рдП MSVC рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА? рдЗрд╕рдХреЗ рд▓рд┐рдП рдЖрдкрдХреА рдХреНрдпрд╛ рдпреЛрдЬрдирд╛ рд╣реИ?

рддреЛ рдРрд╕реА рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдЬрд╣рд╛рдВ рдЖрдк рдПрдордПрд╕рд╡реАрд╕реА рдХреЗ рд╕рд╛рде рдХреБрдЫ рд╕реАрдЬреАрдУ рдХреЛрдб рдмрдирд╛рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ

call vsvars64.bat
set CC_FOR_CGO=gcc
set CC=cl.exe
go build

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдкрдХреЛ рдмрд╕ рдЗрддрдирд╛ рд╣реА рдЪрд╛рд╣рд┐рдП

рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдкрд░реАрдХреНрд╖рдг рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рдореЗрдВ рдЙрд╕ init рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХрднреА рднреА рдХреИрд╕реЗ рдмреБрд▓рд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рдорд╛рд╕реНрдЯрд░ рдЕрднреА рдкрд░реАрдХреНрд╖рдг рдХреИрд╕реЗ рдкрд╛рд╕ рдХрд░ рд░рд╣рд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдкреВрд░реЗ рдмреЛрд░реНрдб рдореЗрдВ рд╡рд┐рдлрд▓ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред

cmd/go рдореЗрдВ рдлрд╝рд╛рдЗрд▓ рдХреЗ рд╕рд╛рде go test рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп, go рдЯреВрд▓ cmd/go рдкреИрдХреЗрдЬ рдмрдирд╛рдПрдЧрд╛ рдФрд░ рдлрд┐рд░ рдкрд░реАрдХреНрд╖рдг рдмрдирд╛рдПрдЧрд╛, рдкрд░реАрдХреНрд╖рдг рдбреНрд░рд╛рдЗрд╡рд░ рдЙрддреНрдкрдиреНрди рдХрд░реЗрдЧрд╛, рдЙрд╕реЗ рдмрдирд╛рдПрдЧрд╛, рдФрд░ рд╕рдм рдХреБрдЫ рдПрдХ рд╕рд╛рде рдПрдХ рдирдП рдореБрдЦреНрдп рдкреИрдХреЗрдЬ рдореЗрдВ рд▓рд┐рдВрдХ рдХрд░реЗрдЧрд╛ред рдРрд╕рд╛ рддрдм рднреА рд╣реЛрддрд╛ рд╣реИ рдЬрдм cmd/go рдЕрдкрдиреЗ рдЖрдк рдореЗрдВ рдПрдХ рдореБрдЦреНрдп рдкреИрдХреЗрдЬ рд╣реЛрддрд╛ рд╣реИред рдЕрд░реНрдерд╛рддреН, cmd/go/*.go рдореЗрдВ рдореБрдЦреНрдп рдкреИрдХреЗрдЬ рдХреЛ рдкрд░реАрдХреНрд╖рдг рдХреЗ рдкреНрд░рдпреЛрдЬрдиреЛрдВ рдХреЗ рд▓рд┐рдП рдЧреИрд░-рдореБрдЦреНрдп рдкреИрдХреЗрдЬ рдорд╛рдирд╛ рдЬрд╛рдПрдЧрд╛ред рдпрд╣ рдкрд░реАрдХреНрд╖рдг рдХреЛ рдореБрдЦреНрдп рдкреИрдХреЗрдЬ рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдмрдирд╛рддрд╛ рд╣реИ рдпрджрд┐ рдЙрдкрдпреБрдХреНрдд рд╣реЛред

рдХреНрд╖рдорд╛ рдХрд░реЗрдВ, рдореИрдВ рдЙрддреНрддрд░ рджреЗрдиреЗ рдореЗрдВ рдзреАрдорд╛ рд╣реВрдБред рд▓реЗрдХрд┐рди рдореЗрд░реЗ рдкрд╛рд╕ рдЗрд╕ рдкрд░ рджреЛрдмрд╛рд░рд╛ рдЧреМрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЦрд╛рд▓реА рд╕рдордп рдирд╣реАрдВ рдерд╛ред

рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рд╣реЛ рд░рд╣рд╛ рд╣реИред рдорд╛рд╕реНрдЯрд░ рдкрд░ рдореЗрд░реЗ рд▓рд┐рдП рд╡рд╣ рдкрд░реАрдХреНрд╖рд╛ рд╡рд┐рдлрд▓ рд╣реЛ рд░рд╣реА рд╣реИ

рдореИрдВрдиреЗ рдорд╛рд╕реНрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ред рдореИрдВрдиреЗ рдЖрдкрдХреЗ e56d52f66b95b87001867a2487a11bd961f40d4d рдХрдорд┐рдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ред рдХреНрдпрд╛ рдЖрдкрдиреЗ рд╕рдореАрдХреНрд╖рд╛ рдХреЗ рд▓рд┐рдП рднреЗрдЬрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдЙрд╕ рдкреНрд░рддрд┐рдмрджреНрдзрддрд╛ рдкрд░ all.bat рдирд╣реАрдВ рдЪрд▓рд╛рдпрд╛? рдХреНрдпрд╛ all.bat рд╕рдлрд▓ рд╣реБрдЖ? рдХреНрдпрд╛ рдЖрдк рдЙрд╕ рдХрдорд┐рдЯ рдкрд░ all.bat рдХреЛ рдлрд┐рд░ рд╕реЗ рдЪрд▓рд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдпрд╣ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдХреНрдпрд╛ рдпрд╣ рдореЗрд░реЗ рд╕рд┐рд╕реНрдЯрдо рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЗ рд╕рд╛рде рдХреБрдЫ рдХрд░рдирд╛ рд╣реИред рдзрдиреНрдпрд╡рд╛рджред

рддреЛ рдРрд╕реА рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдЬрд╣рд╛рдВ рдЖрдк рдПрдордПрд╕рд╡реАрд╕реА рдХреЗ рд╕рд╛рде рдХреБрдЫ рд╕реАрдЬреАрдУ рдХреЛрдб рдмрдирд╛рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ

call vsvars64.bat
set CC_FOR_CGO=gcc
set CC=cl.exe
go build

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдкрдХреЛ рдмрд╕ рдЗрддрдирд╛ рд╣реА рдЪрд╛рд╣рд┐рдП

2 рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░, рд╢рд╛рдпрдж, рдФрд╕рдд рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдЬрдЯрд┐рд▓ рд╣реИрдВред рдФрд░ CC_FOR_CGO=gcc рдореБрдЭреЗ рдЕрдЬреАрдм рд▓рдЧ рд░рд╣рд╛ рд╣реИ - рд╣рдо MSVC рдХреЗ рд╕рд╛рде рдХреЛрдб рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП gcc рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреНрдпреЛрдВ рдХрд░рддреЗ рд╣реИрдВ?

рдПрд▓реЗрдХреНрд╕

@alexbrainman

рдореИрдВрдиреЗ рдорд╛рд╕реНрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ред рдореИрдВрдиреЗ рдЖрдкрдХреЗ e56d52f66b95b87001867a2487a11bd961f40d4d рдХрдорд┐рдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ред рдХреНрдпрд╛ рдЖрдкрдиреЗ рд╕рдореАрдХреНрд╖рд╛ рдХреЗ рд▓рд┐рдП рднреЗрдЬрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдЙрд╕ рдкреНрд░рддрд┐рдмрджреНрдзрддрд╛ рдкрд░ all.bat рдирд╣реАрдВ рдЪрд▓рд╛рдпрд╛? рдХреНрдпрд╛ all.bat рд╕рдлрд▓ рд╣реБрдЖ? рдХреНрдпрд╛ рдЖрдк рдЙрд╕ рдХрдорд┐рдЯ рдкрд░ all.bat рдХреЛ рдлрд┐рд░ рд╕реЗ рдЪрд▓рд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдпрд╣ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдХреНрдпрд╛ рдпрд╣ рдореЗрд░реЗ рд╕рд┐рд╕реНрдЯрдо рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЗ рд╕рд╛рде рдХреБрдЫ рдХрд░рдирд╛ рд╣реИред рдзрдиреНрдпрд╡рд╛рджред

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдореЗрд░реЗ рд╕рд┐рд╕реНрдЯрдо рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЗ рд╕рд╛рде рдХреБрдЫ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдерд╛ рдЬреЛ рдкрд░реАрдХреНрд╖рдг рдЪрд▓рд╛рддреЗ рд╕рдордп рдореБрдЭреЗ рдЕрдЬреАрдм рдкрд░рд┐рдгрд╛рдо рджреЗ рд░рд╣рд╛ рдерд╛ред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореИрдВрдиреЗ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдареАрдХ рдХрд░ рд▓рд┐рдпрд╛ рд╣реИ рдФрд░ рдХреБрдЫ рдЕрдкрдбреЗрдЯ рдХреЛ рдкрд░рд┐рд╡рд░реНрддрди рд╕реЗрдЯ рдореЗрдВ рдзрдХреЗрд▓ рджрд┐рдпрд╛ рд╣реИред

2 рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░, рд╢рд╛рдпрдж, рдФрд╕рдд рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдЬрдЯрд┐рд▓ рд╣реИрдВред рдФрд░ CC_FOR_CGO=gcc рдореБрдЭреЗ рдЕрдЬреАрдм рд▓рдЧрддрд╛ рд╣реИ - рд╣рдо MSVC рдХреЗ рд╕рд╛рде рдХреЛрдб рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП gcc рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреНрдпреЛрдВ рдХрд░рддреЗ рд╣реИрдВ?

рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╢рд╛рдпрдж CC_FOR_CGO=gcc.exe рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдореЗрд░реА рдЧрд▓рддреАред рд▓реЗрдХрд┐рди рдЖрдкрдХреЗ рдкреНрд░рд╢реНрди рдХрд╛ рдЙрддреНрддрд░ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП; рдЧреЗрд░рд┐рдЯ рд╕реЗ:

PS1, рд▓рд╛рдЗрди 1324:
cgo рдХреЛ рдЕрднреА рднреА рдЯрд╛рдЗрдк рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХреЗ рд▓рд┐рдП рдЙрдкрд▓рдмреНрдз gcc рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдпрджрд┐ CC рдХреЛ MSVC рдХрдВрдкрд╛рдЗрд▓рд░ рдкрд░ рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рддреЛ cgo рдХреЛ GCC рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд╛рдзрди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ рдЬреЛ CC_FOR_CGO рджреНрд╡рд╛рд░рд╛ рдкреНрд░рджрд╛рди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ MSVC рдЯреВрд▓рдЪреЗрди рдореЗрдВ рдЙрд╕реА рдкреНрд░рдХрд╛рд░ рдХреА рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рддрдВрддреНрд░ рдирд╣реАрдВ рд╣реИ рдЬреЛ gcc рд╕реЗ рдПрдХрддреНрд░ рдХреА рдЬрд╛ рд░рд╣реА рд╣реИред рд╕реИрджреНрдзрд╛рдВрддрд┐рдХ рд░реВрдк рд╕реЗ рд╕реАрдЬреАрдУ рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдХреА рдЬрд╛рдиреЗ рд╡рд╛рд▓реА рдкреНрд░рдХрд╛рд░ рдХреА рдЬрд╛рдирдХрд╛рд░реА рдПрдХрддреНрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЙрдкрдХрд░рдг рдмрдирд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рд▓реЗрдХрд┐рди рдпрд╣ рдЧреБрдВрдЬрд╛рдЗрд╢ рд╕реЗ рдмрд╛рд╣рд░ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рд╕рдВрднрд╡рддрдГ рдХрд╛рдлреА рдкреНрд░рдпрд╛рд╕ (рдореИрдВрдиреЗ рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ рд╕реА/рд╕реА ++ рдХреЛрдб рдХреЗ рд╕реНрдерд┐рд░ рдкреНрд░рдХрд╛рд░ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рднреА рдирд╣реАрдВ рд▓рд┐рдЦрд╛ рд╣реИ)ред

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЬреАрд╕реАрд╕реА рдмрдирд╛рдо рдПрдордПрд╕рд╡реАрд╕реА рдХреЗ рд▓рд┐рдП рд░рдиреЛрдВ рдХреЗ рдмреАрдЪ рд╕реНрдкрд╖реНрдЯ рдХреИрд╢ рдХреЗ рд╕рд╛рде рдХреБрдЫ рдЯреВрдЯ рдЧрдпрд╛ рд╣реИ, рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдХреНрдпреЛрдВ рдХреБрдЫ рдкрд░реАрдХреНрд╖рдг рдЕрднреА рднреА рдХрд╛рдо рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдЬреИрд╕реЗ рдХрд┐ рд╡реЗ рдХреИрд╢ рдХрд┐рдП рдЧрдП рд╣реИрдВред

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореИрдВрдиреЗ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдареАрдХ рдХрд░ рд▓рд┐рдпрд╛ рд╣реИ рдФрд░ рдХреБрдЫ рдЕрдкрдбреЗрдЯ рдХреЛ рдкрд░рд┐рд╡рд░реНрддрди рд╕реЗрдЯ рдореЗрдВ рдзрдХреЗрд▓ рджрд┐рдпрд╛ рд╣реИред

рдпрд╣ рд╕реЗрдЯрдЕрдк https://github.com/golang/go/issues/20982#issuecomment -447618566 рдкрд░

commit 5479fc9fe61fb998082fea5cb423314cc1afa649 (HEAD)
Author: Caleb Champlin <[email protected]>
Date:   Sat Sep 8 00:26:32 2018 -0600

    cmd/compile: add support for MSVC toolchain to go build

    Allows building with MSVC as an external compiler/linker.

    Setting CC=cl.exe inside an MSVC environment will automatically
    build cgo executables using MSVC as the external compiler and
    linker.

    For the builders setting the environment variable GOVSVARSPATH
    to the location of a msvsvars.bat file and setting the
    environment variable GOTESTMSVC=1 will automatically cause
    all.bat to run tests and compiler with both gcc and MSVC.

    Updates #20982

    Change-Id: I44be1f43aa0d53a688c595bc8336e0364b809ced

рдореБрдЭреЗ рдФрд░ рдЖрдЧреЗ рд▓реЗ рдЬрд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдлрд┐рд░ рднреА рд╡рд┐рдлрд▓ рд░рд╣рддрд╛ рд╣реИ

##### API check
+pkg go/build, type Context struct, CompilerType string
+pkg go/build, type Package struct, CgoMSCFLAGS []string
+pkg go/build, type Package struct, CgoMSCPPFLAGS []string
+pkg go/build, type Package struct, CgoMSCXXFLAGS []string
+pkg go/build, type Package struct, CgoMSLDFLAGS []string
+pkg os, method (*File) SyscallConn() (syscall.RawConn, error)

ALL TESTS PASSED

**********************************************************************
** Visual Studio 2017 Developer Command Prompt v15.0.26730.12
** Copyright (c) 2017 Microsoft Corporation
**********************************************************************
[vcvarsall.bat] Environment initialized for: 'x64'

# runtime/cgo
msvc_libinit_windows.c
msvc_libinit_windows.c(133): error C2220: warning treated as error - no 'object' file generated
msvc_libinit_windows.c(133): warning C4710: 'int fprintf(FILE *const ,const char *const ,...)': function not inlined
C:\Program Files (x86)\Windows Kits\10\include\10.0.15063.0\ucrt\stdio.h(826): note: see declaration of 'fprintf'
go tool dist: FAILED: go install -gcflags=all= -ldflags=all= std cmd: exit status 2

c:\Users\Alex\dev\go\src>

рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╢рд╛рдпрдж CC_FOR_CGO=gcc.exe рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдореЗрд░реА рдЧрд▓рддреАред

рдореИрдВ gcc.exe рдореЗрдВ .exe рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЪрд┐рдВрддрд┐рдд рдирд╣реАрдВ рд╣реВрдВред рдореЗрд░реЗ рдореБрджреНрджреЗ рд╣реИрдВ

  • MSVC рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ gcc рдФрд░ MSVC рджреЛрдиреЛрдВ рдЙрдкрдХрд░рдгреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ (рдЗрд╕реЗ рд╣рдорд╛рд░реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рд╕рдордЭрд╛рдирд╛ рдХрдард┐рди рд╣реЛрдЧрд╛), рд▓реЗрдХрд┐рди рдореИрдВ рд╕рдордЭрддрд╛ рд╣реВрдБ рдХрд┐ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рднреА рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ;

  • рдореБрдЭреЗ рджреЛрдиреЛрдВ рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░ CC_FOR_CGO=gcc рдФрд░ CC=cl.exe рд╕реЗрдЯ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдереА - рд╢рд╛рдпрдж рд╣рдо рдорд╛рди рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ CC_FOR_CGO рд╣рдореЗрд╢рд╛ рдЬреАрд╕реАрд╕реА рдкрд░ рд╕реЗрдЯ рд╣реИ?

рд▓реЗрдХрд┐рди рдЖрдкрдХреЗ рдкреНрд░рд╢реНрди рдХрд╛ рдЙрддреНрддрд░ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП; рдЧреЗрд░рд┐рдЯ рд╕реЗ:

рд╕рдордЭрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред

рдПрд▓реЗрдХреНрд╕

@alexbrainman

# runtime/cgo
msvc_libinit_windows.c
msvc_libinit_windows.c(133): error C2220: warning treated as error - no 'object' file generated
msvc_libinit_windows.c(133): warning C4710: 'int fprintf(FILE *const ,const char *const ,...)': function not inlined
C:\Program Files (x86)\Windows Kits\10\include\10.0.15063.0\ucrt\stdio.h(826): note: see declaration of 'fprintf'
go tool dist: FAILED: go install -gcflags=all= -ldflags=all= std cmd: exit status 2

рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдпрд╣ рдЪреЗрддрд╛рд╡рдиреА рдХреИрд╕реЗ рд╣реЛрдЧреА рдЬрдм рддрдХ рдХрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ msvc_libinit_windows.c рдХреА рдПрдХ рдЕрд▓рдЧ/рдкреБрд░рд╛рдиреА рдкреНрд░рддрд┐ рди рд╣реЛред рдХреНрдпрд╛ рдЖрдк рдкреБрд╖реНрдЯрд┐ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдЗрд╕рдореЗрдВ рдпрд╣ рдкрдВрдХреНрддрд┐ рд╣реИ:

// src/runtime/cgo/msvc_libinit_windows.c
#pragma warning(disable:4668 4255 4710)

C4710 рдХреЛ stdio рд╢рд╛рдорд┐рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рджрдмрд╛рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдореИрдВ рджреЗрдЦрддрд╛ рд╣реВрдВ рдХрд┐ рдПрдордПрд╕рд╡реАрд╕реА рдХрд╛ рдЖрдкрдХрд╛ рд╕рдВрд╕реНрдХрд░рдг рдореЗрд░реЗ рд╕реЗ рдереЛрдбрд╝рд╛ рдЕрд▓рдЧ рд╣реИ, рдЬреЛ рдПрдХ рдЕрдкрд░рд╛рдзреА рднреА рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рд╡реЗ рдПрдХ рдЕрд▓рдЧ рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рдЙрд╕ рджрдорди рдХреЛ рд╕рдХреНрд░рд┐рдп рд░реВрдк рд╕реЗ рдЕрдирджреЗрдЦрд╛ рдХреНрдпреЛрдВ рдХрд░реЗрдВрдЧреЗред

рдЖрдк рд╡реИрд╢реНрд╡рд┐рдХ рд╕реНрддрд░ рдкрд░ рджрдорди рдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрджрд▓рд╛рд╡ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рднреА рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЪрд╛рд╣реЗ рдХреБрдЫ рднреА рд╣реЛ

// src/cmd/go/internal/work/exec.go
// Line 2719
cgoMSCPPFLAGS = append(cgoMSCFLAGS, "/wd4668") // this should be cgoMSCFLAGS = append(cgoMSCFLAGS, "/wd4668") I'll fix the change set to correct
+cgoMSCFLAGS = append(cgoMSCFLAGS, "/wd4710") 

рдореБрдЭреЗ рджреЛрдиреЛрдВ рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░ CC_FOR_CGO=gcc рдФрд░ CC=cl.exe рд╕реЗрдЯ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдереА - рд╢рд╛рдпрдж рд╣рдо рдорд╛рди рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ CC_FOR_CGO рд╣рдореЗрд╢рд╛ рдЬреАрд╕реАрд╕реА рдкрд░ рд╕реЗрдЯ рд╣реИ?

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЕрдЧрд░ CC_FOR_CGO рд╕реЗрдЯ рдирд╣реАрдВ рд╣реИ рддреЛ gcc рдореМрдЬреВрдж рд╣реИ рдпрд╛ рдирд╣реАрдВ, рдпрд╣ рдареАрдХ рд╣реЛрдЧрд╛ред CC_FOR_CGO рдореЗрд░реЗ рдЬреИрд╕реЗ рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдЕрдзрд┐рдХ рд╣реИ рдЬрд┐рдирдХреЗ рдкрде рдореЗрдВ gcc рдирд╣реАрдВ рд╣реИред рдореЗрд░рд╛ CC_FOR_CGO рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ CC_FOR_CGO=I:\Development\tmd-gcc\bingcc.exeред рдЕрдЧрд░ рд╣рдо рдЬреАрд╕реАрд╕реА рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЗ рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдЬреЛ рдПрдордПрд╕рд╡реАрд╕реА рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреЗ рд░рд╛рд╕реНрддреЗ рдкрд░ рдирд╣реАрдВ рд╣реИ рддреЛ рдореБрдЭреЗ рдмрддрд╛рдПрдВ рдФрд░ рдореИрдВ рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░ рд╕реЗ рдПрдХ рд╕рд╛рде рдЫреБрдЯрдХрд╛рд░рд╛ рдкрд╛ рд╕рдХрддрд╛ рд╣реВрдВред

рдореИрдВрдиреЗ рдЗрд╕ рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рдлрд┐рд░ рд╕реЗ рдХреЛрд╢рд┐рд╢ рдХреА

commit 6741b7009d1894b5bf535d82ad46f4a379651670 (HEAD)
Author: Caleb Champlin <[email protected]>
Date:   Sat Sep 8 00:26:32 2018 -0600

    cmd/compile: add support for MSVC toolchain to go build

    Allows building with MSVC as an external compiler/linker.

    Setting CC=cl.exe inside an MSVC environment will automatically
    build cgo executables using MSVC as the external compiler and
    linker.

    For the builders setting the environment variable GOVSVARSPATH
    to the location of a msvsvars.bat file and setting the
    environment variable GOTESTMSVC=1 will automatically cause
    all.bat to run tests and compiler with both gcc and MSVC.

    Updates #20982

    Change-Id: I44be1f43aa0d53a688c595bc8336e0364b809ced

рдФрд░ рдореБрдЭреЗ рд╡рд╣реА рддреНрд░реБрдЯрд┐ рдорд┐рд▓рддреА рд╣реИ

##### API check
+pkg go/build, type Context struct, CompilerType string
+pkg go/build, type Package struct, CgoMSCFLAGS []string
+pkg go/build, type Package struct, CgoMSCPPFLAGS []string
+pkg go/build, type Package struct, CgoMSCXXFLAGS []string
+pkg go/build, type Package struct, CgoMSLDFLAGS []string
+pkg os, method (*File) SyscallConn() (syscall.RawConn, error)

ALL TESTS PASSED

**********************************************************************
** Visual Studio 2017 Developer Command Prompt v15.0.26730.12
** Copyright (c) 2017 Microsoft Corporation
**********************************************************************
[vcvarsall.bat] Environment initialized for: 'x64'

# runtime/cgo
msvc_libinit_windows.c
msvc_libinit_windows.c(133): error C2220: warning treated as error - no 'object' file generated
msvc_libinit_windows.c(133): warning C4710: 'int fprintf(FILE *const ,const char *const ,...)': function not inlined
C:\Program Files (x86)\Windows Kits\10\include\10.0.15063.0\ucrt\stdio.h(826): note: see declaration of 'fprintf'
go tool dist: FAILED: go install -gcflags=all= -ldflags=all= std cmd: exit status 2

c:\Users\Alex\dev\go\src>

рдХреНрдпрд╛ рдЖрдк рдкреБрд╖реНрдЯрд┐ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдЗрд╕рдореЗрдВ рдпрд╣ рдкрдВрдХреНрддрд┐ рд╣реИ:

// src/runtime/cgo/msvc_libinit_windows.c
#pragma warning(disable:4668 4255 4710)

рдпрд╣ рдореЗрд░реА src/runtime/cgo/msvc_libinit_windows.c рдлрд╝рд╛рдЗрд▓ рдХреА рд╢реБрд░реБрдЖрдд рд╣реИ

// Copyright 2018 The Go Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.

// +build cgo

#define WIN64_LEAN_AND_MEAN
// Suppress MSVC specific warnings.
// C4668: symbol' is not defined as a preprocessor macro, 
// replacing with '0' for 'directives'.
// C4255: function' : no function prototype given: converting '()' 
// to '(void)'.
// C4710: function' : function not inlined
#pragma warning(disable:4668 4255 4710)
#include <windows.h>
#include <process.h>
...

рдЖрдк рд╡реИрд╢реНрд╡рд┐рдХ рд╕реНрддрд░ рдкрд░ рджрдорди рдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрджрд▓рд╛рд╡ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рднреА рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЪрд╛рд╣реЗ рдХреБрдЫ рднреА рд╣реЛ

// src/cmd/go/internal/work/exec.go
// Line 2719
cgoMSCPPFLAGS = append(cgoMSCFLAGS, "/wd4668") // this should be cgoMSCFLAGS = append(cgoMSCFLAGS, "/wd4668") I'll fix the change set to correct
+cgoMSCFLAGS = append(cgoMSCFLAGS, "/wd4710") 

рдореИрдВрдиреЗ рдпрд╣ рдкрд░рд┐рд╡рд░реНрддрди рдХрд┐рдпрд╛ рд╣реИ:

c:\Users\Alex\dev\go\src>git diff
diff --git a/src/cmd/go/internal/work/exec.go b/src/cmd/go/internal/work/exec.go
index 49d1d849f5..9fb442ab95 100644
--- a/src/cmd/go/internal/work/exec.go
+++ b/src/cmd/go/internal/work/exec.go
@@ -2717,6 +2717,7 @@ func (b *Builder) cgo(a *Action, cgoExe, objdir string, pcCFLAGS, pcMSCFLAGS, pc
        cgoLDFLAGS = append(cgoLDFLAGS, pcLDFLAGS...)
        if cfg.BuildContext.CompilerType == "msvc" {
                cgoMSCFLAGS = append(cgoMSCFLAGS, "/wd4668")
+               cgoMSCFLAGS = append(cgoMSCFLAGS, "/wd4710")

                cgoMSCPPFLAGS = append(cgoMSCPPFLAGS, pcMSCFLAGS...)
                cgoMSCPPFLAGS = append(cgoMSCPPFLAGS, "/c")

c:\Users\Alex\dev\go\src>

рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд╡рд╣реА рддреНрд░реБрдЯрд┐ рджрд┐рдЦрд╛рдИ рджреЗ рд░рд╣реА рд╣реИ

##### API check
+pkg go/build, type Context struct, CompilerType string
+pkg go/build, type Package struct, CgoMSCFLAGS []string
+pkg go/build, type Package struct, CgoMSCPPFLAGS []string
+pkg go/build, type Package struct, CgoMSCXXFLAGS []string
+pkg go/build, type Package struct, CgoMSLDFLAGS []string
+pkg os, method (*File) SyscallConn() (syscall.RawConn, error)

ALL TESTS PASSED

**********************************************************************
** Visual Studio 2017 Developer Command Prompt v15.0.26730.12
** Copyright (c) 2017 Microsoft Corporation
**********************************************************************
[vcvarsall.bat] Environment initialized for: 'x64'

# runtime/cgo
msvc_libinit_windows.c
msvc_libinit_windows.c(133): error C2220: warning treated as error - no 'object' file generated
msvc_libinit_windows.c(133): warning C4710: 'int fprintf(FILE *const ,const char *const ,...)': function not inlined
C:\Program Files (x86)\Windows Kits\10\include\10.0.15063.0\ucrt\stdio.h(826): note: see declaration of 'fprintf'
go tool dist: FAILED: go install -gcflags=all= -ldflags=all= std cmd: exit status 2

c:\Users\Alex\dev\go\src>

рдПрд▓реЗрдХреНрд╕

рдореИрдВ рдХрд▓ рд░рд╛рдд рдЗрд╕реЗ рдкреБрди: рдкреЗрд╢ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рдерд╛ рдФрд░ рдореИрдВ рдЕрд╕рдорд░реНрде рдерд╛ред рдореИрдВ рд╕реЛрдЪ рд░рд╣рд╛ рд╣реВрдВ рдХрд┐ рдХреНрдпрд╛ рдЖрдк рдЗрд╕рдХрд╛ рдЕрдиреБрднрд╡ рдХрд░ рд░рд╣реЗ рд╣реИрдВ: https://developercommunity.visualstudio.com/content/problem/35734/c-cannot-disable-specific-warnings-with-pragmas-wh.html

рдХреНрдпрд╛ рдЖрдкрдХреЗ рд▓рд┐рдП рдирд╡реАрдирддрдо рдПрд╕рдбреАрдХреЗ рдФрд░ рдмрд┐рд▓реНрдб рдЯреВрд▓реНрд╕ рдореЗрдВ рдЕрдкрдбреЗрдЯ рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИ? рдореИрдВ рдПрд╕рдбреАрдХреЗ 10.0.17763.0 рдкрд░ рд╣реВрдВред рдФрд░ рдмрд┐рд▓реНрдб рдЯреВрд▓реНрд╕/рдбреЗрд╡реЗрдирд╡ рдХрд╛ рд╕рдВрд╕реНрдХрд░рдг 15.9.28307.222

рдореИрдВ рдПрдордПрд╕рд╡реАрд╕реА рдХреЗ рд╕рд╛рде рдПрдХ рд╡рд┐рдВрдбреЛрдЬ рдбреАрдПрд▓рдПрд▓ рдмрдирд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЧреЛ 65535 (рдпрд╛ рд╕рдВрдЦреНрдпрд╛ рдирд╣реАрдВ) рд╕реЗ рдЕрдзрд┐рдХ рд╕рдВрдЦреНрдпрд╛ рдХреЗ рд╕рд╛рде рдХреБрдЫ рдЪреЗрддрд╛рд╡рдиреА рдХреЛ рдЕрдХреНрд╖рдо рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕рд╕реЗ рдПрдордПрд╕рд╡реАрд╕реА рдмрдВрдж рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред

image

рдирд╣реАрдВ. Werror рд╣рд░ рдЪреЗрддрд╛рд╡рдиреА рдХреЛ рдПрдХ рддреНрд░реБрдЯрд┐ рдорд╛рдирдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ GCC рд╡рд┐рдХрд▓реНрдк рд╣реИ.

рдПрдордПрд╕рд╡реАрд╕реА рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ WX рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред

@pravic рдЕрдЪреНрдЫрд╛ рдмрд┐рдВрджреБ, рдореИрдВ рдпрд╣ рдХреИрд╕реЗ рдХрд░реВрдБрдЧрд╛? рдореИрдВ рдЗрд╕реЗ рд╕реЗрдЯ рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рдореИрдВ рдмрд╕ рдЗрддрдирд╛ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ:

set CC=cl.exe
go build -o next.dll .\main.go

@galich рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдореИрдВ рдорджрдж рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рдХреНрдпреЛрдВрдХрд┐ рдореИрдВ

рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЗрд╕ рдзрд╛рдЧреЗ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдкреИрдЪ рдХрд╣рд╛рдВ рд╣реИрдВ? рдЧреБрд░реБ рдореЗрдВ рдпрд╛ рдХрд╣реАрдВ рдФрд░?

@pravic рдЖрдк рдпрд╣рд╛рдВ рдмрджрд▓рд╛рд╡ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ: https://go-review.googlesource.com/c/go/+/133946/5

@mxplusb рд▓рд┐рдВрдХ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж, рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐/Werror рдХреЗ рд╕рд╛рде рдореЗрд░рд╛ рд╡рд┐рд╢реЗрд╖ рдореБрджреНрджрд╛ рд╡рд╣рд╛рдВ рд╣рд▓ рд╣реЛ рдЧрдпрд╛ рд╣реИред
рдХреНрдпрд╛ рдЖрдк рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рдмреАрдЯрд╛/рд░рд╛рдд/рд╕реНрдерд┐рд░ рдореЗрдВ рдХрдм рдЖ рд░рд╣рд╛ рд╣реИ?

рдХреНрдпрд╛ рдЖрдкрдХреЗ рд▓рд┐рдП рдирд╡реАрдирддрдо рдПрд╕рдбреАрдХреЗ рдФрд░ рдмрд┐рд▓реНрдб рдЯреВрд▓реНрд╕ рдореЗрдВ рдЕрдкрдбреЗрдЯ рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИ? рдореИрдВ рдПрд╕рдбреАрдХреЗ 10.0.17763.0 рдкрд░ рд╣реВрдВред рдФрд░ рдмрд┐рд▓реНрдб рдЯреВрд▓реНрд╕/рдбреЗрд╡реЗрдирд╡ рдХрд╛ рд╕рдВрд╕реНрдХрд░рдг 15.9.28307.222

@ccamplin рдЕрдВрдд рдореЗрдВ рдореИрдВ рдЕрдкрдиреЗ MSVC рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рдореЗрдВ рдХрд╛рдордпрд╛рдм рд░рд╣рд╛ред рдЕрдм рдореЗрд░реЗ рдкрд╛рд╕ рд╣реИ

c:\Users\Alex\dev\go\src>%GOVSVARSPATH%
**********************************************************************
** Visual Studio 2017 Developer Command Prompt v15.0
** Copyright (c) 2017 Microsoft Corporation
**********************************************************************
[vcvarsall.bat] Environment initialized for: 'x64'

c:\Users\Alex\dev\go\src>cl
Microsoft (R) C/C++ Optimizing Compiler Version 19.16.27030.1 for x64
Copyright (C) Microsoft Corporation.  All rights reserved.

usage: cl [ option... ] filename... [ /link linkoption... ]

c:\Users\Alex\dev\go\src>

рдореИрдВрдиреЗ рдЗрд╕ рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рдлрд┐рд░ рд╕реЗ рдХреЛрд╢рд┐рд╢ рдХреА

commit 6741b7009d1894b5bf535d82ad46f4a379651670 (HEAD)
Author: Caleb Champlin <[email protected]>
Date:   Sat Sep 8 00:26:32 2018 -0600

    cmd/compile: add support for MSVC toolchain to go build

    Allows building with MSVC as an external compiler/linker.

    Setting CC=cl.exe inside an MSVC environment will automatically
    build cgo executables using MSVC as the external compiler and
    linker.

    For the builders setting the environment variable GOVSVARSPATH
    to the location of a msvsvars.bat file and setting the
    environment variable GOTESTMSVC=1 will automatically cause
    all.bat to run tests and compiler with both gcc and MSVC.

    Updates #20982

    Change-Id: I44be1f43aa0d53a688c595bc8336e0364b809ced

рдФрд░ all.bat рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдкреВрд░рд╛ рд╣реЛрддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдпреЗ рдЪреЗрддрд╛рд╡рдирд┐рдпрд╛рдВ рдорд┐рд▓рддреА рд╣реИрдВред

##### ../misc/cgo/stdio

##### ../misc/cgo/life

##### ../misc/cgo/test
# _/c_/Users/Alex/dev/go/misc/cgo/test
issue28896.cgo2.c
.\issue28896.go(30): warning C4820: '<anonymous-tag>': '4' bytes padding added after data member 'g1'
.\issue28896.go(36): warning C4820: '<anonymous-tag>': '4' bytes padding added after data member 'f2'
# _/c_/Users/Alex/dev/go/misc/cgo/test
cthread_windows.c
c:\users\alex\dev\go\misc\cgo\test\cthread_windows.c(39) : warning C5045: Compiler will insert Spectre mitigation for memory load if /Qspectre switch specified
c:\users\alex\dev\go\misc\cgo\test\cthread_windows.c(37) : note: index 'i' range checked by comparison on this line
c:\users\alex\dev\go\misc\cgo\test\cthread_windows.c(39) : note: feeds call on this line
PASS
scatter = 00007FF670706000
hello from C
sqrt is: 0
ok      _/c_/Users/Alex/dev/go/misc/cgo/test    3.534s
# _/c_/Users/Alex/dev/go/misc/cgo/test
issue28896.cgo2.c
.\issue28896.go(30): warning C4820: '<anonymous-tag>': '4' bytes padding added after data member 'g1'
.\issue28896.go(36): warning C4820: '<anonymous-tag>': '4' bytes padding added after data member 'f2'
# _/c_/Users/Alex/dev/go/misc/cgo/test
cthread_windows.c
c:\users\alex\dev\go\misc\cgo\test\cthread_windows.c(39) : warning C5045: Compiler will insert Spectre mitigation for memory load if /Qspectre switch specified
c:\users\alex\dev\go\misc\cgo\test\cthread_windows.c(37) : note: index 'i' range checked by comparison on this line
c:\users\alex\dev\go\misc\cgo\test\cthread_windows.c(39) : note: feeds call on this line
PASS
scatter = 00007FF7DD026000
hello from C
sqrt is: 0
ok      _/c_/Users/Alex/dev/go/misc/cgo/test    3.229s
# _/c_/Users/Alex/dev/go/misc/cgo/test
issue28896.cgo2.c
.\issue28896.go(30): warning C4820: '<anonymous-tag>': '4' bytes padding added after data member 'g1'
.\issue28896.go(36): warning C4820: '<anonymous-tag>': '4' bytes padding added after data member 'f2'
# _/c_/Users/Alex/dev/go/misc/cgo/test
cthread_windows.c
c:\users\alex\dev\go\misc\cgo\test\cthread_windows.c(39) : warning C5045: Compiler will insert Spectre mitigation for memory load if /Qspectre switch specified
c:\users\alex\dev\go\misc\cgo\test\cthread_windows.c(37) : note: index 'i' range checked by comparison on this line
c:\users\alex\dev\go\misc\cgo\test\cthread_windows.c(39) : note: feeds call on this line
PASS
scatter = 00007FF655CF6000
hello from C
sqrt is: 0
ok      _/c_/Users/Alex/dev/go/misc/cgo/test    3.172s

##### ../test/bench/go1
testing: warning: no tests to run
PASS
ok      _/c_/Users/Alex/dev/go/test/bench/go1   3.178s

##### ../test

##### API check
+pkg go/build, type Context struct, CompilerType string
+pkg go/build, type Package struct, CgoMSCFLAGS []string
+pkg go/build, type Package struct, CgoMSCPPFLAGS []string
+pkg go/build, type Package struct, CgoMSCXXFLAGS []string
+pkg go/build, type Package struct, CgoMSLDFLAGS []string
+pkg os, method (*File) SyscallConn() (syscall.RawConn, error)

ALL TESTS PASSED

---
Installed Go for windows/amd64 in c:\Users\Alex\dev\go
Installed commands in c:\Users\Alex\dev\go\bin
*** You need to add c:\Users\Alex\dev\go\bin to your PATH.

c:\Users\Alex\dev\go\src>

рдФрд░ рдореИрдВрдиреЗ рдпрд╣ рднреА рджреЗрдЦрд╛ рдХрд┐ рдЖрдк рд╕рднреА рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЛ рджреЛ рдмрд╛рд░ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рддреЗ рд╣реИрдВред

...
##### API check
+pkg go/build, type Context struct, CompilerType string
+pkg go/build, type Package struct, CgoMSCFLAGS []string
+pkg go/build, type Package struct, CgoMSCPPFLAGS []string
+pkg go/build, type Package struct, CgoMSCXXFLAGS []string
+pkg go/build, type Package struct, CgoMSLDFLAGS []string
+pkg os, method (*File) SyscallConn() (syscall.RawConn, error)

ALL TESTS PASSED

**********************************************************************
** Visual Studio 2017 Developer Command Prompt v15.0
** Copyright (c) 2017 Microsoft Corporation
**********************************************************************
[vcvarsall.bat] Environment initialized for: 'x64'


##### Testing packages.
ok      archive/tar     0.256s
ok      archive/zip     2.070s
ok      bufio   (cached)
ok      bytes   1.624s
ok      compress/bzip2  (cached)
ok      compress/flate  1.067s
...

рдХреНрдпреЛрдВ?

рдПрд▓реЗрдХреНрд╕

@alexbrainman рдЗрди рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЗ рд▓рд┐рдП рдЪреЗрддрд╛рд╡рдирд┐рдпреЛрдВ рдХреЛ рджрдмрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЦрд╛рд╕рдХрд░ рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рд╕реНрдкреЗрдХреНрдЯрд░ рдЪреЗрддрд╛рд╡рдирд┐рдпрд╛рдВред

рджреЛ рдмрд╛рд░ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЗ рд▓рд┐рдП, рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛтАЛтАЛрд╣реИ рдХрд┐ рдпрд╣ рдмрд┐рд▓реНрдбрд░ рдХреЗ рд▓рд┐рдП рдЗрд╕ рддрд░рд╣ рд╕реЗ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдПрдХ рдмрд╛рд░ рдЬреАрд╕реАрд╕реА рд╕рдВрдХрд▓рди рдХреЗ рд╕рд╛рде рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЪрд▓рд╛рдПрдВ, рдлрд┐рд░ рджреЛрдиреЛрдВ рдЯреВрд▓рдЪреЗрди рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд╕рд╛рде рд╕рдВрдХрд▓рди рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдордПрд╕рд╡реАрд╕реА (рдЬрдм рд╕рдХреНрд╖рдо рд╣реЛ) рдХреЗ рд╕рд╛рде рдлрд┐рд░ рд╕реЗ рдЪрд▓рд╛рдПрдВред рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдпрд╣рд╛рдВ рдХреНрдпрд╛ рд╡рд╛рдВрдЫрд┐рдд рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореИрдВ рдЗрд╕реЗ рдмрджрд▓ рд╕рдХрддрд╛ рд╣реВрдВ рддрд╛рдХрд┐ рдЬрдм рдПрдордПрд╕рд╡реАрд╕реА рд╕рдХреНрд╖рдо рдХреЗ рд╕рд╛рде all.bat рдХреЛ рдХреЙрд▓ рдХрд┐рдпрд╛ рдЬрд╛рдП рддреЛ рд╣рдо рдХреЗрд╡рд▓ рдПрдордПрд╕рд╡реАрд╕реА рдХреЗ рд╕рд╛рде рдкрд░реАрдХреНрд╖рдг рдЪрд▓рд╛рддреЗ рд╣реИрдВ, рдореБрдЭреЗ рдмрддрд╛рдПрдВред рдЙрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЕрддрд┐рд░рд┐рдХреНрдд рдмрд┐рд▓реНрдбрд░реЛрдВ рдХреЛ рдХреЗрд╡рд▓ рдПрдордПрд╕рд╡реАрд╕реА рдХреЗ рд▓рд┐рдП рдЬреЛрдбрд╝рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА, рдХреНрдпреЛрдВрдХрд┐ рдХреБрдЫ рдмрд┐рд▓реНрдбрд░реНрд╕ рдПрдордПрд╕рд╡реАрд╕реА рдХреЗ рд╕рд╛рде рднреА рдирд┐рд░реНрдорд╛рдг рдХрд░ рд░рд╣реЗ рд╣реИрдВ?

рд╕рд╣рдордд рд╣реИрдВ рдХрд┐ рд╡рд┐рдВрдбреЛрдЬрд╝ рдкрд░ рджреЛрдиреЛрдВ рдкрд░рд┐рджреГрд╢реНрдпреЛрдВ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдирд┐рд░реНрдорд╛рддрд╛ рдХреЛ рдорд┐рдиреАрдЬреАрдбрдмреНрд▓реНрдпреВ-рдбрдмреНрд▓реНрдпреВ 64 рдЯреВрд▓рдЪреЗрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдФрд░ рджреВрд╕рд░реЗ рдХреЛ рдПрдордПрд╕рд╡реАрд╕реА рдЯреВрд▓рдЪреЗрди рдХреЗ рд╕рд╛рде рдЪрд▓рд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред

рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛтАЛтАЛрд╣реИ рдХрд┐ рдпрд╣ рдмрд┐рд▓реНрдбрд░ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдПрдХ рдмрд╛рд░ рдЬреАрд╕реАрд╕реА рд╕рдВрдХрд▓рди рдХреЗ рд╕рд╛рде рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЪрд▓рд╛рдПрдВ, рдлрд┐рд░ рджреЛрдиреЛрдВ рдЯреВрд▓рдЪреЗрди рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд╕рд╛рде рд╕рдВрдХрд▓рди рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдордПрд╕рд╡реАрд╕реА (рдЬрдм рд╕рдХреНрд╖рдо рд╣реЛ) рдХреЗ рд╕рд╛рде рдлрд┐рд░ рд╕реЗ рдЪрд▓рд╛рдПрдВред

рдореИрдВ рдорд╛рдирддрд╛ рд╣реВрдВ рдХрд┐ рдпрд╣ рдкрд╕рдВрджреАрджрд╛ рд╡реНрдпрд╡рд╣рд╛рд░ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдЗрд╕рд▓рд┐рдП рдЗрд╕ рдмрд╛рдд рдХреА рдЧрд╛рд░рдВрдЯреА рд╣реИ рдХрд┐ рдпрд╣ рдореМрдЬреВрджрд╛ рд╡рд░реНрдХрд▓реЛрдб рдХреЛ рдирд╣реАрдВ рддреЛрдбрд╝рддрд╛ рд╣реИ рдпрджрд┐ рджреЛрдиреЛрдВ рдЯреВрд▓рдЪреЗрди рдореМрдЬреВрдж рд╣реИрдВред

рдЗрди рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЗ рд▓рд┐рдП рдЪреЗрддрд╛рд╡рдирд┐рдпреЛрдВ рдХреЛ рджрдмрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЦрд╛рд╕рдХрд░ рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рд╕реНрдкреЗрдХреНрдЯрд░ рдЪреЗрддрд╛рд╡рдирд┐рдпрд╛рдВред

рдЧреЛ рдХрдорд╛рдВрдб рдЪреЗрддрд╛рд╡рдирд┐рдпрд╛рдВ рдкреНрд░рджрд░реНрд╢рд┐рдд рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЪреЗрддрд╛рд╡рдирд┐рдпрд╛рдВ рдкреНрд░рджрд░реНрд╢рд┐рдд рдирд╣реАрдВ рдХреА рдЬрд╛рдиреА рдЪрд╛рд╣рд┐рдПред

рд╕рд╛рде рд╣реА рдореИрдВрдиреЗ рджреЗрдЦрд╛ рдХрд┐ go env рдХрдорд╛рдВрдб CC_FOR_CGO рдЪрд░ рдкреНрд░рджрд░реНрд╢рд┐рдд рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдпрджрд┐ CC_FOR_CGO рдЧреЛ рдмрд┐рд▓реНрдб рдХреЗ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рддрд░реАрдХреЗ рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░рддрд╛ рд╣реИ, рддреЛ CC_FOR_CGO рдХреЛ рдЕрдиреНрдп рдХреЗ рд╕рд╛рде рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдХреНрдпрд╛ рд╣рдореЗрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ CC_FOR_CGO рдЪрд░ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ? CC_FOR_CGO=gcc рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдФрд░ рдХреНрдпрд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ?

рджреЛ рдмрд╛рд░ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЗ рд▓рд┐рдП, рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛтАЛтАЛрд╣реИ рдХрд┐ рдпрд╣ рдмрд┐рд▓реНрдбрд░ рдХреЗ рд▓рд┐рдП рдЗрд╕ рддрд░рд╣ рд╕реЗ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдПрдХ рдмрд╛рд░ рдЬреАрд╕реАрд╕реА рд╕рдВрдХрд▓рди рдХреЗ рд╕рд╛рде рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЪрд▓рд╛рдПрдВ, рдлрд┐рд░ рджреЛрдиреЛрдВ рдЯреВрд▓рдЪреЗрди рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд╕рд╛рде рд╕рдВрдХрд▓рди рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдордПрд╕рд╡реАрд╕реА (рдЬрдм рд╕рдХреНрд╖рдо рд╣реЛ) рдХреЗ рд╕рд╛рде рдлрд┐рд░ рд╕реЗ рдЪрд▓рд╛рдПрдВред

рдмрд╣реБрдд рд╕рд╛рд░реЗ рдкрд░реАрдХреНрд╖рдг gcc рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВред рдпрд╣ рд▓реЛрдЧреЛрдВ/рдХрдВрдкреНрдпреВрдЯрд░ рдХреЗ рд╕рдордп рдХреА рдмрд░реНрдмрд╛рджреА рд╣реИ рдЬрдм рдмрд┐рдирд╛ рдХрд┐рд╕реА рдХрд╛рд░рдг рдХреЗ рдкреИрдХреЗрдЬ рдкрд░реАрдХреНрд╖рдг рджреЛ рдмрд╛рд░ рдЪрд▓рддреЗ рд╣реИрдВред рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк https://github.com/golang/go/issues/20982#issuecomment рд╕реЗ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ -480569880 archive/zip рдкреИрдХреЗрдЬ рдкрд░реАрдХреНрд╖рдг рджреЛ рдмрд╛рд░ рдЪрд▓рд╛рдП рдЧрдП - рдореБрдЭреЗ рджреВрд╕рд░реЗ рд░рди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рджрд┐рдЦ рд░рд╣реА рд╣реИред

рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЗрд╕реЗ рдХреИрд╕реЗ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдП, рд▓реЗрдХрд┐рди рд╢рд╛рдпрдж рдЖрдкрдХреЛ MSVC рдмрд┐рд▓реНрдб рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХрд╛ рдЪрдпрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП run.bat рдореЗрдВ рдЕрдкрдиреА go tool dist test рдХреА рдХреЙрд▓ рдХреЛ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, go tool dist test -h рджреЗрдЦреЗрдВ рдХрд┐ рдЖрдк рдХреБрдЫ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХрд╛ рдЪрдпрди рдХреИрд╕реЗ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред @bradfitz рд╢рд╛рдпрдж рд╣рдо рдХреБрдЫ рдзреНрд╡рдЬ рдпрд╛ рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ

рд▓реЗрдХрд┐рди рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░ рдЖрдкрдХрд╛ https://go-review.googlesource.com/c/go/+/133946/5 рдореЗрд░реЗ рд▓рд┐рдП рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рдмрдирд╛ рд░рд╣рд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдореИрдВ рдЬреАрд╕реАрд╕реА рдХреЗ рд╕рд╛рде рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рдмрдирд╛ рд╕рдХрддрд╛ рд╣реВрдВ:

c:\Users\Alex\dev\src\issue\go\20982\hello>type *

hello.c


#include <stdio.h>

extern void hello()
{
    printf("Hello World from C");
}

hello.go


package main

/*
        extern void hello();
*/
import "C"
import "fmt"

func main() {
    fmt.Println("Hello from Go!")
        C.hello()
}

c:\Users\Alex\dev\src\issue\go\20982\hello>go build

c:\Users\Alex\dev\src\issue\go\20982\hello>hello
Hello from Go!
Hello World from C
c:\Users\Alex\dev\src\issue\go\20982\hello>

рдФрд░ рдлрд┐рд░ рдореИрдВ рдПрдордПрд╕рд╡реАрд╕реА рдХреЗ рд╕рд╛рде рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рдмрдирд╛ рд╕рдХрддрд╛ рд╣реВрдВ

c:\Users\Alex\dev\src\issue\go\20982\hello>%GOVSVARSPATH%
**********************************************************************
** Visual Studio 2017 Developer Command Prompt v15.0
** Copyright (c) 2017 Microsoft Corporation
**********************************************************************
[vcvarsall.bat] Environment initialized for: 'x64'

c:\Users\Alex\dev\src\issue\go\20982\hello>set CC=cl

c:\Users\Alex\dev\src\issue\go\20982\hello>go build
# issue/go/20982/hello
hello.c
C:\Program Files (x86)\Windows Kits\10\include\10.0.17763.0\ucrt\stdio.h(948): warning C4710: 'int printf(const char *const ,...)': function not inlined
C:\Program Files (x86)\Windows Kits\10\include\10.0.17763.0\ucrt\stdio.h(948): note: see declaration of 'printf'

c:\Users\Alex\dev\src\issue\go\20982\hello>hello
Hello from Go!
Hello World from C
c:\Users\Alex\dev\src\issue\go\20982\hello>

рддреЛ рдПрдордПрд╕рд╡реАрд╕реА рдХреЗ рд╕рд╛рде рдирд┐рд░реНрдорд╛рдг рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рд╕рднреА рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░ рд╕реЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдордПрд╕ рдмреИрдЪ рдлрд╝рд╛рдЗрд▓ рдЪрд▓рд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА (рдореЗрд░реЗ рдЖрдЙрдЯрдкреБрдЯ рдореЗрдВ GOVSVARSPATH рджреЗрдЦреЗрдВ) - рдФрд░, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ, рдорд╛рдирдХ рдФрд░ рдЗрд╕рдХрд╛ рдЧреЛ рд╕реЗ рдХреЛрдИ рд▓реЗрдирд╛-рджреЗрдирд╛ рдирд╣реАрдВ рд╣реИред рдФрд░ set CC=cl ред рдХрд╛рдлреА рд╕рд░рд▓ред

рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЗ рд╕рд╛рде рдореБрдЭреЗ рдЬреЛ рдПрдХрдорд╛рддреНрд░ рд╕рдорд╕реНрдпрд╛ рджрд┐рдЦрд╛рдИ рджреЗ рд░рд╣реА рд╣реИ рд╡рд╣ рдпрд╣ рд╣реИ рдХрд┐ рдПрдордПрд╕рд╡реАрд╕реА рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рдЕрднреА рднреА рдЬреАрд╕реАрд╕реА рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред рд╕рднреА рд╕реА рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЛ рдЦреЛрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рд╕реАрдПрдордбреА/рд╕реАрдЬреАрдУ рджреНрд╡рд╛рд░рд╛ рдЬреАрд╕реАрд╕реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ - рдпрд╣ рд╣рд┐рд╕реНрд╕рд╛ рдПрдордПрд╕рд╡реАрд╕реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдЕрд╕рд╛рдорд╛рдиреНрдп рд▓рдЧрддрд╛ рд╣реИ рдЬреЛ рдирд╣реАрдВ рдЬрд╛рдирддреЗ рдХрд┐ cmd/cgo рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рд╡рд╣реА рд╣реИ рдЬреЛ рдпрд╣ рд╣реИред

@ianlancetaylor рдФрд░ @bradfitz рдХреНрдпрд╛ рдЗрд╕реЗ рдЖрдЧреЗ рдмрдврд╝рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдпрд╣ рд╕рдм рдЙрдЪрд┐рдд рд▓рдЧрддрд╛ рд╣реИ? рдХреНрдпрд╛ рд╣рдореЗрдВ рдЗрд╕реЗ go1.13 рдореЗрдВ рдЙрдкрд▓рдмреНрдз рдХрд░рд╛рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП?

рдЬрд┐рди рдмрд┐рд▓реНрдбрд░реНрд╕ рдХреЗ рдкрд╛рд╕ MSVC рдкрд╣рд▓реЗ рд╕реЗ рдЗрдВрд╕реНрдЯреЙрд▓ рд╣реИ, рд╡реЗ рд╕рднреА рдирдП рдХреЛрдб рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЕрдиреНрдп рдмрд┐рд▓реНрдбрд░реНрд╕ рд╕рд┐рд░реНрдл рдкрд░реАрдХреНрд╖рдг рдЫреЛрдбрд╝ рджреЗрдВрдЧреЗред

рдПрд▓реЗрдХреНрд╕

рд╕рднреА рд╕реА рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЛ рдЦреЛрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рд╕реАрдПрдордбреА/рд╕реАрдЬреАрдУ рджреНрд╡рд╛рд░рд╛ рдЬреАрд╕реАрд╕реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ - рдпрд╣ рд╣рд┐рд╕реНрд╕рд╛ рдПрдордПрд╕рд╡реАрд╕реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рдЙрд╕ рдкрд░ рдХреИрд╕реЗ рдХрд╛рдмреВ рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ? рдЖрджрд░реНрд╢ рд░реВрдк рд╕реЗ рдпрд╣ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ рдпрджрд┐ рдЬреАрд╕реАрд╕реА рдХреА рдХреЛрдИ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рдХреЗрд╡рд▓ рдПрдордПрд╕рд╡реАрд╕реАред

рдЙрд╕ рдкрд░ рдХреИрд╕реЗ рдХрд╛рдмреВ рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ?

cmd/cgo рдХреЗ рднрд╛рдЧ рдЬреЛ gcc рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ рдЙрдиреНрд╣реЗрдВ MSVC рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрдирд╛ рд╣реЛрдЧрд╛ред рдЕрдЧрд░ рдпреЗ рд╕рдореНрднрд╡ рд╣реЛред

рдПрд▓реЗрдХреНрд╕

рдореИрдВ рд╕реЛрдЪ рд░рд╣рд╛ рдерд╛ рдХрд┐ рдХреНрдпрд╛ рдпрд╣ рд╕реБрд╡рд┐рдзрд╛ рдЗрд╕реЗ рдЙрддреНрдкрд╛рджрди рдореЗрдВ рд▓рд╛рдиреЗ рдХреЗ рдХрд░реАрдм рд╣реИ? рдореИрдВ рджреЗрдЦрддрд╛ рд╣реВрдВ рдХрд┐ рдЗрд╕реЗ 1.13 рдХреЗ рд▓рд┐рдП рдЯреИрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдФрд░ рд╡рд╣ рдЕрднреА рдирд┐рдХрд▓рд╛ред рдореИрдВ рдЧреЛ рд╕реА-рдЖрд░реНрдХрд╛рдЗрд╡ рдмрд┐рд▓реНрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкрд╛рдпрдерди рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдмрдирд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдЬреЛ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХреЛрдб рд╕реЗ рдЬреБрдбрд╝рд╛ рд╣реБрдЖ рд╣реИ, рд▓реЗрдХрд┐рди рдкрд╛рдпрдерди рдХреЛ рдПрдордПрд╕рд╡реАрд╕реА рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рдЗрд╕ рдореБрджреНрджреЗ рдХреА рд╕реНрдерд┐рддрд┐ рдХреНрдпрд╛ рд╣реИред рдЗрд╕реЗ рд░рд┐рд▓реАрдЬ рд╕реЗ рд░рд┐рд▓реАрдЬ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдЧреЗ рдмрдврд╝рд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореИрдВ рдЗрд╕реЗ рдЕрдирд┐рдпреЛрдЬрд┐рдд рдХрд░рдиреЗ рдЬрд╛ рд░рд╣рд╛ рд╣реВрдВред рдЕрдЧрд░ рдпрд╣ 1.14 рдореЗрдВ рдЖрддрд╛ рд╣реИ, рддреЛ рдмрдврд╝рд┐рдпрд╛ред

рдбрдмрд▓-рдХрдВрдкрд╛рдЗрд▓рд░ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЗ рд╕рд╛рде рднреА, рдореБрдЭреЗ рд╡рд░реНрддрдорд╛рди рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛ рдЕрдЧрд▓реА рд░рд┐рд▓реАрдЬ рдореЗрдВ рджреЗрдЦрдирд╛ рдЕрдЪреНрдЫрд╛ рд▓рдЧреЗрдЧрд╛ред рдпрд╣ рдХрдо рд╕реЗ рдХрдо рдПрдордПрд╕рд╡реАрд╕реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп/рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЛ рд╕рдВрдХрд▓рд┐рдд рдХрд░рдирд╛ рд╕рдВрднрд╡ рдмрдирд╛рддрд╛ рд╣реИ, рдЬреЛ рдХреБрдЫ рднреА рдирд╣реАрдВ рд╕реЗ рдмреЗрд╣рддрд░ рд╣реИред

рдбрдмрд▓-рдХрдВрдкрд╛рдЗрд▓рд░ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЗ рд╕рд╛рде рднреА, рдореБрдЭреЗ рд╡рд░реНрддрдорд╛рди рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛ рдЕрдЧрд▓реА рд░рд┐рд▓реАрдЬ рдореЗрдВ рджреЗрдЦрдирд╛ рдЕрдЪреНрдЫрд╛ рд▓рдЧреЗрдЧрд╛ред

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдПрдХ рдЕрдЪреНрдЫрд╛ "рдмреАрдЯрд╛" рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╣реЛрдЧрд╛ред рдпрд╣ рдмрдЧ рдХреЛ рдмрд╛рд╣рд░ рдирд┐рдХрд╛рд▓рдиреЗ рдФрд░ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛ рдкрд░рд┐рдкрдХреНрд╡ рд╣реЛрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдЧрд╛ред рдЧрдВрднреАрд░ рд╕рдореАрдХреНрд╖рд╛ рд╕реЗ рдЧреБрдЬрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдФрд░ рдХреНрдпрд╛ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдмрд╛рдХреА рд╣реИ?

рдЗрд╕рд▓рд┐рдП рдореЗрд░реЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕реЗ рдФрд░ рдкрд┐рдЫрд▓реА рдмрд╛рд░ рдЬрдм рдореИрдВрдиреЗ рдЗрд╕реЗ рджреЗрдЦрд╛ рдерд╛ (~ 6 рдорд╣реАрдиреЗ рдкрд╣рд▓реЗ) рд╕реЗ рдореИрдВ рдХреНрдпрд╛ рдпрд╛рдж рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ, рд╡рд╣рд╛рдВ рдПрдХ рджрд░реНрдЬрди рдпрд╛ рдЗрддрдиреЗ рд╣реА рд╕рдлрд╛рдИ рдЖрдЗрдЯрдо рдереЗ рдЬрд┐рдиреНрд╣реЗрдВ рдХреЛрдб рд╕рдореАрдХреНрд╖рд╛ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рд▓рд┐рдП рдкреВрд░рд╛ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдереАред рдХреБрдЫ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЛ рдХрдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрддрд┐рд░рд┐рдХреНрдд рдХрд╛рдо рдХреА рднреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛ рд╕рдХрддреА рд╣реИ рдЬрд┐рдиреНрд╣реЗрдВ рдореВрд▓ рд░реВрдк рд╕реЗ рдПрдХ рдЕрд▓рдЧ рдЯреВрд▓рдЪреЗрди рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдорд╛рдореВрд▓реА рд╕рдВрд╢реЛрдзрдиреЛрдВ рдХреЗ рд╕рд╛рде рдХреЙрдкреА рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдХреБрдЫ рдПрдордПрд╕рд╡реАрд╕реА рдЪреЗрддрд╛рд╡рдирд┐рдпреЛрдВ рдХреА рд╕рдореАрдХреНрд╖рд╛ рдХрд░рдиреЗ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдмрдВрдж рдХрд░рдиреЗ рдХреА рднреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

рдкреНрд░рдореБрдЦ рдмрдХрд╛рдпрд╛ рдореБрджреНрджреЛрдВ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ:

рд╣рдо рдЬреАрд╕реАрд╕реА рдХреЗ рдмрд┐рдирд╛ рдЯрд╛рдЗрдк рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЗрд╕рдХрд╛ рдХреЛрдИ рдЖрд╕рд╛рди рдпрд╛ рддрддреНрдХрд╛рд▓ рд╕рдорд╛рдзрд╛рди рдирд╣реАрдВ рд╣реИред

рд╕реЗрдЯрдЕрдк рдХреЛ рдЕрдВрддрд┐рдо рд░реВрдк рджреЗрдирд╛ рдФрд░ рдмрд┐рд▓реНрдбрд░реЛрдВ рдХреЗ рд▓рд┐рдП рд╕рдм рдХреБрдЫ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рд╣реИред

рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛтАЛтАЛрд╣реИ рдХрд┐ рдкрд┐рдЫрд▓реЗ 6 рдорд╣реАрдиреЛрдВ рдореЗрдВ рдХрдВрдкрд╛рдЗрд▓рд░ рдФрд░ рд▓рд┐рдВрдХрд░ рдореЗрдВ рдХреБрдЫ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрджрд▓рд╛рд╡ рд╣реБрдП рд╣реИрдВ рдЬреЛ рдЗрд╕рдХреЗ рд▓рд┐рдП рдХрд┐рдП рдЧрдП рд╡рд░реНрддрдорд╛рди рдХрд╛рд░реНрдп рдХреЛ рдЧрдВрднреАрд░ рд░реВрдк рд╕реЗ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдореИрдВ рдЗрд╕рдХреА рдкреБрд╖реНрдЯрд┐ рдирд╣реАрдВ рдХрд░ рдкрд╛рдпрд╛ рд╣реВрдВред рдЧреЛ рдХреЗ рдХрдВрдкрд╛рдЗрд▓рд░/рд▓рд┐рдВрдХрд░/рдЯреВрд▓рдЪреЗрди рдХреЛ рдиреЗрд╡рд┐рдЧреЗрдЯ рдХрд░рдиреЗ рдХреЗ рдЖрд╕рдкрд╛рд╕ рдХреА рдЬрдЯрд┐рд▓рддрд╛ рдФрд░ рдЙрдЪреНрдЪ рд╕реАрдЦрдиреЗ рдХреА рдЕрд╡рд╕реНрдерд╛ рдХреЗ рдХрд╛рд░рдг рдореБрдЭреЗ рдЗрд╕ рдХрд╛рдо рдХреЗ рд╢рд░реАрд░ рдкрд░ рдХрд┐рд╕реА рднреА рдмрджрд▓рд╛рд╡ рдХреЗ рдкреНрд░рднрд╛рд╡ рдХреЛ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рдЧрддрд┐ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдореЗрдВ рдХрд╛рдлреА рд╕рдордп рд▓рдЧ рд╕рдХрддрд╛ рд╣реИред

рдЬрдЯрд┐рд▓ рд╕рдВрдЦреНрдпрд╛рддреНрдордХ рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рд╕рдорд░реНрдерди рдирд╣реАрдВ рд╣реИред MSCVs C lib рдмрд╕ рдЕрд╕рдВрдЧрдд рд╣реИред рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛтАЛтАЛрд╣реИ рдХрд┐ рд╕реА ++ рдХреЗ рд╕рд╛рде рдЗрд╕реЗ рдХрдо рдХрд░рдиреЗ рдХрд╛ рдПрдХ рддрд░реАрдХрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореИрдВ рдЕрдирд┐рд╢реНрдЪрд┐рдд рд╣реВрдВ, рд╢рд╛рдпрдж рдПрдордПрд╕рд╡реАрд╕реА рдЯреВрд▓ рдЪреЗрди рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рдПрдордПрд╕ рд╕реЗ рдХреЛрдИ рд╡реНрдпрдХреНрддрд┐ рдЗрд╕рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред

рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ рдЬреАрд╡рди рдФрд░ рдЕрдиреНрдп рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдиреЗ рдореБрдЭреЗ рдЗрд╕рдХреЗ рд▓рд┐рдП рдЕрдзрд┐рдХ рд╕рдордп рджреЗрдиреЗ рдХреЗ рд░рд╛рд╕реНрддреЗ рдореЗрдВ рдмрд╣реБрдд рднрд╛рд░реА рдкрдбрд╝ рдЧрдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореИрдВ рдЖрдиреЗ рд╡рд╛рд▓реЗ рд╣рдлреНрддреЛрдВ рдореЗрдВ рдЗрд╕ рдкрд░ рдХреБрдЫ рд╕рдордп рдмрд┐рддрд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реВрдВрдЧрд╛ред

@manbearian рдпрд╣ рдореБрджреНрджрд╛

@kesmit13 рдФрд░ @mxplusb

рдЗрд╕

https://go-review.googlesource.com/c/go/+/133946/5

@ccamplin рдирд╡реАрдирддрдо рдХреЛрдб рд╣реИ рдЬреЛ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред

рдХреЛрдб рдХреЗ рд╕рд╛рде рдореЗрд░реА рд╡рд░реНрддрдорд╛рди рдЪрд┐рдВрддрд╛, рдХрд┐ рдпрд╣ рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рдПред рдЖрдк рдХреНрдпрд╛ рдЖрджреЗрд╢ рдЪрд▓рд╛рддреЗ рд╣реИрдВ? рдореЗрд░реЗ рдкрд░рд┐рд╡реЗрд╢ рдХреЛ рдХреИрд╕реЗ рд╕реЗрдЯрдЕрдк рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ?

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЕрдЧрд▓рд╛ рдХрджрдо рдХрд┐рд╕реА рдХреЗ рд▓рд┐рдП рдЙрд╕ рдХреЛрдб рдХреЛ рдЖрдЬрд╝рдорд╛рдирд╛ рдФрд░ рдЙрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реИ, рдФрд░ рджреЗрдЦреЗрдВ рдХрд┐ рдХреНрдпрд╛ рд╡реЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдпрджрд┐ рдпрд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рддреЛ рдЪрд░рдгреЛрдВ рдХреЛ рдкреНрд░рд▓реЗрдЦрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддрд╛рдХрд┐ рдЕрдиреНрдп рд▓реЛрдЧ рднреА рдХреЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХреЗрдВред рд╢рд╛рдпрдж рдпрд╣ рдмрд╣реБрдд рдЬрдЯрд┐рд▓ рд╣реИ, рдпрд╛ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рд╣рдореЗрдВ рддрджрдиреБрд╕рд╛рд░ рдХреЛрдб рдХреЛ рд╕рдорд╛рдпреЛрдЬрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

рдПрдХ рдмрд╛рд░ рдЬрдм рд╣рдо рдХреЛрдб рдХреА рд╡рд░реНрддрдорд╛рди рд╕реНрдерд┐рддрд┐ рд╕реЗ рдЦреБрд╢ рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВ, рддреЛ рд╣рдореЗрдВ рдЗрд╕реЗ рдорд╛рд╕реНрдЯрд░ рдкрд░ рд░реАрдмреЗрд╕ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рд╡рд╣рд╛рдБ рдХрдИ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рд╕рдорд╛рдпреЛрдЬрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЗрд╕реЗ рд░реАрдмреЗрд╕ рдХрд░рдирд╛ рдЖрд╕рд╛рди рдирд╣реАрдВ рд╣реЛрдЧрд╛ред рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рд╣рдо рдХрдо рдкрд░рд┐рд╡рд░реНрддрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░рд┐рд╡рд░реНрддрди рдХреЛ рд╕рдорд╛рдпреЛрдЬрд┐рдд рдХрд░ рд╕рдХреЗрдВ, рдЗрд╕рд▓рд┐рдП рдЗрд╕реЗ рдкреБрди: рдЖрдзрд╛рд░ рдмрдирд╛рдирд╛ рдЖрд╕рд╛рди рд╣реИред

рдПрд▓реЗрдХреНрд╕

@mxplusb @ kesmit13 рд╡рд░реНрддрдорд╛рди рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛ рдорд╛рд╕реНрдЯрд░ рдХреЗ рд╡рд┐рд░реБрджреНрдз рдкреБрди: рдЖрдзрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ рдпрд╣рд╛рдВ рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ: https://go-review.googlesource.com/c/go/+/133946/6

@alexbrainman

рдХреЛрдб рдХреЗ рд╕рд╛рде рдореЗрд░реА рд╡рд░реНрддрдорд╛рди рдЪрд┐рдВрддрд╛, рдХрд┐ рдпрд╣ рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рдПред рдЖрдк рдХреНрдпрд╛ рдЖрджреЗрд╢ рдЪрд▓рд╛рддреЗ рд╣реИрдВ? рдореЗрд░реЗ рдкрд░рд┐рд╡реЗрд╢ рдХреЛ рдХреИрд╕реЗ рд╕реЗрдЯрдЕрдк рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ?

рдореИрдВ рд╕рд╣рдордд рд╣реВрдВ рдХрд┐ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рддрд░реАрдХреЗ рдкрд░ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдореБрдЭреЗ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЗрд╕реЗ рдХрд╣рд╛рдВ рд░рдЦрд╛ рдЬрд╛рдП, рдЕрдЧрд░ рдЖрдкрдХреЗ рдкрд╛рд╕ рд╡рд┐рдЪрд╛рд░ рд╣реИрдВ рддреЛ рдореБрдЭреЗ рдмрддрд╛рдПрдВред рдЖрдИрдбреАрдХреЗ рдЕрдЧрд░ рдЗрд╕реЗ рдПрдордПрд╕рд╡реАрд╕реА рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдирд┐рд░реНрдорд╛рдг/рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реАрдПрдордбреА/рдЧреЛ рджрд╕реНрддрд╛рд╡реЗрдЬ рдХреЗ рддрд╣рдд рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдпрд╛ рдпрджрд┐ рдЗрд╕реЗ рд╕реАрдЬреАрдУ рджрд╕реНрддрд╛рд╡реЗрдЬ рдХреЗ рддрд╣рдд рд░рд╣рдирд╛ рдЪрд╛рд╣рд┐рдП, рдпрд╛ рд╢рд╛рдпрдж рдХрд╣реАрдВ рдФрд░ рдкреВрд░реА рддрд░рд╣ рд╕реЗ?

рдмрд╣реБрдд рд╕рд╛рд░реЗ рдкрд░реАрдХреНрд╖рдг gcc рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВред рдпрд╣ рд▓реЛрдЧреЛрдВ/рдХрдВрдкреНрдпреВрдЯрд░ рдХреЗ рд╕рдордп рдХреА рдмрд░реНрдмрд╛рджреА рд╣реИ рдЬрдм рдмрд┐рдирд╛ рдХрд┐рд╕реА рдХрд╛рд░рдг рдХреЗ рдкреИрдХреЗрдЬ рдкрд░реАрдХреНрд╖рдг рджреЛ рдмрд╛рд░ рдЪрд▓рддреЗ рд╣реИрдВред рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк #20982 рд╕реЗ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ (рдЯрд┐рдкреНрдкрдгреА) рд╕рдВрдЧреНрд░рд╣/рдЬрд╝рд┐рдк рдкреИрдХреЗрдЬ рдкрд░реАрдХреНрд╖рдг рджреЛ рдмрд╛рд░ рдЪрд▓рд╛рдП рдЧрдП рдереЗ - рдореБрдЭреЗ рджреВрд╕рд░реЗ рд░рди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рджрд┐рдЦ рд░рд╣реА рд╣реИред

рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЗрд╕реЗ рдХреИрд╕реЗ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдП, рд▓реЗрдХрд┐рди рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдЖрдкрдХреЛ MSVC рдмрд┐рд▓реНрдб рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХрд╛ рдЪрдпрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП run.bat рдореЗрдВ рдЧреЛ рдЯреВрд▓ рдбрд┐рд╕реНрдЯ рдЯреЗрд╕реНрдЯ рдХреА рдЕрдкрдиреА рдХреЙрд▓ рдХреЛ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рджреЗрдЦреЗрдВ рдХрд┐ рдЖрдк рдХреЗрд╡рд▓ рдХреБрдЫ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХрд╛ рдЪрдпрди рдХреИрд╕реЗ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред @bradfitz рд╢рд╛рдпрдж рд╣рдо рдХреБрдЫ рдзреНрд╡рдЬ рдпрд╛ рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ

рдкрд░рд┐рд╡рд░реНрддрди рдореЗрдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдПрдХ рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░ рд╢рд╛рдорд┐рд▓ рд╣реИ рдЬреЛ рдпрд╣ рдмрддрд╛рддрд╛ рд╣реИ рдХрд┐ рд╣рдо рдПрдордПрд╕рд╡реАрд╕реА рдЪреАрдЬреЗрдВ "GO_TEST_TESTINGMSVC" рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдореБрдЭреЗ рд╡рд┐рд╢реНрд╡рд╛рд╕ рд╣реИред рдореИрдВ рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдирд┐рд╢реНрдЪрд┐рдд рдирд╣реАрдВ рд╣реВрдВ рдХрд┐ рд╣рдо рдЙрди рдЪреАрдЬреЛрдВ рдХреЗ рд▓рд┐рдП рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЛ рдХреИрд╕реЗ рдлрд╝рд┐рд▓реНрдЯрд░ рдХрд░реЗрдВрдЧреЗ рдЬрд┐рдиреНрд╣реЗрдВ рдХреЗрд╡рд▓ рдПрдордПрд╕рд╡реАрд╕реА рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдпрджрд┐ рд╣рдо рджреЛ рдмрд╛рд░ рд╕рднреА рдкрд░реАрдХреНрд╖рдг рдирд╣реАрдВ рдЪрд▓рд╛ рд░рд╣реЗ рд╣реИрдВред рд╕рдВрднрд╛рд╡рд┐рдд рд░реВрдк рд╕реЗ рдЗрд╕реЗ рдХреЗрд╡рд▓ рд╕реАрдЬреАрдУ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдкрд░реАрдХреНрд╖рдгреЛрдВ рддрдХ рд╕реАрдорд┐рдд рдХрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛтАЛтАЛрд╣реИ рдХрд┐ рд╕рднреА рдЬрдЧрд╣ рд╕реАрдЬреАрдУ рдкрд░реАрдХреНрд╖рдг рд╣реИрдВ рдФрд░ рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рдбрд┐рд╕реНрдЯ рдореЗрдВ рдЙрдирдХреЛ рдлрд╝рд┐рд▓реНрдЯрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рддрдВрддреНрд░ рд╣реИ рдпрд╛ рдирд╣реАрдВ?

рдореБрдЭреЗ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЗрд╕реЗ рдХрд╣рд╛рдВ рд░рдЦрд╛ рдЬрд╛рдП, рдЕрдЧрд░ рдЖрдкрдХреЗ рдкрд╛рд╕ рд╡рд┐рдЪрд╛рд░ рд╣реИрдВ рддреЛ рдореБрдЭреЗ рдмрддрд╛рдПрдВред

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдХрд┐рд╕реА рднреА рджрд╕реНрддрд╛рд╡реЗрдЬ рдХреЛ рдЕрджреНрдпрддрди рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рдЖрдкрдХреЛ рдХреЗрд╡рд▓ рдПрдордПрд╕рд╡реАрд╕реА рдХреЗ рд╕рд╛рде рд╕реАрдЬреАрдУ рдХреЛрдб рдмрдирд╛рдиреЗ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред @mxplusb рдФрд░ @ kesmit13 рдХреЗ рд▓рд┐рдП рддрд╛рдХрд┐ рд╡реЗ рдЖрдкрдХреЗ рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЛ рдЖрдЬрд╝рдорд╛ рд╕рдХреЗрдВред

рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╕реАрдЬреАрдУ рдХреЛрдб рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЬреАрд╕реАрд╕реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, I

  1. gcc.exe рд╢рд╛рдорд┐рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдореЗрд░рд╛% PATH% рд╕рдорд╛рдпреЛрдЬрд┐рдд рдХрд░реЗрдВ
  2. %GOROOT%\src рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рд╕реЗ make.bat рдЪрд▓рд╛рдХрд░ рдкрд╣рд▓реЗ рдЬрд╛рдПрдВ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░реЗрдВ
  3. рдорд╛рдирдХ go build рдФрд░ go install рдХрдорд╛рдВрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ

рдореИрдВ рдПрдордПрд╕рд╡реАрд╕реА рдХреЗ рд╕рд╛рде рдРрд╕рд╛ рдХреИрд╕реЗ рдХрд░реВрдВ?

рдореИрдВ рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдирд┐рд╢реНрдЪрд┐рдд рдирд╣реАрдВ рд╣реВрдВ рдХрд┐ рд╣рдо рдЙрди рдЪреАрдЬреЛрдВ рдХреЗ рд▓рд┐рдП рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЛ рдХреИрд╕реЗ рдлрд╝рд┐рд▓реНрдЯрд░ рдХрд░реЗрдВрдЧреЗ рдЬрд┐рдиреНрд╣реЗрдВ рдХреЗрд╡рд▓ рдПрдордПрд╕рд╡реАрд╕реА рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдпрджрд┐ рд╣рдо рджреЛ рдмрд╛рд░ рд╕рднреА рдкрд░реАрдХреНрд╖рдг рдирд╣реАрдВ рдЪрд▓рд╛ рд░рд╣реЗ рд╣реИрдВред рд╕рдВрднрд╛рд╡рд┐рдд рд░реВрдк рд╕реЗ рдЗрд╕реЗ рдХреЗрд╡рд▓ рд╕реАрдЬреАрдУ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдкрд░реАрдХреНрд╖рдгреЛрдВ рддрдХ рд╕реАрдорд┐рдд рдХрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛтАЛтАЛрд╣реИ рдХрд┐ рд╕рднреА рдЬрдЧрд╣ рд╕реАрдЬреАрдУ рдкрд░реАрдХреНрд╖рдг рд╣реИрдВ рдФрд░ рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рдбрд┐рд╕реНрдЯ рдореЗрдВ рдЙрдирдХреЛ рдлрд╝рд┐рд▓реНрдЯрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рддрдВрддреНрд░ рд╣реИ рдпрд╛ рдирд╣реАрдВ?

рдореИрдВ %GOROOT%\misc\cgo рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рд╕реЗ рд╢реБрд░реВ рдХрд░реВрдВрдЧрд╛ред рдЖрдк рд╡рд╣рд╛рдВ рдЬреЛ рднреА рд╕реНрд░реЛрдд рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдЖрдкрдХреЛ рдЙрд╕рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЗрд╕рд╕реЗ рдКрдкрд░ рдХреБрдЫ рднреА рдЖрдк рдкрд░ рдирд┐рд░реНрднрд░ рд╣реИред

рдПрд▓реЗрдХреНрд╕

@ccamplin рдЗрд╕ рдкрд░ рджреЗрд░реА рдХреЗ рд▓рд┐рдП рдЦреЗрдж рд╣реИ, рдореИрдВ рдЗрд╕ рд╕рдкреНрддрд╛рд╣ рдЗрд╕рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХреА рдкреВрд░реА рдХреЛрд╢рд┐рд╢ рдХрд░реВрдВрдЧрд╛ рдФрд░ рдЖрдкрдХреЛ

рдирдорд╕реНрддреЗ, рджреЛрд╕реНрддреЛрдВ рдкрд╛рд░реНрдЯреА рдореЗрдВ рджреЗрд░ рд╕реЗ рдЖрдиреЗ рдХреЗ рд▓рд┐рдП рдЦреЗрдж рд╣реИ... рдореИрдВ рдХреЛрд╢рд┐рд╢ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ рдФрд░ рдПрдордПрд╕рд╡реАрд╕реА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕рд╡рд╛рд▓реЛрдВ рдХреЗ рдЬрд╡рд╛рдм рджреЗ рд╕рдХрддрд╛ рд╣реВрдВ рдпрд╛ рдЖрдкрдХреЛ рдЙрди рд▓реЛрдЧреЛрдВ рддрдХ рдкрд╣реБрдВрдЪрд╛ рд╕рдХрддрд╛ рд╣реВрдВ рдЬреЛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдореИрдВрдиреЗ рдмрд╛рддрдЪреАрдд рдХреЛ рдкрдврд╝рд╛, рд▓реЗрдХрд┐рди рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдореИрдВ рдЬреАрд╕реАрд╕реА рдХреА рдЖрд╡рд╢реНрдпрдХ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЛ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд░реВрдк рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рдирд╣реАрдВ рд╣реВрдВ рдЬреЛ рдПрдордПрд╕рд╡реАрд╕реА рд╕реЗ рдЧрд╛рдпрдм рд╣реЛ рднреА рд╕рдХрддреА рд╣реИ рдФрд░ рдирд╣реАрдВ рднреАред

рд╣рд╛рдп рджреЛрд╕реНрддреЛрдВ,
рдХреНрдпрд╛ рдпрд╣ рд╕реБрд╡рд┐рдзрд╛ рдЧреЛ 1.14 рдореЗрдВ рдЬрд╛рд░реА рдХреА рдЧрдИ рд╣реИ?
рдпрджрд┐ рдЬрд╛рд░реА рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рддреЛ рдХреГрдкрдпрд╛ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рднреА рдЙрдкрд▓рдмреНрдз рджрд╕реНрддрд╛рд╡реЗрдЬ рд╕рд╛рдЭрд╛ рдХрд░реЗрдВред
рдпрджрд┐ рдЕрднреА рддрдХ рд░рд┐рд▓реАрдЬрд╝ рдирд╣реАрдВ рд╣реБрдИ рд╣реИ, рддреЛ рдХреНрдпрд╛ рдХреЛрдИ рд╡рд┐рдЪрд╛рд░ рд╣реИ рдХрд┐ рдЗрд╕реЗ рдХрдм рд░рд┐рд▓реАрдЬрд╝ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛?
MSVC рдХреЗ рд╕рдорд░реНрдерди рдХрд╛ рдмреЗрд╕рдмреНрд░реА рд╕реЗ рдЗрдВрддрдЬрд╛рд░ рд╣реИред
рдЕрдЧреНрд░рд┐рдо рдореЗрдВ рдзрдиреНрдпрд╡рд╛рдж :)

рдирдорд╕реНрддреЗ, рдХрд┐рд╕реА рдиреЗ рднреА рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд▓рд┐рдП рдореЗрд░реЗ рдЕрдиреБрд░реЛрдз рдХрд╛ рдЬрд╡рд╛рдм рдХрднреА рдирд╣реАрдВ рджрд┐рдпрд╛, рдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИред рдХреНрдпрд╛ рдХреЛрдИ рдореБрдЭреЗ рдХреГрдкрдпрд╛ рднрд░ рд╕рдХрддрд╛ рд╣реИ?

рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рдХреЛрдИ рдЗрд╕ рдореБрджреНрджреЗ рдкрд░ рд╕рдХреНрд░рд┐рдп рд░реВрдк рд╕реЗ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИ рдпрд╛ рдирд╣реАрдВред

рдирдорд╕реНрддреЗ, рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд▓рд┐рдП рдореЗрд░реЗ рдЕрдиреБрд░реЛрдз рдХрд╛ рдХрднреА рдХрд┐рд╕реА рдиреЗ рдЬрд╡рд╛рдм рдирд╣реАрдВ рджрд┐рдпрд╛,...

рдирдорд╕реНрддреЗ @manbearian

рд╡рд╣ рдХреМрди рд╕рд╛ рдЕрдиреБрд░реЛрдз рд╣реИ? рдЖрдкрдХреЛ рдХрд┐рд╕ рдЬрд╛рдирдХрд╛рд░реА рдХреА рдЬрд╝рд░реВрд░рдд рд╣реИ?

рдПрд▓реЗрдХреНрд╕

рдореБрдЭреЗ рдкрд╣рд▓реЗ рдЗрд╕ рдереНрд░реЗрдб рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд▓рд┐рдП рдЯреИрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рд▓реЛрдЧ рдХреНрдпрд╛ рдвреВрдВрдв рд░рд╣реЗ рд╣реИрдВ рдФрд░ рдорджрдж рдХрд░рдиреЗ рдореЗрдВ рдЕрд╕рдорд░реНрде рд░рд╣реЗ рд╣реИрдВред рдЕрдЧрд░ рдХреЛрдИ рдорджрдж рдХреА рдЬрд░реВрд░рдд рдирд╣реАрдВ рд╣реИ, рддреЛ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╣реИред рдмрд╕ рдХреГрдкрдпрд╛ рдореБрдЭреЗ рдмрддрд╛рдПрдВред

рдмрд╕ рдХреГрдкрдпрд╛ рдореБрдЭреЗ рдмрддрд╛рдПрдВред

@рдордирдмреЗрд░рд┐рдпрди

рдЖрдкрдХреЗ рдкреНрд░рд╕реНрддрд╛рд╡ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рдЖрдкрдХреЛ рдХрд┐рд╕рдиреЗ рдЯреИрдЧ рдХрд┐рдпрд╛ рд╣реИред рдЕрдЧрд░ рдЙрдиреНрд╣реЗрдВ рдлрд┐рд░ рднреА рдорджрдж рдХреА рдЬрд╝рд░реВрд░рдд рд╣реЛрдЧреА, рддреЛ рд╡реЗ рдЖрдкрдХреЛ рдлрд┐рд░ рд╕реЗ рдЯреИрдЧ рдХрд░реЗрдВрдЧреЗ.

рдПрд▓реЗрдХреНрд╕

рдпрджрд┐ рдЕрднреА рддрдХ рд░рд┐рд▓реАрдЬрд╝ рдирд╣реАрдВ рд╣реБрдИ рд╣реИ, рддреЛ рдХреНрдпрд╛ рдХреЛрдИ рд╡рд┐рдЪрд╛рд░ рд╣реИ рдХрд┐ рдЗрд╕реЗ рдХрдм рд░рд┐рд▓реАрдЬрд╝ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛?
MSVC рдХреЗ рд╕рдорд░реНрдерди рдХрд╛ рдмреЗрд╕рдмреНрд░реА рд╕реЗ рдЗрдВрддрдЬрд╛рд░ рд╣реИред

@dinesherode91

рдХреЛрдб рд╡рд╣рд╛рдВ рд╣реИ рдФрд░ рдкреВрд░рд╛ рд╣реЛ рдЧрдпрд╛ рд╣реИ; рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛтАЛтАЛрд╣реИ рдХрд┐ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЗрд╕реЗ рд╡рд╛рдкрд╕ рд░рдЦрдиреЗ рд╡рд╛рд▓реА рдПрдХрдорд╛рддреНрд░ рдЪреАрдЬ рд╣реИ рдЬреЛ рд▓реЛрдЧ рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдФрд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдкреНрд░рджрд╛рди рдХрд░ рд░рд╣реЗ рд╣реИрдВ рддрд╛рдХрд┐ рдЙрдирдХреА рдЙрдЪрд┐рдд рд╕рдореАрдХреНрд╖рд╛ рдФрд░ рдЕрдиреБрдореЛрджрди рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХреЗред рд╣рд╛рд▓рд╛рдВрдХрд┐ рдореИрдВ рд╡рд░реНрддрдорд╛рди рдорд╛рд╕реНрдЯрд░ рдХреЗ рд╢реАрд░реНрд╖ рдкрд░ рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЛ рджреЛрдмрд╛рд░рд╛ рдХрд░рдиреЗ рдореЗрдВ рд╕рдВрдХреЛрдЪ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред рдореИрдВрдиреЗ рдЗрд╕реЗ 5-6 рдмрд╛рд░ рдХрд┐рдпрд╛ рд╣реИ рдФрд░ рдЗрд╕рдореЗрдВ рдмрд╣реБрдд рд╕рдордп рд▓рдЧрддрд╛ рд╣реИ, рдФрд░ рдлрд┐рд░ рдореБрдЭреЗ рдХреЛрдИ рдкрд░реАрдХреНрд╖рдг/рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдирд╣реАрдВ рдорд┐рд▓рддреА рд╣реИред рдЬрдм рддрдХ рдЕрддрд┐рд░рд┐рдХреНрдд рдкрдХреНрд╖ рдЗрд╕рдХреЗ рдкрд░реАрдХреНрд╖рдг рдореЗрдВ рднрд╛рдЧ рд▓реЗрдиреЗ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рдирд╣реАрдВ рд╣реЛрддреЗ, рддрдм рддрдХ рд╕рдорд╕реНрдпрд╛ рдкрд╛рдиреА рдореЗрдВ рдореГрдд рд╣реЛ рд╕рдХрддреА рд╣реИред

рдЬрдм рддрдХ рдЕрддрд┐рд░рд┐рдХреНрдд рдкрдХреНрд╖ рдЗрд╕рдХреЗ рдкрд░реАрдХреНрд╖рдг рдореЗрдВ рднрд╛рдЧ рд▓реЗрдиреЗ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рдирд╣реАрдВ рд╣реЛрддреЗ, рддрдм рддрдХ рд╕рдорд╕реНрдпрд╛ рдкрд╛рдиреА рдореЗрдВ рдореГрдд рд╣реЛ рд╕рдХрддреА рд╣реИред

@ccamplin рдЖрдкрдХреЗ рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХрд╛ рдкрд░реАрдХреНрд╖рдг/рдбреАрдмрдЧрд┐рдВрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдореБрдЭ рдкрд░ рднрд░реЛрд╕рд╛ рдХрд░рддрд╛ рд╣реИред рдореБрдЭреЗ рдЯреВрд▓рдЪреЗрди рдЬрд╛рдиреЗ рдХрд╛ рдЕрдиреБрднрд╡ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдореИрдВрдиреЗ рдЖрдкрдХреЗ рдХрдорд┐рдЯ рдХреА рд╕рдореАрдХреНрд╖рд╛ рдХреА рд╣реИ рдФрд░ рд╡реЗ рдмрд╣реБрдд рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рд╕рдВрд░рдЪрд┐рдд рдФрд░ рдкреНрд░рд▓реЗрдЦрд┐рдд рдкреНрд░рддреАрдд рд╣реЛрддреЗ рд╣реИрдВред

@ccamplin рдпрд╣ рд╕реБрдирдХрд░ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд▓рдЧрд╛ рдХрд┐ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рднрд╛рдЧ рдкреВрд░рд╛ рд╣реЛ рдЧрдпрд╛ рд╣реИред
рдореБрдЭреЗ рдкрд░реАрдХреНрд╖рдг рднрд╛рдЧ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реЛрдиреЗ рдореЗрдВ рджрд┐рд▓рдЪрд╕реНрдкреА рд╣реИ, рд▓реЗрдХрд┐рди рдореИрдВ рдЧреЛрд▓рд╛рдВрдЧ рдореЗрдВ рдПрдХ рдиреМрд╕рд┐рдЦрд┐рдпрд╛ рд╣реВрдВ рдФрд░ рд╡рд┐рдВрдбреЛрдЬрд╝ рдПрдкрд┐рд╕ рдореЗрдВ рднреА рдПрдХ рдЕрдЪреНрдЫрд╛ рд╢рд┐рдХреНрд╖рд╛рд░реНрдереА рд╣реВрдВ (рдХреБрдЫ рд╣рдлреНрддреЗ рдкрд╣рд▓реЗ рд╢реБрд░реВ рд╣реБрдЖ)ред рдореИрдВ рдПрдордПрд╕ рд╕реА ++ рдореЗрдВ рд╡рд┐рдВрдбреЛрдЬ рдПрдкреАрдЖрдИ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреА рдпреЛрдЬрдирд╛ рдмрдирд╛ рд░рд╣рд╛ рдерд╛ рдХреНрдпреЛрдВрдХрд┐ рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рд╕реЗ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рд╕рдВрд╕рд╛рдзрди рдЙрдкрд▓рдмреНрдз рд╣реИрдВред рд▓реЗрдХрд┐рди рдлрд┐рд░ рдореИрдВрдиреЗ рдПрдХ рдРрд╕реА рднрд╛рд╖рд╛ (рдЕрдкрдиреЗ рд╕рд┐рд╕реНрдЯрдо рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдХреЗ рд▓рд┐рдП) рдХреА рддрд▓рд╛рд╢ рд╢реБрд░реВ рдХреА, рдЬрд╣рд╛рдВ рдореИрдВ рдЗрд╕реЗ рдЕрдкрдиреЗ рдорд▓реНрдЯреА рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рд╕рд┐рд╕реНрдЯрдо рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд░ рд╕рдХреВрдВ рдФрд░ рдореИрдВ GoLang рд╕реЗ рдкреНрд░рднрд╛рд╡рд┐рдд рд╣реВрдВред рдореЗрд░реА рдУрд░ рд╕реЗ рдпреЛрдЧрджрд╛рди рдХреЗ рд▓рд┐рдП рд╣рдореЗрд╢рд╛ рддреИрдпрд╛рд░ рдФрд░ рдорд╛рд░реНрдЧрджрд░реНрд╢рди рдХреА рдмрд╣реБрдд рдЬрд░реВрд░рдд рд╣реИред

@ccamplin рдЕрдЧрд░ рдЖрдк рд░рд┐рдмреЗрд╕ рдХрд░рддреЗ рд╣реИрдВ рддреЛ рдореИрдВ рдЗрд╕рдХреЗ рдКрдкрд░ рдирд┐рд░реНрдорд╛рдг рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реВрдВрдЧрд╛ред рдореИрдВ рдХрд╛рдо рдкрд░ рдЕрдкрдиреА рдХреБрдЫ рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рд╕реЗ mingw64 рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЛ рдЫреЛрдбрд╝рдирд╛ рдкрд╕рдВрдж рдХрд░реВрдВрдЧрд╛ред рдореЗрд░реА рдмрд┐рд▓реНрдб рдЯреВрд▓рд┐рдВрдЧ MSVC рдХреЗ рд▓рд┐рдП рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕реНрдерд╛рдкрд┐рдд рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ рдЖрдкрдХреЗ рдкреИрдЪ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдФрд░ рдХреБрдЫ рдирд╣реАрдВ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред

@ccamplin рднреА, рдореИрдВрдиреЗ рдЖрдкрдХреЗ

@ericlagergren

@ccamplin рднреА, рдореИрдВрдиреЗ рдЖрдкрдХреЗ

рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЕрдЧрд░ рдореИрдВ рд╕рдордЭрддрд╛ рд╣реВрдВ, рддреЛ https://go-review.googlesource.com/c/go/+/133946/6 рдкрд░ рдХрдИ рд╕рдВрдмрдВрдзрд┐рдд рдХрдорд┐рдЯ рд╕реАрдзреЗ рдХреБрдЫ рдХреНрд╖рдорддрд╛ рдореЗрдВ рдЧреЛ рдХреЗ рд╕реАрдЬреАрдУ рд╣рд┐рд╕реНрд╕реЗ рдХреЛ рдЫреВрддреЗ рд╣реИрдВред

@ccahoon рдареАрдХ рд╣реИ, рдореИрдВрдиреЗ рдЙрдиреНрд╣реЗрдВ рдпрд╛рдж рдХрд┐рдпрд╛ рд╣реЛрдЧрд╛ред рдЕрдЧрд░ cgo рдЯреВрд▓ рдХреЛ рдЕрдкрдбреЗрдЯ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реЛрддрд╛ рддреЛ рдореИрдВ рдРрд╕рд╛ рдХрд░рдиреЗ рдХреА рдкреЗрд╢рдХрд╢ рдХрд░рдиреЗ рдЬрд╛ рд░рд╣рд╛ рдерд╛ред

@ericlagergren

рдореИрдВ рдХрд╛рдо рдкрд░ рдЕрдкрдиреА рдХреБрдЫ рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рд╕реЗ mingw64 рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЛ рдЫреЛрдбрд╝рдирд╛ рдкрд╕рдВрдж рдХрд░реВрдВрдЧрд╛

рд╕рд┐рд░реНрдл рдЖрдкрдХреА рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд▓рд┐рдПред NS

https://go-review.googlesource.com/c/go/+/133946/6

рдкрд░рд┐рд╡рд░реНрддрди рдХреЛ рдЕрднреА рднреА рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдорд┐рдВрдЧрд╡ рдХреА рдЬрд░реВрд░рдд рд╣реИред @ccamplin рдкрд░рд┐рд╡рд░реНрддрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ Mingw рдФрд░ MSVC рджреЛрдиреЛрдВ рдЯреВрд▓ рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░рдиреЗ

рдПрд▓реЗрдХреНрд╕

@ccamplin ,

@alexbrainman рдореИрдВ рдХрд┐ рд╢рд╛рдирджрд╛рд░ рд╣реЛрдЧрд╛ред рд▓реЗрдХрд┐рди рдЬреИрд╕реЗ @cglong рдиреЗ рдХрд╣рд╛, рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЗрд╕рдХреЗ рд▓рд┐рдП mingw64 рдХреА рднреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреНрдпреЛрдВ рд╣реЛрдЧреАред

@ericlagergren @cglong CGO рдХреЛ рдЙрд╕ рд╕реА рдХреЛрдб рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рдЙрдкрд▓рдмреНрдз рдХрд░рд╛рдиреЗ рдФрд░ рдЙрдкрд▓рдмреНрдз рдХрд░рд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдЬрд┐рд╕рдХреЗ рд╕рд╛рде рдЗрд╕реЗ рд╕рдВрдХрд▓рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИред GCC рдореЗрдВ рдПрдХ рдлрд╝реНрд▓реИрдЧ рд╣реЛрддрд╛ рд╣реИ рдЬреЛ рдЖрд╕рд╛рдиреА рд╕реЗ рдкрд╛рд░реНрд╕ рдХрд░рдиреЗ рдпреЛрдЧреНрдп рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рдкреНрд░рдХрд╛рд░ рдХреЗ рдбреЗрдЯрд╛ рдХреЛ рдЖрдЙрдЯрдкреБрдЯ рдХрд░реЗрдЧрд╛ред рдЬрд╣рд╛рдБ рддрдХ рдореБрдЭреЗ рдкрддрд╛ рд╣реИ MSVC рдореЗрдВ рд╕рдорд╛рди рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдХреА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдирд╣реАрдВ рд╣реИред рдЯреВрд▓рд┐рдВрдЧ рдЗрди рдЧреЛ рдореЗрдВ рди рдХреЗрд╡рд▓ рд▓реЗрдХреНрд╕/рдкрд╛рд░реНрд╕ рд╕реА рдФрд░ рд╕реА ++ рдХреЛрдб рдХреЗ рд▓рд┐рдП рдХреЛрдб рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА рдмрд▓реНрдХрд┐ рдкреНрд░реА-рдкреНрд░реЛрд╕реЗрд╕рд░ рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХреЛ рд╕рдордЭрдиреЗ рдФрд░ рдореВрд▓реНрдпрд╛рдВрдХрди рдХрд░рдиреЗ рдХреА рднреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред рдЧреЛ рдореЗрдВ рдЗрд╕ рддрд░рд╣ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░рдирд╛ рдХрд╛рдлреА рдмрдбрд╝рд╛ рдЙрдкрдХреНрд░рдо рд╣реЛрдЧрд╛ред рд╢рд╛рдпрдж рдПрдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдХрд╣реАрдВ рдЙрдкрд▓рдмреНрдз рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рд╣рдо рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдЗрд╕реЗ рдХреИрд╕реЗ рдЕрдкрдирд╛рдпрд╛ рдЬрд╛рдП?

@ccamplin рдЧреЛрдЪрд╛ , рдореИрдВрдиреЗ рдпрд╣реА рдкрд╛рдпрд╛ред рдореИрдВ рддреАрд╕рд░реЗ рдкрдХреНрд╖ рдХреЗ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдЬреИрд╕реЗ libclang рдФрд░ cznic/cc рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирддрд╛ рд╣реВрдВред рд▓реЗрдХрд┐рди рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ libclang рд╡рд┐рд╢рд╛рд▓ рд╣реИ рдФрд░ cznic/cc рдХрд╛ рдкрд░реАрдХреНрд╖рдг Windows рдпрд╛ macOS рдкрд░ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдХреНрдпрд╛ рдкреАрдбреАрдмреА рдкрд░реНрдпрд╛рдкреНрдд рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рджрд╛рди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ?

рд╕реАрдЬреАрдУ рдХреЛ рдЬрд┐рд╕ рд╕реА рдХреЛрдб рдХреЗ рд╕рд╛рде рд╕рдВрдХрд▓рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ рдЙрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рдЗрдХрдЯреНрдард╛ рдХрд░рдиреЗ рдФрд░ рдЙрдкрд▓рдмреНрдз рд╣реЛрдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИред GCC рдореЗрдВ рдПрдХ рдлрд╝реНрд▓реИрдЧ рд╣реЛрддрд╛ рд╣реИ рдЬреЛ рдЖрд╕рд╛рдиреА рд╕реЗ рдкрд╛рд░реНрд╕ рдХрд░рдиреЗ рдпреЛрдЧреНрдп рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рдкреНрд░рдХрд╛рд░ рдХреЗ рдбреЗрдЯрд╛ рдХреЛ рдЖрдЙрдЯрдкреБрдЯ рдХрд░реЗрдЧрд╛ред рдЬрд╣рд╛рдБ рддрдХ рдореБрдЭреЗ рдкрддрд╛ рд╣реИ MSVC рдореЗрдВ рд╕рдорд╛рди рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдХреА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдирд╣реАрдВ рд╣реИред

рд╢рд╛рдпрдж @manbearian рдпрд╣рд╛рдВ рдХреБрдЫ рд╕рдВрдХреЗрдд рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛ рд╕рдХрддрд╛ рд╣реИ?

рдореИрдВ рдпрд╣ рдирд╣реАрдВ рдХрд╣реВрдВрдЧрд╛ рдХрд┐ рдЬреАрд╕реАрд╕реА рдПрдХ рд╡рд┐рд╢реЗрд╖ рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рдЖрдЙрдЯрдкреБрдЯ рдкреНрд░рдХрд╛рд░ рдбреЗрдЯрд╛ рдЙрддреНрд╕рд░реНрдЬрд┐рдд рдХрд░рддрд╛ рд╣реИред рдпрд╣ рдбрд┐рдмрдЧрд░реНрд╕ рдХреЗ рд▓рд┐рдП рд▓рдХреНрд╖рд┐рдд DWARF рдбрд┐рдмрдЧрд┐рдВрдЧ рдбреЗрдЯрд╛ рдХрд╛ рдЙрддреНрд╕рд░реНрдЬрди рдХрд░рддрд╛ рд╣реИ, рдФрд░ cgo рдбреАрдмрдЧ/рдмреМрдирд╛ рдкреИрдХреЗрдЬ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЙрд╕ рдбреЗрдЯрд╛ рдХреЛ рдкрдврд╝рддрд╛ рд╣реИред MSVC рдореЗрдВ рд╕рдВрднрд╡рддрдГ рдПрдХ рдбрд┐рдмрдЧ рдкреНрд░рд╛рд░реВрдк рднреА рд╣реИред рдпрджрд┐ рд╡рд╣ рдкреНрд░рд╛рд░реВрдк рдХрд╣реАрдВ рднреА рдкреНрд░рд▓реЗрдЦрд┐рдд рд╣реИ, рддреЛ рд╣рдо рдЗрд╕реЗ рд╕реАрдЬреАрдУ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкрдврд╝ рд╕рдХрддреЗ рд╣реИрдВ рдЬреИрд╕реЗ рд╣рдо рдбреАрдбрдмреНрд▓реНрдпреВрдПрдЖрд░рдПрдл рдбреЗрдЯрд╛ рдХрд░рддреЗ рд╣реИрдВред

@ianlancetaylor MSVC PDB рдлрд╝рд╛рдЗрд▓реЛрдВ рдХрд╛ рдЙрддреНрд╕рд░реНрдЬрди рдХрд░ рд╕рдХрддрд╛ рд╣реИред рджреЗрдЦреЗрдВ https://github.com/Microsoft/microsoft-pdb

рдПрдлрдбрдмреНрд▓реНрдпреВрдЖрдИрдбрдмреНрд▓реНрдпреВ, рдПрдордПрд╕рд╡реАрд╕реА рдХреЗ рдбрд┐рдмрдЧ рдЖрдЙрдЯрдкреБрдЯ рдХреЛ рдкрдврд╝рдирд╛ рд╡рд╣ рд╣реИ рдЬрд┐рд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдореИрдВ рдмрд╛рдд рдХрд░ рд░рд╣рд╛ рдерд╛ рдЬрдм рдореИрдВрдиреЗ https://github.com/golang/go/issues/20982#issuecomment -648462003 рдореЗрдВ cgo рдЯреВрд▓ рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдерд╛ред

рдореИрдВ рдпрд╣ рдирд╣реАрдВ рдХрд╣реВрдВрдЧрд╛ рдХрд┐ рдЬреАрд╕реАрд╕реА рдПрдХ рд╡рд┐рд╢реЗрд╖ рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рдЖрдЙрдЯрдкреБрдЯ рдкреНрд░рдХрд╛рд░ рдбреЗрдЯрд╛ рдЙрддреНрд╕рд░реНрдЬрд┐рдд рдХрд░рддрд╛ рд╣реИред рдпрд╣ рдбрд┐рдмрдЧрд░реНрд╕ рдХреЗ рд▓рд┐рдП рд▓рдХреНрд╖рд┐рдд DWARF рдбрд┐рдмрдЧрд┐рдВрдЧ рдбреЗрдЯрд╛ рдХрд╛ рдЙрддреНрд╕рд░реНрдЬрди рдХрд░рддрд╛ рд╣реИ, рдФрд░ cgo рдбреАрдмрдЧ/рдмреМрдирд╛ рдкреИрдХреЗрдЬ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЙрд╕ рдбреЗрдЯрд╛ рдХреЛ рдкрдврд╝рддрд╛ рд╣реИред MSVC рдореЗрдВ рд╕рдВрднрд╡рддрдГ рдПрдХ рдбрд┐рдмрдЧ рдкреНрд░рд╛рд░реВрдк рднреА рд╣реИред рдпрджрд┐ рд╡рд╣ рдкреНрд░рд╛рд░реВрдк рдХрд╣реАрдВ рднреА рдкреНрд░рд▓реЗрдЦрд┐рдд рд╣реИ, рддреЛ рд╣рдо рдЗрд╕реЗ рд╕реАрдЬреАрдУ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкрдврд╝ рд╕рдХрддреЗ рд╣реИрдВ рдЬреИрд╕реЗ рд╣рдо рдбреАрдбрдмреНрд▓реНрдпреВрдПрдЖрд░рдПрдл рдбреЗрдЯрд╛ рдХрд░рддреЗ рд╣реИрдВред

@ericlagergren @ianlancetaylor
рдЗрд╕рд▓рд┐рдП рд╣рдореЗрдВ DWARF рдбреЗрдЯрд╛ рдХреА рдЬрд░реВрд░рдд рд╣реИ, рдЬреЛ рдЗрд╕рдХрд╛ рдПрдХ рдмрдбрд╝рд╛ рд╣рд┐рд╕реНрд╕рд╛ рд╣реИред рд╣рд╛рд▓рд╛рдБрдХрд┐, рд╣рдо рд╕реИрджреНрдзрд╛рдВрддрд┐рдХ рд░реВрдк рд╕реЗ рд╡рд╣реА рдЬрд╛рдирдХрд╛рд░реА рдкреАрдбреАрдмреА рдбреЗрдЯрд╛ рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рд╣рд╛рд▓рд╛рдБрдХрд┐, рдореИрдВ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдЬрд┐рд╕ DWARF рдбреЗрдЯрд╛ рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд░ рд░рд╣рд╛ рдерд╛, рд╡рд╣ рдХреЗрд╡рд▓ GCC рджреНрд╡рд╛рд░рд╛ рдЙрддреНрдкрд╛рджрд┐рдд DWARF рдбреЗрдЯрд╛ рдирд╣реАрдВ рдерд╛, рдмрд▓реНрдХрд┐ gcc -E -dM рдХрд╛ рдЖрдЙрдЯрдкреБрдЯ рдерд╛, рдЬреЛ рдкреНрд░реАрдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рдХреЗ рдмрд╛рдж рд╕рднреА # рдбрд┐рдлрд╛рдЗрди рдХреЛ рдЖрдЙрдЯрдкреБрдЯ рдХрд░рддрд╛ рд╣реИред рдпрд╣ рд╕рдВрднрд╡ рд╣реИ рдХрд┐ рдкреАрдбреАрдмреА рд╕реНрд╡рдпрдВ рд╣реА рд╡рд╣реА рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рджрд╛рди рдХрд░ рд╕рдХреЗ ... рдореБрдЭреЗ рд╕рдВрджреЗрд╣ рд╣реИ рдХрд┐ рд╣рдо рдПрдордПрд╕рд╡реАрд╕реА рдХреЛ рдХрд┐рд╕реА рднреА рдХреНрд╖рдорддрд╛ рдореЗрдВ рдбреАрдмрдЧ рдЬрд╛рдирдХрд╛рд░реА/рдкреНрд░рдХрд╛рд░ рдХреА рдЬрд╛рдирдХрд╛рд░реА рдбрдВрдк рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдВрдЧреЗ рдпрд╛ рдирд╣реАрдВ, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЗрд╕реЗ рд╕рдВрдХрд▓рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЗ рдмрд┐рдирд╛ рдХреЛрдбред рдЕрднреА рд╕реАрдЬреАрдУ рдЬреАрд╕реАрд╕реА рдХреЗ рд╕рд╛рде рдРрд╕рд╛ рд╣реА рдХрд░ рд░рд╣рд╛ рд╣реИред

рд╕реНрдореГрддрд┐ рд╕реЗ, /EP /d1PP -E -dM рдХреЗ рд╕рдорд╛рди рдХреБрдЫ рдЙрддреНрд╕рд░реНрдЬрд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред

рд╕реНрдореГрддрд┐ рд╕реЗ, /EP /d1PP -E -dM рдХреЗ рд╕рдорд╛рди рдХреБрдЫ рдЙрддреНрд╕рд░реНрдЬрд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред

рдпрджрд┐ рдРрд╕рд╛ рд╣реИ рддреЛ рдпрд╣ рдЙрддреНрдХреГрд╖реНрдЯ рд╣реЛрдЧрд╛, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐/d1PP рдПрдХ рдЕрдирд┐рдпрдВрддреНрд░рд┐рдд рдзреНрд╡рдЬ рд╣реИ? рдореИрдВрдиреЗ рдЗрд╕реЗ рдкрд╣рд▓реЗ рдХрднреА рдирд╣реАрдВ рджреЗрдЦрд╛ред рд╡рд╣ рд╕рдордп рд╕реЗ рдкрд╣рд▓реЗ рд╕рдорд╛рди рдкреНрд░рдХрд╛рд░ рдХреА рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдЫреЛрдбрд╝ рджреЗрдЧрд╛ред

@ccamplin рд╣рд╛рдБ, рдпрд╣

рдХреНрдпрд╛ рдХреЛрдИ рдореБрдЭреЗ рдПрдордПрд╕рд╡реАрд╕реА-рд╕рдорд░реНрдерди рдХреА рд╡рд░реНрддрдорд╛рди рд╕реНрдерд┐рддрд┐ рдХрд╛ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рд╕рд╛рд░рд╛рдВрд╢ рджреЗ рд╕рдХрддрд╛ рд╣реИ? рдореБрдЭреЗ рдпрд╣ рд╕рдм рдирд┐рдореНрди-рд╕реНрддрд░-рд╕рдВрдХрд▓рдХ-рд╕рд╛рдорд╛рди рдмрд╣реБрдд рд╕рдордЭ рдореЗрдВ рдирд╣реАрдВ рдЖрддрд╛ рд╣реИред рдпрд╣ рд╕рд┐рд░реНрдл рдЗрддрдирд╛ рд╣реИ рдХрд┐ рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ рдЧреЛ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд╣реИ рдЬрд┐рд╕реЗ рдореИрдВ рд╕реА #/рдпреВрдбрдмреНрд▓реНрдпреВрдкреА рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ - рдФрд░ рд╡рд╣ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЧреЛ рдмрд┐рд▓реНрдб рдФрд░ рдмрд┐рд▓реНрдбрдореЛрдб рд╕реА-рд╕рд╛рдЭрд╛ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИред рд▓реЗрдХрд┐рди: рдЙрд╕ рдРрдк рдХреЛ рдХрднреА рднреА рд╡рд┐рдВрдбреЛрдЬ рд╕реНрдЯреЛрд░ рджреНрд╡рд╛рд░рд╛ рд╕реНрд╡реАрдХрд╛рд░ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ рдХреНрдпреЛрдВрдХрд┐ рдЬреЗрдирд░реЗрдЯ рдбреАрдПрд▓рдПрд▓ рдЬрд╛рдиреЗ рд╕реЗ рдХреБрдЫ рдХрдВрдкрд╛рдЗрд▓рд░/рд▓рд┐рдВрдХрд░-рдлреНрд▓реИрдЧ рдпрд╛рдж рдЖрддреА рд╣реИ (рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ) рдХреЗрд╡рд▓ рдПрдордПрд╕рд╡реАрд╕реА-рдЯреВрд▓рдЪреИрди рджреНрд╡рд╛рд░рд╛ рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рддреЛ: рдореИрдВ рдпрд╣рд╛рдВ рдЗрд╕рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХреИрд╕реЗ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ? рдХрд┐рд╕реА рднреА рд╕рд▓рд╛рд╣ рдХреА рд╕рд░рд╛рд╣рдирд╛ рдХреА рдЬрд╛рддреА рд╣реИ! рд╢реБрдХреНрд░рд┐рдпрд╛!

рд╡рд╣ рдРрдк рдХрднреА рднреА рд╡рд┐рдВрдбреЛрдЬрд╝ рд╕реНрдЯреЛрд░ рджреНрд╡рд╛рд░рд╛ рд╕реНрд╡реАрдХрд╛рд░ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ рдХреНрдпреЛрдВрдХрд┐ рдЬреЗрдирд░реЗрдЯ рдбреАрдПрд▓рдПрд▓ рдЬрд╛рдиреЗ рд╕реЗ рдХреБрдЫ рдХрдВрдкрд╛рдЗрд▓рд░/рд▓рд┐рдВрдХрд░-рдлреНрд▓реИрдЧ рдпрд╛рдж рдЖрддреА рд╣реИ (рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ) рдХреЗрд╡рд▓ рдПрдордПрд╕рд╡реАрд╕реА-рдЯреВрд▓рдЪреИрди рджреНрд╡рд╛рд░рд╛ рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

@TopperDEL рдХреНрдпрд╛ рд╡рд┐рдВрдбреЛрдЬ рд╕реНрдЯреЛрд░ рдЖрдкрдХреЛ рдмрддрд╛рддрд╛ рд╣реИ рдХрд┐ рдХреМрди рд╕реЗ рдХрдВрдкрд╛рдЗрд▓рд░ рдЭрдВрдбреЗ рдЧрд╛рдпрдм рд╣реИрдВ? рдпрджрд┐ mingw-64 рдЙрдирдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ рддреЛ рдЖрдк рдбреАрдПрд▓рдПрд▓ рдмрдирд╛рддреЗ рд╕рдордп рд╣рдореЗрд╢рд╛ рд╕рд╣реА рдЭрдВрдбреЗ рдХреЗ рд╕рд╛рде -extldflags рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

@qmuntal рд╣рд╛рдБ, рд╡реЗ рдХрд░рддреЗ рд╣реИрдВ:
"рдЬрдм рдЖрдк рдРрдк рдХреЛ рд▓рд┐рдВрдХ рдХрд░рддреЗ рд╣реИрдВ рддреЛ рдЖрд╡рд╢реНрдпрдХ рд▓рд┐рдВрдХрд░ рд╡рд┐рдХрд▓реНрдк - SAFESEH, DYNAMICBASE, NXCOMPAT, рдФрд░ APPCONTAINER - рд▓рд╛рдЧреВ рдХрд░реЗрдВред"

рдореИрдВрдиреЗ рдкрд╣рд▓реЗ рд╣реА рдХреЛрд╢рд┐рд╢ рдХрд░ рд▓реА рд╣реИ
go build -ldflags="-s -w '-extldflags=-Wl,--dynamicbase,--high-entropy-va'" -o storj_uplink.dll -buildmode c-shared

рд▓реЗрдХрд┐рди рдЗрд╕рд╕реЗ рд╕реНрдЯреЛрд░-рд╕рдмрдорд┐рд╢рди рдХреЗ рд╕рдВрдмрдВрдз рдореЗрдВ рдХреБрдЫ рднреА рдирд╣реАрдВ рдмрджрд▓рд╛ред рдФрд░ рдореЗрд░реА рд╕рдордЭ рд╕реЗ рдХрдо рд╕реЗ рдХрдо рд╕реБрд░рдХреНрд╖рд┐рдд рдПрдХ рдПрдордПрд╕рд╡реАрд╕реА-рд╡рд┐рд╢рд┐рд╖реНрдЯ-рдЪреАрдЬ рд╣реИ, рд╣реИ рдирд╛?

"рдЬрдм рдЖрдк рдРрдк рдХреЛ рд▓рд┐рдВрдХ рдХрд░рддреЗ рд╣реИрдВ рддреЛ рдЖрд╡рд╢реНрдпрдХ рд▓рд┐рдВрдХрд░ рд╡рд┐рдХрд▓реНрдк - SAFESEH, DYNAMICBASE, NXCOMPAT, рдФрд░ APPCONTAINER - рд▓рд╛рдЧреВ рдХрд░реЗрдВред"

рдореБрдЭреЗ рд╕реБрд░рдХреНрд╖рд┐рдд рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рдЖрд╕рд╛рди рддрд░реАрдХрд╛ рдирд╣реАрдВ рдкрддрд╛ рд╣реИ рдФрд░ рди рд╣реА APPCONTAINER Mingw-w64 рдореЗрдВ рдЭрдВрдбреЗ, рд╢рд╛рдпрдж рдпрд╣ рдкреНрд░реЛрдЬреЗрдХреНрдЯ https://github.com/status-im/mingw-windows10-uwp рдЖрдкрдХреЛ рдХреБрдЫ рдорд╛рд░реНрдЧрджрд░реНрд╢рди рджреЗ рд╕рдХрддрд╛ рд╣реИред

рджреВрд╕рд░реА рдУрд░ DYNAMICBASE рдФрд░ NXCOMPAT рдХреЛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ 1.16 (# 41421 рджреЗрдЦреЗрдВ) рдореЗрдВ рд╕рдХреНрд╖рдо рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рд▓реЗрдХрд┐рди рдЬреИрд╕рд╛ рдХрд┐ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдкрд╣рд▓реЗ рд╕реЗ рд╣реА -extldflags рд╕рд╛рде рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдореИрдВ рдХреБрдЫ рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдРрд╕рд╛ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред

@qmuntal рдзрдиреНрдпрд╡рд╛рдж! рддреЛ рдХрдо рд╕реЗ рдХрдо рдКрдкрд░ рдореЗрд░реЗ extldflags рд╕рд╣реА рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП?
рдореИрдВ рд╡рд┐рдВрдбреЛрдЬрд╝ 10-рдпреВрдбрдмреНрд▓реНрдпреВрдкреА рдХреЗ рд▓рд┐рдП рдорд┐рдВрдЧрд╡ рдкрд░ рдПрдХ рдирдЬрд╝рд░ рдбрд╛рд▓реВрдВрдЧрд╛ред

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

Miserlou picture Miserlou  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

longzhizhi picture longzhizhi  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

bradfitz picture bradfitz  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

ajstarks picture ajstarks  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

rakyll picture rakyll  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ