2017-03-17 37 views
1

我想在RHEL 6.8上運行一個簡單的helloworld.go。build gccgo - fork/exec沒有這樣的文件或目錄

% cat helloworld.go 
package main 
import "fmt" 
func main() { 
    fmt.Println("hello world") 
} 

的GC編譯器工作正常

% go build -compiler gccgo helloworld.go 
go build command-line-arguments: : fork/exec : no such file or directory 

出於某種原因,相反,我需要gccgo編譯,但永遠無法得到它來編譯。更別提最終靜態編譯它了。

% go build -compiler gccgo -gccgoflags '-static' helloworld.go 
go build command-line-arguments: : fork/exec : no such file or directory 
% go build -compiler gccgo -gccgoflags '-static-libgo' helloworld.go 
go build command-line-arguments: : fork/exec : no such file or directory 


% go version 
go version go1.7 linux/amd64 
% gcc --version 
gcc (GCC) 4.9.2 20150212 (Red Hat 4.9.2-6) 

瞭解什麼問題將不勝感激?

+0

的'go'工具試圖exec的東西是不是有編譯使用gccgo和鏈接靜態。嘗試使用'-x'來查看是否可以告訴正在調用的內容。 – JimB

+0

'go build -compiler gccgo -gccgoflags'-static'-x helloworld.go WORK =/tmp/go-build267938128' 'mkdir -p $ WORK/command-line-arguments/_obj /' 'mkdir -p $ WORK/command-line-arguments/_obj/exe /' 'cd/root/tmp' '「」-I $ WORK -c -g -m64 -fgo -insert-path -__ = root/tmp -o $ WORK/command-line-arguments/_obj/_go_.o -static ./helloworld.go go build命令行參數:: fork/exec:沒有這樣的文件或目錄嗎? – chingy

+0

從這些的任何見解? @JimB(感謝並抱歉格式不佳) – chingy

回答

0

您應該首先安裝gccgo編譯器。在我的Fedora 26桌面上,運行dnf install gcc-go進行安裝。

$ which gccgo /usr/bin/gccgo go build --compiler gccgo -x WORK=/tmp/go-build848309745 mkdir -p $WORK/_/home/sam/sandbox/go/src/hello/_obj/ mkdir -p $WORK/_/home/sam/sandbox/go/src/hello/_obj/exe/ cd /home/sam/sandbox/go/src/hello /usr/bin/gccgo -I $WORK -c -g -m64 -fgo-relative-import-path=_/home/sam/sandbox/go/src/hello -o $WORK/_/home/sam/sandbox/go/src/hello/_obj/_go_.o ./helloworld.go ar rc $WORK/_/home/sam/sandbox/go/src/libhello.a $WORK/_/home/sam/sandbox/go/src/hello/_obj/_go_.o cd . /usr/bin/gccgo -o $WORK/_/home/sam/sandbox/go/src/hello/_obj/exe/a.out $WORK/_/home/sam/sandbox/go/src/hello/_obj/_go_.o -Wl,-(-m64 -Wl,--whole-archive -Wl,--no-whole-archive -Wl,-) cp $WORK/_/home/sam/sandbox/go/src/hello/_obj/exe/a.out hello

如果您需要鏈接的靜態,包glibc的靜態和libgo靜態需要太安裝。安裝了這些後,

$ go build -compiler gccgo -x --gccgoflags "-static" WORK=/tmp/go-build815863722 mkdir -p $WORK/_/home/sam/sandbox/go/src/hello/_obj/ mkdir -p $WORK/_/home/sam/sandbox/go/src/hello/_obj/exe/ cd /home/sam/sandbox/go/src/hello /usr/bin/gccgo -I $WORK -c -g -m64 -fgo-relative-import-path=_/home/sam/sandbox/go/src/hello -o $WORK/_/home/sam/sandbox/go/src/hello/_obj/_go_.o -static ./helloworld.go ar rc $WORK/_/home/sam/sandbox/go/src/libhello.a $WORK/_/home/sam/sandbox/go/src/hello/_obj/_go_.o cd . /usr/bin/gccgo -o $WORK/_/home/sam/sandbox/go/src/hello/_obj/exe/a.out $WORK/_/home/sam/sandbox/go/src/hello/_obj/_go_.o -Wl,-(-m64 -Wl,--whole-archive -Wl,--no-whole-archive -Wl,-) -static cp $WORK/_/home/sam/sandbox/go/src/hello/_obj/exe/a.out hello

相關問題