cmd / goã®æè¿ã®ã»ãã¥ãªãã£ãããïŒïŒ23672ïŒã¯ãcgoã§ã®äœ¿çšãèš±å¯ãããŠãããªãã·ã§ã³ã®ãã¯ã€ããªã¹ããè¿œå ããŸããã ãã¯ã€ããªã¹ãã«ãªããªãã·ã§ã³ã䜿çšããŠãããããããã©ã«ãã§ãã«ãã«å€±æããããã±ãŒãžãããã€ãã®ç°ãªã人ã ããå ±åãããŠããŸãã ãã®åé¡ã¯ãäžè¶³ããŠãããã¹ãŠã®ãªãã·ã§ã³ã®ãªã¹ããåéããŠããããã1ã€ã®CLã«è¿œå ã§ããããã«ããããšãç®çãšããŠããŸãã
pkg-config -libs
ã«ãã£ãŠçæããããã©ã°ãã³ã³ãã€ã©ã®ãã¯ã€ããªã¹ããšCGO_CFLAGS_ALLOW
ã«å¯ŸããŠãã§ãã¯ãããŠããããšãå ±åããŸããã代ããã«ãªã³ã«ãŒã®ãã¯ã€ããªã¹ããšCGO_LDFLAGS_ALLOW
ã«å¯ŸããŠãã§ãã¯ããå¿
èŠããããŸãã ãããä¿®æ£ããCLããããŸãïŒ //golang.org/cl/92755ããªã³ã«ãã¯ã€ããªã¹ãã¯ã .a
.o
ã .so
ãªã©ã®ãã¡ã€ã«ããã§ã«åãå
¥ããŠããããã .a
ãã¡ã€ã«ãåãå
¥ããå¿
èŠããããŸãã ãããä¿®æ£ããCLããããŸãïŒ //golang.org/cl/92855ã ããã¯ïŒ23739ã§ãã
ïŒ23672ã®ã³ã¡ã³ãã«ã¯ã次ã®ã³ã³ãã€ã©ãªãã·ã§ã³ããªã¹ããããŠããŸãã
-fno-rtti
-fpermissive
ããã³ãããã®ãªã³ã«ãŒãªãã·ã§ã³ïŒ
-Wl,-framework
-Wl,--no-as-needed
-fmodules
è¿œå ããããšãææ¡ããŠããŸãã clangã³ã³ãã€ã©ã¯ããã€ãã®-fmodules
ãªãã·ã§ã³ããµããŒãããŠããŸããããããããã¹ãŠå®å
šã§ãããã©ããã¯æããã§ã¯ãããŸããã ç¹ã«-fmodules-cache-path
ãš-fmodules-user-build-path
ã¯ãclangãã¢ãžã¥ãŒã«ã®èªã¿åãã«äœ¿çšãããã¹ãæå®ã§ããããã«æãããŸããããã«ãããã³ã³ãã€ã«ã¢ãŒããããŸããŸãªæ¹æ³ã§å€æŽãããå¯èœæ§ããããŸãã-Wl,--no-as-needed
è¿œå ããããšãææ¡ããŠããŸãã ããã«ã¯CLããããŸãïŒ //golang.org/cl/92795ã-finput-charset=UTF-8
--std=c99
-pedantic-errors
äžéããã·ã¥ãŸãã¯äºéããã·ã¥ã®ããããã§äœ¿çšã§ããã³ã³ãã€ã©ããã³ãªã³ã«ã®ãªãã·ã§ã³ã¯å€æ°ãããŸãã ãã¯ã€ããªã¹ãã§ãåæ§ã«ç·©ãã¯ãã§ãã
çŽäº€æ§ã®å ŽåïŒ -framework
ã®æ€çŽ¢ãã¹ã«ãã£ã¬ã¯ããªãè¿œå ãããªãã·ã§ã³ããã§ã«ã«ããŒãããŠãããã©ãããå¿ããŠããŸãã ãããã©ããªéžæè¢ãªã®ããå¿ããŠããŸããŸããã ïŒç§ãèããããšãã§ããå
žåçãªãŠãŒã¹ã±ãŒã¹ã¯/Library/Frameworks
ãããã¯ãAppleãã¢ããªåºæã®ãã¬ãŒã ã¯ãŒã¯ãé
眮ããå Žæã§ãããããã©ã«ãã§ã¯æ€çŽ¢ãããŸãããïŒ
ãŸãã -as-needed
ã¯ããããcgoã§å®å
šã«äœ¿çšã§ããŸããïŒ ãã®ããã°æçš¿ïŒãgccas-neededãã§æåã«èŠã€ããçµæïŒã¯ããããäœçœ®åŒæ°ã§ãããšè¿°ã¹ãŠããŸãããcgoãçµæã®ã³ãã³ãã©ã€ã³ã®ã©ãã«ãã©ã°ãé
眮ãããã«ã€ããŠäœããä¿èšŒãããã©ããã¯ããããŸããã
@andlabsæžãã®ã¯å€§äžå€«ã§ã
#cgo LDFLAGS: -Wl,--as-needed -loptlib -WL,--no-as-needed
ãããã«ããããã®åé¡ã®ãããã¯ã¯ããªãã·ã§ã³ãgo get
ããå®å
šã«äœ¿çšã§ãããã©ããã§ãã
䜿çšããå ŽåïŒ
#cgo !windows pkg-config: --static ${SRCDIR}/vendor/libgit2/build/libgit2.pc
ã³ã³ãã€ã«ã¯æ¬¡ã®ã¡ãã»ãŒãžã§å€±æããŸãïŒ
invalid pkg-config package name: --static
ã³ãŒããèŠããšïŒgo 1.9.4ã®å ŽåïŒãpkg-configåŒæ°ããã¯ã€ããªã¹ãã«ç»é²ããããã«äœ¿çšã§ããç°å¢å€æ°ããªãããã§ãã
@rgburke pkg-configåºåã¯ãä»ã®åºåãšåãFLAGS_ALLOW
å€æ°ãééããŸãã
ãã ãã CGO_LDFLAGS_ALLOW
ããã§ãã¯ããå¿
èŠããããšãã«ã pkg-config -libs
ãCGO_CFLAGS_ALLOW
ããã§ãã¯ããŠããããã§ãã
ã¯ããŒãºããœãŒã¹ãããžã§ã¯ãã§ã¯ãå€æ°ã®Cã©ã€ãã©ãªãéçã«ãªã³ã¯ããŸãã ãããŸã§ã次ã®ããšãè¡ã£ãŠããŸããã
#cgo LDFLAGS:/path/to/one/liblibrary1.a
#cgo LDFLAGS:/path/to/two/liblibrary2.a
etc.
ãã¡ãããããã¯çŸåšèš±å¯ãããŠããŸããã åé¿çïŒ
#cgo LDFLAGS:-L/path/to/one -llibrary1
#cgo LDFLAGS:-L/path/to/two -llibrary2
ãã ãããããã®ãã£ã¬ã¯ããªã®äžéšã«ã¯ãã€ãããã¯ã©ã€ãã©ãªãå«ãŸããŠããããããªã³ã«ãæ··ä¹±ããŸãã å¥ã®ãªãã·ã§ã³ã¯ã httpsïŒ//go-review.googlesource.com/c/go/+/92855ã®èš±å¯ããããååãã®ãªã¹ãã«ã/ããè¿œå ããããšã§ããç¹ã«91è¡ç®ã®å€æŽã¯æ¬¡ã®ãšããã§ãã
re(`[a-zA-Z0-9_\/].*\.(o|obj|dll|dylib|so|a)`), // direct linker inputs: x.o or libfoo.so (but not -foo.o or @foo.o)
åŸè ã®ãªãã·ã§ã³ã§åé¡ã¯è§£æ±ºããŸãããã»ãã¥ãªãã£ãžã®åœ±é¿ã«ã€ããŠã¯ã話ãã§ããŸããã
@mirtchovskiãã®ããã®ãããããããŸãïŒåé¡ã¯.a
ããã¯ã€ããªã¹ãã«ç»é²ãããŠããªãããšã§ãããä»ã®ãªããžã§ã¯ããã¡ã€ã«åœ¢åŒã¯ãã¯ã€ããªã¹ãã«ç»é²ãããŠããŸããïŒ
.aã¯ïŒãã®ãããã®åŸã§ïŒãã¯ã€ããªã¹ãã«ç»é²ãããŠããããããlibsomething.aãã¯æ©èœããŸãããã/ path / to /libsomething.aãã¯æ©èœããŸããã
@ianlancetaylor @rgburkeç§ã¯å®éã«--static
ã§ãŸã£ããåãåé¡ã«ééãããããç§ãïŒ23737ãžãšå°ããŸããã --static
ã¯ã pkg-config
ãå®è¡ããããšããåã«æå¹ãªããã±ãŒãžåã§ã¯ãªãããã§ããããæåŠãããŸãããhttpsïŒ//github.com/golang/go/blob/104445e3140f4468839db49a25cb0182f7923174/src/ cmd / go / internal / work / exec.goïŒL939 -L940ã
å
éšã§ã®è¿
éãªä¿®æ£ã¯ãPKG_CONFIGãpkg-config --static "$@"
å®è¡ããã ãã®ã¹ã¯ãªãããæãããã«ããããš
@ jeddenlea-ããããšãããããŸããïŒ ç§ã¯åé¿çãèŠã€ããããšããŠããŸããããããã«ã€ããŠã¯èããŠããŸããã§ããã
ããã-msse
ãš-msse4.2
ãããããŸãã
ãã®åé¡ã¯ãcgoLDFLAGSã®ã$ {SRCDIR} /file.oãã§çºçããŸããã
ãªã³ã«ãŒå
¥åã§ãããã¬ãŒã³ãã¡ã€ã«åãèš±å¯ããå¿
èŠãããããšã䞻匵ããããšæããŸã
LDFLAGSå
ã®ãã¡ã€ã«
ïŒå°ãªããšã* .aã*ãoãããã³* .soïŒã
çè«çã«ã¯ã-L $ {SRCDIR}ãã§åŠçã§ãã.aã.soãšã¯ç°ãªããŸã
-lnameããè¿œå
ãªã³ã«ã³ãã³ããžã®äœåãªãªããžã§ã¯ããã¡ã€ã«ã¯ããã®ããã«ä¿®æ£ããããšã¯ã§ããŸããã
åé¿çã¯CGO_LDFLAGS_ALLOWãèšå®ããããšã§ãããããã¯éåžžã«é¢åã§ãã
å¥
å¥ã®æ¹æ³ã¯ãfile.oã®ååãfile.sysoã«å€æŽããããšã§ãããç¹å®ã®ç®çã®ããã«
å Žåã䜿çšã§ããŸãã
ãã®ãªãã·ã§ã³ã¯ãç¹å®ã®ãã«ãã¿ã°ã
å«ãŸããŠããŸãïŒ
ãã«ãã¿ã°ã¯ãïŒcgo LDFLAGSããªã¢ã³ãã«ãå«ããã¡ã€ã«ã«é©çšãããŸãïŒããã³
éã¯ãªã
sysoãã¡ã€ã«åã«ä»»æã®ãã«ãã¿ã°ãèšå®ããŸãã
以åã«ãããã€ãããGoããŒãžã§ã³ãç¡èŠãããšã
æ°ç
ãªã³ã«ã«ãã¡ã€ã«ãè¿œå ããããã«ç¹å¥ã«èšèšãããã#cgoLDLIBSã
ã³ãã³ãã©ã€ã³ã
次ã«ãLDLIBSã«å¯ŸããŠããå³å¯ãªã«ãŒã«ãèšå®ã§ããŸãïŒãã¡ã€ã«åã®ã¿ãããã·ã¥ãªãïŒ
ãã¬ãã£ãã¯ã¹ã§èš±å¯ãããŸããïŒ
--std=c99
ããããããããŸãã
-std = c ++ 11
-std =ã ãšæããŸã
ãããããã¯ã€ããªã¹ãã«èŒã£ãŠããŸãïŒ -fopenmp
Gov1.10rc2ã䜿çšããŠbimgããã±ãŒãžããã«ããããšãã«ãšã©ãŒãçºçããŸããã
23:24 ~/go-test
master ms 130 % go get -v github.com/h2non/bimg
github.com/h2non/bimg (download)
github.com/h2non/bimg
go build github.com/h2non/bimg: invalid flag in pkg-config --cflags: -fopenmp
é£ã®åŒæ°ïŒãã¹ïŒãæåŠãããããã -isystem
ããã¯ã€ããªã¹ãã«ç»é²ã§ããŸãã
ãŸãããã®åé¿çã䜿çšããå¿ èŠããããŸããïŒ https ïŒ
以åã¯ïŒ
#cgo linux LDFLAGS: ${SRCDIR}/../../../../path/to/thing/libthing_static.a
ãããŠã«ã·ããããŸããïŒ
#cgo linux LDFLAGS: -L${SRCDIR}/../../../../path/to/thing -lthing_static
.../path/to/thing
ã¯${SRCDIR}
ãŸãã
ãã®ã³ã¡ã³ããè¿œå ããŠããã®åé¡ã解決ããããã«SRCDIR
æ¡åŒµãå¿
èŠãªlibthing.a
åç
§ã®äŸãå«ããŸãã
OSXã§ã¯ãcgoãã©ã°ã®å¶éãä»ããæ°ããäœæãããgo1.9.4ã§ããªã³ã¯å ã®.aã¢ãŒã«ã€ãããªã³ã«ãŒã«å ·äœçã«æ瀺ããŠããŸããïŒïŒããã§ã¯https://github.com/gijit/gi/blob/master/vendor/ github.com/glycerine/golua/lua/lua.go#L10ïŒ
~~~
~~~
æ§ç¯ããããšãããšçæãããŸãïŒ
ããã«ãããgo build -ldflags "-X main.LastGitCommitHash = 30259813c10c0f6b63768b4f35358828e2e29f0b -X main.BuildTimeStamp = 2018-02-09T22ïŒ49ïŒ48 + 0700 -X main.GitBranch = master -X main.NearestGitTag = v0.9.6 -X main.Go = go_version_go1.9.4_darwin / amd64 "-o gigo build github.com/gijit/gi/vendor/github.com/glycerine/golua/luaïŒ#cgo LDFLAGSã®ç¡å¹ãªãã©ã°ïŒ/Users/jaten/go/src/github.com/gijit/gi/vendor/githubã com / glycerine / golua / lua /../../../ LuaJIT / LuaJIT / src / libluajit.amake [2]ïŒ * [ãã«ã]ãšã©ãŒ1make [1]ïŒ [ã€ã³ã¹ããŒã«]ãšã©ãŒ2makeïŒ** [ã€ã³ã¹ããŒã«]ãšã©ãŒ2jaten @ jatens-MacBook-Proã / go / src / github.com / gijit / giïŒãã¹ã¿ãŒïŒ$ã
-L -lã®åé¿çãè©ŠããŸãããã
~~~
~~~
ãããããªã³ã«ã¯å¥ã®å Žæã§åãååã®å¥ã®ã©ã€ãã©ãªã䜿çšã§ãããšèãããªã³ã¯ã¿ã€ã ãšã©ãŒã§ã¯ãªãã©ã³ã¿ã€ã ãšã©ãŒãçºçããŸãã
~~~
å®è¡æ...
dyldïŒæ æ°ãªã·ã³ãã«ã®ãã€ã³ãã«å€±æããŸããïŒã·ã³ãã«ãèŠã€ãããŸããïŒ_luajit_ctypeid
åç
§å
ïŒ/var/folders/6s/zdc0hvvx7kqcglg5yqm3kl4r0000gn/T/go-build615587282/github.com/gijit/gi/pkg/compiler/_test/compiler.test
äºæ³ãããå ŽæïŒ/usr/local/lib/libluajit-5.1.2.dylib
dyldïŒã·ã³ãã«ãèŠã€ãããŸããïŒ_luajit_ctypeid
åç
§å
ïŒ/var/folders/6s/zdc0hvvx7kqcglg5yqm3kl4r0000gn/T/go-build615587282/github.com/gijit/gi/pkg/compiler/_test/compiler.test
äºæ³ãããå ŽæïŒ/usr/local/lib/libluajit-5.1.2.dylib
SIGTRAPïŒãã¬ãŒã¹ãã©ãã
PC = 0x7fff66ff4075 m = 0 sigcode = 1
cgoã®å®è¡äžã«ã·ã°ãã«ãå°çããŸãã
~~~
/usr/local/lib/libluajit-5.1.2.dylibã¯å¿
èŠãªã©ã€ãã©ãªã§ã¯ãããŸããããåçã«ãªã³ã¯ãããŠããŸãã ãããã$ {SRCDIR} /../../../ LuaJIT / LuaJIT / src /libluajit.aã§æå®ããããã®ã§ãªããã°ãªããŸããã
ãããã£ãŠããŸã åé¿çãæ¢ããŠããŸãã
æŽæ°ïŒãããç§ã®makefilesã«è¿œå ãããšããŸãããããã§ãã
ããšã¯ã¹ããŒãCGO_LDFLAGS_ALLOW = "$ {GOPATH} /src/github.com/gijit/gi/vendor/github.com/glycerine/golua/lua/../../../LuaJIT/LuaJIT/src/libluajit.a ";ã
æŽæ°ïŒãããããããšã«ãIanã¯ãããçãæ£èŠè¡šçŸããŒãžã§ã³ã§ååã§ãããšææããŸããã
ãexport CGO_LDFLAGS_ALLOW = "ã*ãa";ã
-Wlã-ãã¬ãŒã ã¯ãŒã¯ãšã¯äœã§ããïŒ ãããAppleãã¬ãŒã ã¯ãŒã¯ã®å ŽåãåŒæ°ãããã®ã§ããããã-Wlã-frameworkãfooãå¿ èŠã§ãã ãã ããAppleãã¬ãŒã ã¯ãŒã¯ã®å Žåã¯ã-frameworkïŒ-WlãªãïŒãåæ§ã«æ©èœããŸãã
1.10rc2ã§ã¯ãgolang.org / x / net / internal / socketã¯Solarisçšã«ãã«ããããªããªããŸããã
$ GOOS=solaris go build golang.org/x/net/ipv4
# golang.org/x/net/internal/socket
ext/src/golang.org/x/net/internal/socket/sys_solaris.go:24:3: //go:cgo_import_dynamic libc___xnet_getsockopt __xnet_getsockopt "libsocket.so" only allowed in cgo-generated code
ext/src/golang.org/x/net/internal/socket/sys_solaris.go:25:3: //go:cgo_import_dynamic libc_setsockopt setsockopt "libsocket.so" only allowed in cgo-generated code
ext/src/golang.org/x/net/internal/socket/sys_solaris.go:26:3: //go:cgo_import_dynamic libc___xnet_recvmsg __xnet_recvmsg "libsocket.so" only allowed in cgo-generated code
ext/src/golang.org/x/net/internal/socket/sys_solaris.go:27:3: //go:cgo_import_dynamic libc___xnet_sendmsg __xnet_sendmsg "libsocket.so" only allowed in cgo-generated code
ïŒããã¯ã¯ãã¹ãã«ãã§ãããããããã§ã¯cgoã¯çºçããŸããããããã¯åé¡ã§ã¯ãªããšæããŸããïŒ
éçlibãã¡ã€ã«ãžã®ãã«ãã¹ãæå®ããŠãªã³ã¯ããããšã¯ã§ããŸããã
#cgo LDFLAGS: /usr/local/lib/libsecp256k1.a
åé¿çã¯ãããŸãã:(
@piotrnar CGO_LDFLAGS_ALLOW='.*\.a$'
@ianlancetaylor ãããããšãïŒ
ããã¯ç§ã«ãšã£ãŠã¯åé¡ãããŸããããç§ã®ãããžã§ã¯ãã䜿çšããä»ã®ãã¹ãŠã®äººã«ãgo 1.9.4ã§CGO_LDFLAGS_ALLOW='.*\.a$'
ãå®è¡ããããã«æ瀺ããã®ã¯å°ãå±éºãªããã§ãã
ããŸãããã°ãå°æ¥çã«ã¯ããè¯ãïŒç®±ããåºããŠïŒè§£æ±ºçãããã§ãããã
@piotrnarã¯ãããã®åé¡ã®ãã€ã³ãã¯ããã¯ã€ããªã¹ãã«å ããå¿ èŠã®ãããã¹ãŠã®å€æŽãåéããããšã§ãã 確ãã«ã.aãã¡ã€ã«ããã¯ã€ããªã¹ãã«ç»é²ããŸãã
-fstack-protector
ãè¿œå ããŠããã ããŸããïŒ
ããããšã ïŒïŒ
ãã¯ã€ããªã¹ã-static-libstdc++
ããé¡ãããŸãã
ããã±ãŒãžgithub.com/flynn/hidã¯ãããŒãŠã£ã³ã®LDFLAGSãä»ããŠ-fconstant-cfstrings
ãæž¡ãããã1.9.4ã§ãã«ãã§ããŸããã
ãããã®ãªã³ã«ãŒãã©ã°ããã¯ã€ããªã¹ãã«è¿œå ããŠãã ãã
-Wlã-Bstatic
-Wlã-Bdynamic
-Wlã-start-group
-Wlã-end-group
æ£çŽãªãšããïŒçŸæç¹ã§ã¯ãæªããªãã·ã§ã³ã®ãã©ãã¯ãªã¹ãã¯ããã®ãããªåºç¯ãªãã¯ã€ããªã¹ãããã圹ç«ã€ããã«æãããŸãã
ä»åŸããã©ãã¯ãªã¹ãã¯ãå®å šã§ãªãå¯èœæ§ã®ããæ°ããã³ã³ãã€ã©ãªãã·ã§ã³ãå°å ¥ãããå Žåããã¹ãŠã®GoãªãªãŒã¹ããã®ãªãã·ã§ã³ã«å¯ŸããŠè匱ã«ãªãããšãæå³ããŸãã ãã®çš®ã®æ»æããå®å šã«ä¿è·ã§ããç¯å²ã§ããã¯ã€ããªã¹ãã«ããå¿ èŠããããšæããŸãã
ããã€ãã®æ°ããæœåšçã«å®å šã§ãªãã³ã³ãã€ã©ãªãã·ã§ã³ãå°å ¥ãããŸãã
ç§ã¯ãŸã ãã©ãã¯ãªã¹ããæãŸãããšæããŸãã ããã¯äž¡æ¹ã®éãåãããã§ãã ãã¯ã€ããªã¹ãã«ç»é²ããããŸã§æ°ããã³ã³ãã€ã©ãªãã·ã§ã³ãå©çšã§ããªãå Žåã¯ãæ°ããCã³ã³ãã€ã©ããã©ã°ãè¿œå ãããã³ã«æ°ããGoãªãªãŒã¹ãå¿ èŠã«ãªãããã§ã...
@glycerineãã®ãããç°å¢å€æ°ããšã¹ã±ãŒãããããšããŠæäŸããŠããŸãã ãã¯ã€ããªã¹ããæŽæ°ããããŸã§ããã€ã§ãç°å¢å€æ°ã䜿çšã§ããŸãã
åé¡ã¯ãçŽç²ã«ãgogetããä»ããŠã€ã³ã¹ããŒã«ããããããžã§ã¯ãã§ã¯ç°å¢å€æ°ãæ©èœããªãããšã§ãã
å¥ã®ã¢ãããŒãïŒgoãããžã§ã¯ããšããååã®ãããã¬ãã«ãç°å¢å€æ°ãèšå®ã§ããããã«ããŸãã
次ã«ãã€ã³ã¹ããŒã«ãããŠãããã©ââã€ããªã®ãgo buildããããžã§ã¯ãã¯ãäŸåãããããžã§ã¯ããä»»æã®ããšãå®è¡ããã®ãé²ããªãããããšãã°ALLOWæ£èŠè¡šçŸã䜿çšããŠãå¿ èŠãªãã©ã°ããã¯ã€ããªã¹ãã«ç»é²ã§ããŸãã
@glycerineãããã©ã®ããã«æ©èœãããç解ã§ããŸããã ãã ãããã¯ã€ããªã¹ãã«ç»é²ããå¿ èŠã®ãããªãã·ã§ã³ãåéããããšãç®çãšãããã®åé¡ã«ã€ããŠè°è«ããã®ã§ã¯ãªãããã®ææ¡ã«å¯ŸããŠå¥ã®åé¡ãéãããšããå§ãããŸãã
ä»ã®ãšããããã¯ã€ããªã¹ããå®è£ ããããšã«ããŸããã ããã¯å°æ¥å€æŽããããããããŸãããããã®åé¡ã¯ãããè°è«ããå Žæã§ã¯ãããŸããïŒæ°ãããã®ãæåºããŠãã ããïŒã ããã§ãã¯ã€ããªã¹ãã«ç»é²ããå¿ èŠããããªãã·ã§ã³ãåéããããšããŠããŸããããã以äžã®ãã®ã¯ãããŸããã
ããããšãããããŸããã
#cgo CFLAGSã®ç¡å¹ãªãã©ã°ïŒ-pipe
go build github.com/zchee/docker-machine-driver-xhyve/vendor/github.com/zchee/libhyperkit: invalid flag in #cgo CFLAGS: -fno-common
ããã«ã¡ã¯ããããã®ãã©ã°ããã¯ã€ããªã¹ãã«è¿œå ããŠãã ããã-Wlã-enable-new-dtags
ã¬ã·ã/ qtããã«ãã§ããŸãã
go build github.com/therecipe/qt/core: invalid flag in #cgo CFLAGS: -pipe
èš±å¯ããããã©ã°ã«.*\.a
ãè¿œå ãããšäŸ¿å©ã§ãã
https://github.com/golang/go/issues/23807ãåç
§ããŠ
--mms-bitfieldsãå¿ èŠãªããã§ãã
ãã¹ãŠã®ã³ã³ãã€ã©ïŒããã³ãªã³ã«ãªã©ïŒãªãã·ã§ã³ãäœããã®çç±ã§ååšãããã¯ã€ããªã¹ãã¯ç¹ã«å±éºãšèŠãªããããã®ãé€ããŠããããã¹ãŠãã«ããŒããå¿ èŠããããšæ³å®ããã®ã¯åççã§ã¯ãããŸãããïŒ æããã«ãããã¯äœçŸãããããã¯ã€ããªã¹ãã®ä¿å®ã¯é¢çœããããŸããããããã決å®ãããéã§ããå Žå...
ãã¹ãŠã®ã³ã³ãã€ã©ïŒããã³ãªã³ã«ãªã©ïŒãªãã·ã§ã³ãäœããã®çç±ã§ååšãããã¯ã€ããªã¹ãã¯ç¹ã«å±éºãšèŠãªããããã®ãé€ããŠããããã¹ãŠãã«ããŒããå¿ èŠããããšæ³å®ããã®ã¯åççã§ã¯ãããŸãããïŒ æããã«ãããã¯äœçŸãããããã¯ã€ããªã¹ãã®ä¿å®ã¯é¢çœããããŸããããããã決å®ãããéã§ããå Žå...
ããã¯ãããã瀟å ã§è°è«ãããŠããŸãããããããªãªãŒã¹ã§ã¯é©ãã¹ãããšãããããŸãããã³ã³ãã€ã©ãã©ã°ã€ã³ã®ç©Žãå¡ãããã«åé¡ã®ãããã©ã°ãæåã«ãã©ãã¯ãªã¹ãã«ç»é²ããããªã¹ããäœæãããå¯èœæ§ã®ãã1.10ã«å¯Ÿå¿ãããã¯ã€ããªã¹ãã·ã¹ãã ãæå¹ã«ãªã£ãŠãããšäºæ³ããŠããŸããã RCäžã«ã¢ããã äœåãªenvå€æ°ãäžéšã®ãã«ãã·ã¹ãã ã«çµ±åããã®ã¯å®çšçã§ã¯ãããŸãããããã«ããã人ã ã1.9.3ã«æ»ã£ãŠå®å šã«ä¿è·ãããªããªããå®å šã«éå¹æã«ãªãããšãããããŸããã
ã¯ã€ã«ãã«ãŒããšæ£èŠè¡šçŸã§ãã£ã±ãã®ãã¯ã€ããªã¹ããå€è£ ãããã©ãã¯ãªã¹ãã«ãªãã®ã¯ã©ã®æç¹ã§ããïŒ
gomobileã¯ãã©ã°-fobjc-arc-fmodules-fblocksã䜿çšããŸãã
https://github.com/golang/mobile/blob/5704e182c7003d4b7e94c23373f3fad4e5ceb25a/bind/genobjcw.go#L319
https://github.com/augustoroman/v8ã¯-pthreadã䜿çšããŸãïŒ
-flto
次ã®ã¢ããããŒããåºããŸã§ã®æŠèŠã®ããã«ããã®å·ã®äžéšã«ãæ¿èªæžã¿ãã®ãªã¹ããã¢ã«ãã¡ãããé ã«äžŠã¹ãŠããã ããŸããïŒ CLãæåºãã人ã¯èª°ã§ãããããé«ãè©äŸ¡ãããããããŸããã
ä»ïŒç¹ã«ãã®åé¡ãååšããã®ã§ïŒç§ã¯äœãäºè£ãããæããŠããã®ãã«ã€ããŠãã£ãšå¿é ããŠããŸãïŒæåã«ç§ãã¡ã«çžè«ããã«äººã ããããžã§ã¯ãããåé€ãããã«ããã©ã°ã¯äœã§ããïŒcgoïŒãããŠã²ããŠã¯GoïŒãå£ããŠãããšãã誀ã£ã信念ã圌ãã«äžããŸããã°ãããããªã°ã¬ãã·ã§ã³ãããããã®éçºè ã¯åœŒããäœãããŠããã®ãããããŸããã ïŒSïŒãæªãããããªãããã£ãŠãããšããªããäŸåXYZãéãäžã€ã§ãã®ã§ãæããã«ãç§ã®ããã±ãŒãžãééã£ãæ§ç¯ããŠãããããããŸããïŒïŒ
ããã®åé¡ãåç §ããªã³ã¯ã®äžéšã«ã¯ããã®åé¡ã«ã¯ãŸã é©åã§ã¯ãªããããå€ãã®ãã©ãã¯ãªã¹ãã«ç»é²ããããã©ã°ããªã¹ããããŠããŸãã ç§ã¯ãŸããç¹ã«éè€ãé²ãããã«ããã¹ã¿ãŒãªã¹ããäžçªäžã«çœ®ãããšãä¿èšŒããŸãã 人ã ã¯ãŸã éçã¢ãŒã«ã€ãã®åé¡ã«çŽé¢ããŠããŸã...
ããã¯ãgccãšclangèªäœããaïŒç§ãã¡ã®ããã«æ±ãä»äºãããbïŒå°æ¥ã®å€æŽã«å¯ŸããŠå埩åããããcïŒå¥ã®äººããªãã«ã§ããªããªãã·ã§ã³--no-unsafe-options
ãæäŸã§ãããããããã¯æäŸãã¹ããã©ããçåã«æããŸããªãã·ã§ã³ïŒäžåºŠããã«ãããšãããã«ãããæéïŒã ãããšãã go get
ã¯ããã®çš®ã®ãã£ã«ã¿ãªã³ã°ãå¿
èŠãªæåã§å¯äžã®ç¶æ³ã§ããïŒ
ãã¯ã€ããªã¹ãã䞻匵ããå Žåãå ¥åãåŸ ã€ã®ã«é 延ãå¿ èŠãªçç±ãããããŸããã
ã³ã³ãã€ã©ã¯ãã©ã°ãææžåããŸãã 誰ããäžã§èšã£ãããã«ãããããã®æã¯çç±ã®ããã«ããã«ãããŸãã
䜿çšæ³ã«é¢ãããŠãŒã¶ãŒã®å ¥åãåŸ ã€ããšã«ãããµã³ããªã³ã°ã¯ã代衚çã§ã¯ãªããä¿¡é Œæ§ãäœããå°æ¥ãçŸåšå®çŸãŸãã¯ãµã³ããªã³ã°ãããŠããªããã©ã°ã®å¿ èŠæ§ãèŠã€ããç§ãã¡å šå¡ã«ãšã£ãŠèŠçãªçµæãçã¿åºããŸãã
ããã«ããã®æé ã§ç䌌ã³ãŒãã§ãã¯ã€ããªã¹ããå°åºããã®ã¯ç°¡åãªããã§ãã
ãã¹ãŠã®C / C ++ã³ã³ãã€ã©ãšãµããŒããããŠããåã³ã³ãã€ã©ã®ããŒãžã§ã³ãäžèŠ§è¡šç€ºããŸãã
ã³ã³ãã€ã©ããŒãžã§ã³ããšã«ãããã¥ã¡ã³ãããå
¥æã§ãããã¹ãŠã®ãã©ã°ãäžèŠ§è¡šç€ºããŸãã
ãã©ã°ããšã«ãããããã¯ã€ããªã¹ããŸãã¯ïŒé衚瀺ã®ïŒãã©ãã¯ãªã¹ãã«å
¥ããããšã決å®ããŸãã
èç©ããããã¯ã€ããªã¹ãã®ãã¹ãŠã®ãã©ã°ã«ãã¯ã€ããªã¹ãã³ãŒããè¿œå ããŸãã
1ã€ïŒãŸãã¯2ã€ïŒã®è匱ãªãã©ã°ããã©ãã¯ãªã¹ãã«èŒããã®ãšæ¯èŒããŠãããã¯ãŸã ã¯ã¬ã€ãžãŒã ãšæããŸãïŒreductio ad absurdumã«éäžããŠããŸãïŒã ããããçé¢ç®ãªè©±ãšããŠããã¯ã€ããªã¹ãã䞻匵ããå Žåãäžèšã®ã¢ã«ãŽãªãºã ã¯æ£ãããåœãŠæšéãæé€ããé æ»ãªãå®è¡ã§ããŸãã ãããããå¿ èŠãªè¿œå ã®ãŠãŒã¶ãŒå ¥åã¯ããµããŒãããã³ã³ãã€ã©/ããŒãžã§ã³ã®ç¯å²ã確ç«ããããšã ãã§ãã
ããã§éèŠãªå¯äžã®ãªãã·ã§ã³ã¯ã.goãã¡ã€ã«ã®#cgo CFLAGS
ãŸãã¯#cgo LDFLAGS
è¡ã«é
眮ããã®ã«åççãªãªãã·ã§ã³ããŸãã¯pkg-config --cflags
åŒã³åºãããåºåããã®ã«åççãªãªãã·ã§ã³ã§ãã pkg-config --libs
ã ããã¯ãã³ã³ãã€ã©ãªãã·ã§ã³ã®ç·æ°ã®å°ããªãµãã»ããã§ãã
ãŸããgccãšclangã®ãªãã·ã§ã³ã®æ°ãå€§å¹ ã«éå°è©äŸ¡ããŠããŸãã ãœãŒã¹ã³ãŒãã§ãã£ãŠãããããããã¹ãŠææžåãããŠãããšã¯æããŸãããå®è¡æã«çæããããã®ããã£ããšããŠããé©ãããšã§ã¯ãããŸããã ãŸããã¿ãŒã²ãããããªãã«ã«äŸåãããªãã·ã§ã³ããããããããŸãã...ïŒããã¯ãå®å šãªãã©ã°ã®æ£èŠãªã¹ããgccããã³clangéçºè ãç¶æããå¿ èŠããããšç§ãèšãçç±ã§ããããŸããïŒ
ãã ããåã ã®ãã©ã°ã®ãããé©çšã®é 延ã«ã€ããŠã¯äœãèšããŸããã
@anacrolix OverïŒ23672ã§ã -Wl,-framework
ããã¯ã€ããªã¹ãã«ç»é²ããå¿
èŠããããšææ¡ãããŸããã ãã ããéåžžã -framework
ã«ã¯ãªãã·ã§ã³ããããŸãã æ£ç¢ºãªäœ¿çšäŸã瀺ããŠããã ããŸããïŒ ããããšãã
ãŸããgccãšclangã®ãªãã·ã§ã³ã®æ°ãå€§å¹ ã«éå°è©äŸ¡ããŠããŸã
@andlabsIanã¯gccéçºè ã§ãã 圌ã¯ããç¥ã£ãŠãããšç¢ºä¿¡ããŠããŸãã
å€æŽhttps://golang.org/cl/93836ã¯ãã®åé¡ã«èšåããŠããŸãïŒ cmd/go: add options to security whitelist
äžèšã®ãã¹ãŠã®ãªãã·ã§ã³ãã«ããŒããŠãããšæãCLãéä¿¡ããŸããïŒ https ïŒ
åé¡ãçºçããå ŽåããŸãã¯ãŠãŒã¶ãŒã䜿çšããŠãããªãã·ã§ã³ã§ã«ããŒãããŠããªããã®ãç¥ã£ãŠããå Žåã¯ããç¥ãããã ããã ããããšãã
LLVM Goãã€ã³ãã£ã³ã°ã®èŠ³ç¹ããã次ã®ãªã³ã«ãŒãªãã·ã§ã³ããã¯ã€ããªã¹ãã«å«ãŸããŠããå¿ èŠããããŸãã
-Wl,-search_paths_first
-Wl,-headerpad_max_install_names
ãªã³ã«ãªãã·ã§ã³ã¯ã³ãã³ãllvm-config --ldflags
ã«ãã£ãŠçæãããåºåã«å«ãŸããŸãã
åç §ïŒ https ïŒ
@ magical @ glycerineã«å¿çããŠããŸãã= P
@ianlancetaylorããããã§æ¥ãã§ãããšæããããŠããå Žåã¯ãè©«ã³ããŸã
@andlabsãããããããªãã
@ianlancetaylorãã®CLã䜿çšããŠããSolarisçšã®golang.org/x/net/internal/socketããã«ãã§ããŸããã ãšã©ãŒãããã©ã®ãã©ã°ãèŠæ±ããå¿ èŠããããã¯ããããŸããã
$ ./bin/go version
go version devel +09dc376990 Tue Feb 13 20:58:04 2018 -0800 darwin/amd64
$ GOOS=solaris ./bin/go get -u golang.org/x/net/ipv4
# golang.org/x/net/internal/socket
../../ext/src/golang.org/x/net/internal/socket/sys_solaris.go:24:3: //go:cgo_import_dynamic libc___xnet_getsockopt __xnet_getsockopt "libsocket.so" only allowed in cgo-generated code
../../ext/src/golang.org/x/net/internal/socket/sys_solaris.go:25:3: //go:cgo_import_dynamic libc_setsockopt setsockopt "libsocket.so" only allowed in cgo-generated code
../../ext/src/golang.org/x/net/internal/socket/sys_solaris.go:26:3: //go:cgo_import_dynamic libc___xnet_recvmsg __xnet_recvmsg "libsocket.so" only allowed in cgo-generated code
../../ext/src/golang.org/x/net/internal/socket/sys_solaris.go:27:3: //go:cgo_import_dynamic libc___xnet_sendmsg __xnet_sendmsg "libsocket.so" only allowed in cgo-generated code
@calmhã¯ãã golang.org/x/netãå€æŽããŠä¿®æ£ããå¿ èŠããããšæããŸãã ããã¯ãã§ã«å€ãã®å éšã®è©³çŽ°ã«äŸåããŠãããç§ãã¡ã¯ãããè¡ãæ¹æ³ãå€ããå¿ èŠããããšæããŸãã
@calmhå®éã®Solarisã·ã¹ãã ã§https://golang.org/cl/94015ããã¹ãã§ããŸããïŒ
å€æŽhttps://golang.org/cl/94015ã¯ãã®åé¡ã«èšåããŠããŸãïŒ internal/socket: rework Solaris reliance on syscall package
@rsc @ianlancetaylor @anacrolix -Wl,-framework
ãã©ãããæ¥ãŠããã®ãããããŸãã
ç¹å®ã®åç
§ïŒ https://gitlab.gnome.org/GNOME/glib/blob/master/glib-2.0.pc.in#L14 @INTLLIBS@
ååŸ-Wl,-framework -Wl,CoreFoundation
ããhttpsïŒ//ã§gitlab .gnome.org / GNOME / glib / blob / master / m4macros / glib-gettext.m4ïŒL143
ä»ã®ããŸããŸãªpkg-configãã¡ã€ã«ã«ã¯ä»ã®-Wl,-framework
ã€ã³ã¹ã¿ã³ã¹ããããŸãã ããã€ãã¯ïŒäžèšã®ããã«ïŒãããžã§ã¯ãèªäœã®äžéšã§ãããããã€ãã¯Homebrewã«ãã£ãŠæ³šå
¥ãããŸãã çŸåšã®ç§ã®ã·ã¹ãã ã§ã¯ãlibcdioãšSDLã®äž¡æ¹ã-Wl,-framework,FrameworkName
䜿çšããŠããããšãããããŸãã ïŒã€ãŸããã¯ãã -Wl,-framework -Wl,FrameworkName
ãš-Wl,-framework,FrameworkName
äž¡æ¹ãpkg-configãã¡ã€ã«ã«ãããŸããå³ãåç
§ããŠãã ãããïŒ
å€æŽhttps://golang.org/cl/94018ã¯ãã®åé¡ã«èšåããŠããŸãïŒ cmd/compile: permit go:cgo_import_dynamic anywhere
@calmhhttpsïŒ//golang.org/cl/94018ã§å¥ã®ã¢ãããŒããè©ŠããŠããŸãã
@andlabsããããšãã
ç§ã¯SDLãéçã«ãªã³ã¯ããŠãããpgkconfigã«ã¯-Wl,--no-undefined
ãšããªããã»ããµå®çŸ©ãå«ãŸããŠããŸãã
ãã¯ã€ããªã¹ãã®äžã«ãã©ã°ãè¿œå ããŠãcgoemitterããã±ãŒãžã䜿çšãããããžã§ã¯ããã³ã³ãã€ã«ã§ããããã«ããå¿ èŠããããŸãã
go build github.com/supermock/cgoemitter-demo/xïŒ#cgo LDFLAGSã®ç¡å¹ãªãã©ã°ïŒ-Wlã-unresolved-symbols = ignore-all
äºåã«ã©ããããããšãããããŸãã
CLãå床æŽæ°ããŸãã
ãã®åé¡ã説æããwikiããŒãžãhttps://golang.org/wiki/InvalidFlagã«è¿œå ãããšã©ãŒã¡ãã»ãŒãžããŠãŒã¶ãŒã«wikiã瀺ãããã«CLãæŽæ°ããŠããŸãã
å€æŽhttps://golang.org/cl/94158ã¯ãã®åé¡ã«èšåããŠããŸãïŒ doc: add note about invalid flag errors to 1.10 release notes
invalid flag in #cgo LDFLAGS: -O3
å€æŽhttps://golang.org/cl/94655ã¯ãã®åé¡ã«èšåããŠããŸãïŒ [release-branch.go1.10] doc: add note about invalid flag errors to 1.10 release notes
å€æŽhttps://golang.org/cl/94675ã¯ãã®åé¡ã«èšåããŠããŸãïŒ [release-branch.go1.10] cmd/compile: permit go:cgo_import_dynamic anywhere
å€æŽhttps://golang.org/cl/94676ã¯ããã®åé¡ã«ã€ããŠèšåããŠããŸãïŒ [release-branch.go1.10] cmd/go: add options to security whitelist
以äžãè¿œå ã§ããå Žåã¯ããã®åé¡ãåãåããŸã
go build github.com/andlabs/ui: invalid flag in #cgo LDFLAGS: -mmacosx-version-min=10.8
@ bgk-é©çšããããããã¯ããã«å¯ŸåŠããŸãã çŸåš1.10ã«ã¢ããã°ã¬ãŒãã§ããªãå Žåã¯ã1.9.5ãçºçãããã©ããã確èªããã®ãåŸ ã€ããšããå§ãããŸãã
1.10ã§invalid pkg-config package name: --static
åé¡ãä¿®æ£ããå¿
èŠããããŸããïŒ èªäœããææ°ããŒãžã§ã³ããã«ããŠã³ããŸãããããŸã 衚瀺ãããŠããŸãã
â ~ go version
go version go1.10 darwin/amd64
...
â ~ go build
...
go build github.com/flier/gohs/hyperscan: invalid pkg-config package name: --static
@ ptoomey3 ïŒ
1.9.5ã®ããã«åéããŸãã
ç§ã¯XYåé¡ãé¿ãããããç§ãããŠããããšãå®å
šã«èª¬æããŸãã -buildmode=c-shared
ã䜿çšããŠpostgresqlæ¡åŒµæ©èœãäœæããŠããŸãã
postgresqlã®Cæ¡åŒµæ©èœãäœæããããã®ããã¥ã¡ã³ãã«ã¯ãå ±æãªããžã§ã¯ããæ§ç¯ããæ¹æ³ãšããŠæ¬¡ã®ãããªãã®ããããŸãã
cc -fPIC -c foo.c
cc -shared -o foo.so foo.o
ããã§ããœãŒã¹ã³ãŒãã«#cgo LDFLAGS: -shared
ãè¿œå ããŸããã æè¿ïŒgo1.10ïŒã§ãã«ããåæ¢ãããŸã§æ©èœããŸããïŒ
invalid flag in #cgo LDFLAGS: -shared
ã¡ããã©1.10ã«è¡ããããã«ééããŸããïŒ
invalid flag in #cgo LDFLAGS: -Wl,-static
ããã¯gccãªã³ã«ãŒãã©ã°ã§ããããªã³ã¯ã©ã€ã³ã®ãã®ãªãã·ã§ã³ã®åŸã«éçãªã³ã¯ã匷å¶ããŸãã
@spackardèšé²ã®ããã«ãããã¯ãã®ãªãã·ã§ã³ãæå³ãããã®ã§ã¯ãããŸããã ããªãã¯-Bstatic
èããŠããŸãã -static
ãªãã·ã§ã³ã¯ã -l
ãªãã·ã§ã³ãæºããããã«ãå
±æã©ã€ãã©ãªãæ€çŽ¢ããªãããã«ãªã³ã«ã«æ瀺ããŸãã -static
ã¯å®äœçœ®ãªãã·ã§ã³ã§ã¯ãããŸããã ã³ãã³ãã©ã€ã³ã®ã©ãã«è¡šç€ºããããã¯é¢ä¿ãããŸããã
@ianlancetaylorããªãã¯äœçœ®ã«ã€ããŠæ£ããã§ãã ããã¯ãéçãªã³ã¯ã匷å¶ããæ¹æ³ã§ãã èšé²ã®ããã«ããããCGO_LDFLAGS_ALLOW
ã«è¿œå ããããšã¯æ©èœããŸãã
ç§ã¯åãåé¡ãæ±ããŠããŸã
invalid flag in #cgo CFLAGS: -m32
ããã-O3ã-static-libgccã-static-libstdc ++ã§ãããããŸã
-O3ïŒ
#cgo LDFLAGSã®ç¡å¹ãªãã©ã°ïŒ-O3
-static-libgccïŒ
#cgo LDFLAGSã®ç¡å¹ãªãã©ã°ïŒ-static-libgcc
-static-libstdc ++ïŒ
#cgo LDFLAGSã®ç¡å¹ãªãã©ã°ïŒ-static-libstdc ++
ããŒãã³ãŒããããéçãã¯ã€ããªã¹ãã䜿çšããããšã¯æªãèãã§ããããããã次ã®ãããªããã€ãã®ããã©ã«ãèšå®ã§æ§æãã¡ã€ã«ã䜿çšããå¿ èŠããããŸãã
$ GOROOT / bin / cgo.cfg
[ãã¯ã€ããªã¹ã]
ãããããããã
..ã
ã«ã¹ã¿ãã€ãºã§ããããã«
@kruglinskiCGO_CFLAGS_ALLOWç°å¢å€æ°ãšãã®ä»²éã䜿çšããŠã«ã¹ã¿ãã€ãºã§ããŸãã
@ianlancetaylor
ç³ãèš³ãããŸããããç§ã¯ããã«ã€ããŠèŠéããŸãã:-)ç¥ã£ãŠãããšãå€ãã®äººãèããŠããŸãïŒ
-Wl,-z,relro
ãªã³ã«ãªãã·ã§ã³-Wl,--subsystem,windows
ãšã³ã³ãã€ã©ãªãã·ã§ã³-mwindows
äž¡æ¹ããããŸããã
gomobile / gobindã«ã¹ã¿ã³ãã¢ãã³ãã€ã³ãã£ã³ã°ãçæãããããšããŠããŸãã ãã®äœæ¥ã®äžéšã«ã¯ãCGO_ * FLAGSç°å¢å€æ°ã#cgoãã£ã¬ã¯ãã£ãã«å€æããããšãå«ãŸããŸããããã«ãããããã«ããã€ãã®ãã©ã°ãæããã«ãªããŸããã
ãã
-isysroot
-mios-simulator-version-min =
-miphoneos-version-min =
-ç®æš
--sysroot
-gcc-ããŒã«ãã§ãŒã³
ãã
æåŸã®-gcc-toolchainãé€ããŠããã¯ã€ããªã¹ãã«å®å šã«è¿œå ã§ãããšæããŸãã
macOSã§CGO_LDFLAGS_ALLOW
ã䜿çšããã«Goãã€ã³ãã£ã³ã°ãæ§ç¯ããã«ã¯ã次ã®ãã©ã°ãå¿
èŠã§ãã
-Wl,-undefined,dynamic_lookup
zchee / libhyperkitããã®ããå€ãã®CFLAGS
ïŒ
-fmessage-length=152
-fdiagnostics-show-note-include-stack
-fmacro-backtrace-limit=0
v8workerã¯ãMac OS Xã§ã¯-stdlib=libstdc++
ãå¿
èŠã§ãã
CL 103156 Go1.9.5ã§OK
å€æŽhttps://golang.org/cl/103135ã¯ãã®åé¡ã«èšåããŠããŸãïŒ [release-branch.go1.9] cmd/go: add options to security whitelist
ãªã¹ãã«è¡šç€ºãããŸããã§ãããlibtoolããã¯ã€ããªã¹ãã«ç»é²ã§ããŸãã
invalid flag in #cgo LDFLAGS: -I/usr/local/share/libtool
@PassKit -I
ã¯ïŒãªã¹ãã«ããïŒcflagã§ãããldflagã§ã¯ãããŸããããªãldflagã«å
¥ããã®ã§ããïŒ
ããå€ãã®ãã¯ã€ããªã¹ããªã¯ãšã¹ããåéããããã«å床éããŸãã
ïŒ24703ãã
CFLAGS: -fno-plt
ãã®æç¹ã§ã人æ°ã®ããããã±ãŒãžã®ãã«ãã«å€±æããããããŸã å ±åãããŠããªãå Žåã«ã®ã¿ã1.9ããã³1.10ãªãªãŒã¹ãã©ã³ããæŽæ°ããããšã決å®ããŠãåé¡ãªããšæããŸãã ãã¹ãŠã®ã©ã³ãã ãªãªãã·ã§ã³ãããã¯ããŒããç¶ããå¿ èŠã¯ãªããšæããŸãã ãããã1.11ã®ãããã«è¿œå ããã ãã§ãã ãã®å·ã§è¿œè·¡ããå Žåã§ããä»ã®å Žæã§è¿œè·¡ããå Žåã§ããç§ã¯æ°ã«ããŸããã
sgtm
@AlexRouSgç§ã®åé¡ã¯ãã®ã©ã€ãã©ãªã«é¢é£ããŠãããçŸåšåé¿çãšããŠäœ¿çšããŠããldflagãšããŠã-Iãããã¯ã€ããªã¹ãã«ç»é²ããããšãæšå¥šããŠããŸãã https://github.com/miekg/pkcs11/issues/63
é ããŠç³ãèš³ãããŸãããããããã1.9.5ãŸãã¯1.10.2ã§ãã¯ã€ããªã¹ãã«ç»é²ãããã°çŽ æŽããããšæããŸã
CXXFLAGS: -F/Users/user/Qt/5.10.1/clang_64/lib
CFLAGS: --sysroot=/Users/user/android-ndk-r14b/sysroot
CFLAGS: -mfloat-abi=softfp
CFLAGS: -fno-builtin-memmove
CFLAGS: -mthumb
CFLAGS: -fobjc-nonfragile-abi
CFLAGS: -fobjc-legacy-dispatch
CFLAGS: -fno-keep-inline-dllexport
CXXFLAGS: -mthreads
CFLAGS: -Wp,-D_FORTIFY_SOURCE=2
CFLAGS: --param=ssp-buffer-size=4
CFLAGS: -mfloat-abi=hard
CFLAGS: -fvisibility-inlines-hidden
CFLAGS: -mfpmath=sse
CFLAGS: -fasynchronous-unwind-tables
CFLAGS: -feliminate-unused-debug-types
CFLAGS: -marm
CFLAGS: -mabi=aapcs-linux
CFLAGS: -mthumb-interwork
ãš
LDFLAGS: -headerpad_max_install_names
LDFLAGS: -Wl,-syslibroot,/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk
LDFLAGS: -Wl,-rpath,@executable_path/Frameworks
LDFLAGS: --sysroot=/Users/user/android-ndk-r14b/platforms/android-16/arch-arm/
LDFLAGS: -Wl,-rpath-link=/Users/user/Qt/5.10.1/android_armv7/lib
LDFLAGS: -Wl,--allow-shlib-undefined
LDFLAGS: -Wl,-e,_qt_main_wrapper
LDFLAGS: -Wl,-O1
LDFLAGS: -Wl,-rpath-link,/opt/Qt/5.10.0/gcc_64/lib
LDFLAGS: -Wl,-s
LDFLAGS: -Wl,-subsystem,console
LDFLAGS: -mthreads
LDFLAGS: -rdynamic
LDFLAGS: -mfloat-abi=hard
åãã£ãŠæè¬ããŸãã
@therecipeãããã1.11ã«è¿œå ã§ããŸãã ãããã1.9.5ãŸãã¯1.10.2ã®å ŽåïŒã©ã®ããã±ãŒãžãããããå¿ èŠãšããŸããïŒ
@ianlancetaylorãããã¯ãã¹ãŠhttps://github.com/therecipe/qtã®ããŸããŸãªã¿ãŒã²ããã«å¿
èŠã§ã
äžåºŠã«ãã¯ã€ããªã¹ãã«ç»é²ããªããŠã倧äžå€«ã§ãããã©ããèªåã§ç®¡çããå¿
èŠããããæããŠãã ããã
ç§ã¯ããã圌ãèªèº«ã®Qtããã±ãŒãžã§ãããšæšæž¬ããã€ããã§ããããã¯ååã«ç¢ºç«ãããã®ã«ååå€ããšç§ã¯ç¥ã£ãŠããŸãã ãããããã§
èšãããŠããããšïŒ
LDFLAGS
äžéšã¯ã -Wl,
ãã¬ãã£ãã¯ã¹ãªãã§ãã§ã«ãã¯ã€ããªã¹ãã«ç»é²ãããŠããŸãããïŒ-e
ã¯Goã«åœ±é¿ããŸããïŒ-F
ãã§ã«ãã¯ã€ããªã¹ãã«ç»é²ãããŠããŸãããïŒ ã¿ãŒã³ã¢ãŠãã¯ãç§ãèšåããŠãããªãã·ã§ã³ãã¹ãäžèšã-D
ã-Wp
å®ã£ãŠããã®ã§ããïŒ ãã¯ããå®çŸ©ããçç±ã¯ãããŸãããããªããã»ããµã®ã¿ã«ãããŸããïŒ ããã§Qtãã©ã®ãããªããŒãã¥ãŒãè¡ãã®ãããããŸãã...ãããšããããã¯QtèªäœãæäŸããæšå¥šãªãã·ã§ã³ã®ãªã¹ãã§ããïŒ@andlabsãã€ãåæ¢ããå¿ èŠããããšããçç±ã ãã§ãä»ããåæ¢ããŸãããïŒ ããããããããååã«åœ¹ç«ã€ãšæãããå Žåã¯ãããããããã¯ããŒããç¶ããŠãåé¡ãããŸããã
@andlabsã¯ãããããã¯ãã¹ãŠæšå¥šãã©ã°ã§ãã ç§ã¯ãããã®1ã€ãèªåã§æåã§è¿œå ããŸããã§ããã
-Wp,-D_FORTIFY_SOURCE=2
ã¯ããã·ã§ãŠã«ãžãã®ã¿ãŒã²ããiircããã®ãã®
ãã®å Žåã @ therecipeã¯ãQtãšSailfishããããã®ææ¡ãã©ãã§è¡ããŸããïŒã€ãŸããããããæäŸããWebããŒãžãŸãã¯CLIããŒã«ã¯ãããŸããïŒïŒ ç§ã¯ä»èå³ããããŸãã
ãããŸã§ã®éããã®ãªã¹ãã¯GoããŒã ã«ãã£ãŠå¯ŸåŠãããŠããŸããã -Wl,
ãã¬ãã£ãã¯ã¹ãåé€ãããšãLDFLAGSã®èŠåãããã€æ¶ãããçåã«æããŸãã ãããè©ŠããŠã¿ãŠãã ããïŒ 1ã€ã®CFLAGS
ã®-Wp,
ãã¬ãã£ãã¯ã¹ã«ã€ããŠãåãã§ãã ããããã«ãã«æªåœ±é¿ãäžãããã©ããã¯ããããŸãããããããLDFLAGSã®ç®çã§ãããããçæ³çãªäžçã§-Wx,
ãªãã·ã§ã³ã¯åºæ¬çã«ãåŒæ°ãèªåã§åŠçããã®ã§ã¯ãªãããªã³ã«ãŒïŒãŸãã¯ã¢ã»ã³ãã©ãŒãŸãã¯ããªããã»ããµãŒïŒã«çŽæ¥éä¿¡ããããã«gccãšclangã«æ瀺ããŸããæ£ããæšæž¬ããŠããå Žåãã¢ã€ãã¢ã¯gccã«ãã£ãŠãŸã æäŸãããŠããªãOSåºæã®ãªãã·ã§ã³ã§ããçŽæ¥é³ŽããŸãããããããããŸãã...ïŒ
@andlabsãããQtã®ãã«ãããŒã«ã®1ã€qmake
ã¯ã *.pro
ã *.spec
ïŒmkspecïŒã *.conf
ãããã³ãã®ä»ã®å€ãã®åœ¢åŒã䜿çšããŠãéåžžã®MakefileãçæããŸãã ãããŒã®*.pro
ãã¡ã€ã«ãããã€ããã£ãŒãããMakefileãããã©ã°ãæœåºããŸãã ããããã°ãäŸåé¢ä¿ãèªåã§è§£æ±ºããå¿
èŠã¯ãããŸããããµãŒãããŒãã£ã®ã©ã€ãã©ãªã䜿çšãããšãã«ãããã»ã¹ãç°¡åã«ãªããŸããcãŸãã¯ldãã©ã°ãšãã¹ããããŠããªãã¿ãŒã²ãããæåã§ç®¡çããããQtã®æ°ããããŒãžã§ã³ãå€ãããŒãžã§ã³ã管çãããããå¿
èŠã¯ãããŸãããã»ãšãã©ã®å Žåãç®±ããåºããŠããã«äœ¿çšã§ããŸãã ããŸã«åé¡ã®åå ãšãªããã©ã°ããã©ãã¯ãªã¹ãã«ç»é²ããå¿
èŠããããŸãããããã¯éåžžã«ãŸãã§ãã
-Wp,-D_FORTIFY_SOURCE=2
åŒã蟌ãã»ã€ã«ãã£ãã·ã¥mkspecãèŠã€ããããšããŸããããããããmersdkããããã®ã©ããã«åãããŠããŸãã ãã ããTQtCããµããŒããç¶æããŠããã¿ãŒã²ããã®å
¬åŒãªã¹ãã¯æ¬¡ã®ãšããã§ããhttps ïŒ
ãã®éããã€ã³ãã£ã³ã°ïŒ go
ãã©ããããïŒã§äœ¿çšããããã«ãããŒã«ã§ãããããã¯ã€ããªã¹ãã«ç»é²ã§ããŸããã go build ...
ã䜿çšãããã ãã®éåžžã®GoãŠãŒã¶ãŒã¯ãé
ããæ©ããåé¡ãåŒãèµ·ãããŸãã ãïŒå°ãªããšããã¹ã¯ãããã¿ãŒã²ããã®å ŽåïŒ
-ffast-math
å
¬åŒã®SAPHANAã¯ã©ã€ã¢ã³ããã©ã€ããŒïŒcgoããŒã¹ã®å
±æã©ã€ãã©ãªïŒã«ã¯#cgo LDFLAGS: -Wl,-rpath -Wl,\$ORIGIN
ãä»å±ããŠãããçµæã¯go build SAP/go-hdb/driver: invalid flag in #cgo LDFLAGS: -Wl,-rpath
ãŸãã 詳现ã«ã€ããŠã¯ã httpsïŒ //help.sap.com/viewer/0eec0d68141541d1b07893a39944924e/2.0.03/en-US/fba20e31f75c4f7ca5629083869069e5.htmlïŒq = golangïŒ
20driverã®SAPããã¥ã¡ã³ããåç
§ããŠãã ããã
@ cbgo ïŒ
ãã©ã°ãšåŒæ°ã®ãã¢ããªã³ã«ã«æž¡ãã³ãŒãã§ã¯ã2ã€ã§ã¯ãªã1ã€ã®-Wlãã©ã°ã䜿çšããå¿ èŠããããŸããïŒcgoLDFLAGSã§ã¯ãªã#cgo LDFLAGSïŒ-Wlã-rpathã$ ORIGINã䜿çšããŠãã ããïŒ-Wlã-rpath -Wlã$å ã
@AlexRouSgã©ããããããšãã ãã£ãšæ³šææ·±ãèªãã¹ãã ã£ã:-)
@PassKitãã®åé¡ã¯è§£æ±ºããŸãããïŒ
@ zcm211 https://github.com/miekg/pkcs11ã«ã€ããŠè©±ããŠããå Žåã2æã«-I...
ãªã³ã«ãŒãã©ã°ãåé€ããŸããã ããã䜿çšããããã±ãŒãžã䜿çšããŠããå Žåã¯ãç°å¢å€æ°CGO_LDFLAGS_ALLOW="-I.*"
ãèšå®ããå¿
èŠããããŸã
darwin 64ããããgo1.10.2ã .o
ãã¡ã€ã«ãLDFLAGã®ãã¯ã€ããªã¹ãã«ç»é²ãããŠãããšæããŸãããã次ã®ããã«ãªããŸããã
ãjaten @ jatens-MacBook-Proã / go / src / github.com / go-interpreter / chezgoïŒmasterïŒ$ make runcd chez_scheme_9.5.1 / c;
https://github.com/go-interpreter/chezgo/blob/master/embed.go#L10ã®cgoããªã¢ã³ãã«ãåå
~~~
~~~
@glycerine https://go-review.googlesource.com/c/go/+/94676ã«ãããšãããã§ãã çžå¯Ÿãã¹ã§ã¯ãªããã«ãã¹ãè©ŠããŠã¿ãŸãããïŒ
è¯ããã£ãã@AlexRouSg ãããªããææããããã«ãåãå
¥ãæ£èŠè¡šçŸã¯ãã°ããããŸãã
ãreïŒ [a-zA-Z0-9_/].*\.(a|o|obj|dll|dylib|so)
ïŒã//çŽæ¥ãªã³ã«ãŒå
¥åïŒxoãŸãã¯libfoo.soïŒãã ãã-foo.oãŸãã¯@ foo.oã¯é€ãïŒã
src / cmd / go / internal / work / security.goïŒ121ã§ã¯ãçžå¯Ÿãã¹ããµããŒãããããã«ã .o
ãã¡ã€ã«ã.
éå§ã§ããããã«ããå¿
èŠããããŸãã
çµå±ã®ãšããããŠãŒã¶ãŒã®GOPATHãããã®ãã¡ã€ã«ã®å Žæãã©ã®ããã«ãã¹ããããããäºæž¬ããããšã¯ã§ããªãããã絶察ãã¹ãèšå®ããããšã¯å®çšçã§ã¯ãããŸããã
.oãã¡ã€ã«ã¯ãœãŒã¹ãã£ã¬ã¯ããªã«ãããŸããïŒ ãããããªãããœãŒã¹ãã£ã¬ã¯ããªãåç
§ããããšã¯${SRCDIR}
ãæäŸããããã®ã§ãã ïŒãããå°å
¥ãããçç±ãå
·äœçã«å¿ããŠããŸããããã®åé¡ãåå ã§ã¯ãããŸããã§ãããïŒ
@andlabsåä»ãªåé¿çãããå Žåã§ããçžå¯Ÿãã¹ã¯ãªã³ã¯å¯èœã§ããå¿ èŠããããããã¯æããã«ãã°ã§ãã
ããã¯ãIIRCãé€ããŠããªã³ã¯ããœãŒã¹ãã£ã¬ã¯ããªã«å¯ŸããŠçžå¯Ÿçã§ãããšããä¿èšŒã¯ãããŸããïŒ $WORK
ã«ããå¯èœæ§ãéåžžã«é«ãããã®åŸãçžå¯Ÿãã¹ãåã³å£ããŸãïŒ...ç¹°ãè¿ããŸãããå¿ããŠããŸããŸããæŽå²; ä»ã®èª°ãã説æããå¿
èŠããããŸãã
gtk4ã¯-mfpmath = sseã䜿çšããŸã
@ianlancetaylor cflagsãšldflagsã«å¥ã ã®ãã¯ã€ããªã¹ããhttps://github.com/golang/go/issues/23749#issuecomment-379969818ãªã©ã®åé¡ãçºçããããšããã
ããããã§ã«ãã±ãããããã®ã§ãïŒ25493ã«èšèŒãããŠããprotobufã®ã-D_THREAD_SAFEãã«ã€ããŠèšåãããŠãã ããã
å€æŽhttps://golang.org/cl/115415ã¯ãã®åé¡ã«èšåããŠããŸãïŒ cmd/go: accept more safe CFLAGS/LDFLAGS
å€æŽhttps://golang.org/cl/115435ã¯ãã®åé¡ã«èšåããŠããŸãïŒ [release-branch.go1.10] cmd/go: accept more safe CFLAGS/LDFLAGS
å€æŽhttps://golang.org/cl/115436ã¯ãã®åé¡ã«èšåããŠããŸãïŒ [release-branch.go1.9] cmd/go: accept more safe CFLAGS/LDFLAGS
ããã¿ããªã
2018幎9æ4æ¥æç¹ã§ææ°ããŒãžã§ã³ã®Goã§bimg
ããã«ãã§ããªãã®ã«ããªããã®åé¡ã解決ãããã®ã§ããïŒ
åé¡ãåç
§ããŠãã ããïŒ https ïŒ
Go 1.10以éã bimg
ãã€ã³ããŒããããã®ããã«ãããããšã¯ã§ããŸããããGo1.11ã§ãåé¡ã解決ããŸããã
衚瀺ããããšã©ãŒã¡ãã»ãŒãžã¯æ¬¡ã®ãšããã§ãã
# go build
go build gopkg.in/h2non/bimg.v1: invalid flag in pkg-config --libs: -Wl,--export-dynamic
äœãã¢ããã€ã¹ã¯ãããŸããïŒ
ç·šéïŒ
æ°ããåé¡ãäœæããŸããïŒ https ïŒ
ãã®ãã¯ã€ããªã¹ãã¯æ¬¡ã®è²¬ä»»ããããšæããŸãïŒ https ïŒ
@alexflintãã®åé¡ã¯è§£æ±ºãããŸãããæ°ããåé¡ãäœæããŠãã ãã
æãåèã«ãªãã³ã¡ã³ã
ããã¯ãããã瀟å ã§è°è«ãããŠããŸãããããããªãªãŒã¹ã§ã¯é©ãã¹ãããšãããããŸãããã³ã³ãã€ã©ãã©ã°ã€ã³ã®ç©Žãå¡ãããã«åé¡ã®ãããã©ã°ãæåã«ãã©ãã¯ãªã¹ãã«ç»é²ããããªã¹ããäœæãããå¯èœæ§ã®ãã1.10ã«å¯Ÿå¿ãããã¯ã€ããªã¹ãã·ã¹ãã ãæå¹ã«ãªã£ãŠãããšäºæ³ããŠããŸããã RCäžã«ã¢ããã äœåãªenvå€æ°ãäžéšã®ãã«ãã·ã¹ãã ã«çµ±åããã®ã¯å®çšçã§ã¯ãããŸãããããã«ããã人ã ã1.9.3ã«æ»ã£ãŠå®å šã«ä¿è·ãããªããªããå®å šã«éå¹æã«ãªãããšãããããŸããã
ã¯ã€ã«ãã«ãŒããšæ£èŠè¡šçŸã§ãã£ã±ãã®ãã¯ã€ããªã¹ããå€è£ ãããã©ãã¯ãªã¹ãã«ãªãã®ã¯ã©ã®æç¹ã§ããïŒ