Golang Go语言中 build 失败,提示 usage: compile [options] file.go...

发布于 1周前 作者 vueper 来自 Go语言

一、说明

GOROOT=D:\apps\go1.18
GOPATH=D:\GoProject 

二、问题描述

在 D:\GoProject\src\power\project_name\cmd\listener> 目录下执行 go build 命令(说明:project 是 项目名称):

\GoProject\src\power\project\cmd\listener>go build .\main.go

结果编译失败,提示信息如下:

# auto-task/task/create                        
usage: compile [options] file.go...                  
  -% int                                             
        debug non-static initializers                
  -+    compiling runtime                            
  -B    disable bounds checking                      
  -C    disable printing of columns in error messages
  -D path
        set relative path for local imports
  -E    debug symbol export
  -G    accept generic code (default 3)
  -I directory
        add directory to import search path
  -K    debug missing line numbers
  -L    show full file names in error messages
  -N    disable optimizations
  -S    print assembly listing
  -V    print version and exit
  -W    debug parse tree after type checking
  -asan
        build code compatible with C/C++ address sanitizer
  -asmhdr file
        write assembly header to file
  -bench file
        append benchmark times to file
  -blockprofile file
        write block profile to file
  -buildid id
        record id as the build id in the export metadata
  -c int
        concurrency during compilation (1 means no concurrency) (default 1)
  -clobberdead
        clobber dead stack slots (for debugging)
  -clobberdeadreg
        clobber dead registers (for debugging)
  -complete
        compiling complete package (no C or assembly)
  -cpuprofile file
        write cpu profile to file
  -d value
        enable debugging settings; try -d help
  -dwarf
        generate DWARF symbols (default true)
  -dwarfbasentries
        use base address selection entries in DWARF (default true)
  -dwarflocationlists
        add location lists to DWARF in optimized mode (default true)
  -dynlink
        support references to Go symbols defined in other shared libraries
  -e    no limit on number of errors reported
  -embedcfg file
        read go:embed configuration from file
  -gendwarfinl int
        generate DWARF inline info records (default 2)
  -goversion string
        required version of the runtime
  -h    halt on error
  -importcfg file
        read import configuration from file
  -importmap definition
        add definition of the form source=actual to import map
  -installsuffix suffix
        set pkg directory suffix
  -j    debug runtime-initialized variables
  -json string
        version,file for JSON compiler/optimizer detail output
  -l    disable inlining
  -lang string
        Go language version source code expects
  -linkobj file
        write linker-specific object to file
  -linkshared
        generate code that will be linked against Go shared libraries
  -live
        debug liveness analysis
  -m    print optimization decisions
  -memprofile file
        write memory profile to file
  -memprofilerate rate
        set runtime.MemProfileRate to rate
  -msan
        build code compatible with C/C++ memory sanitizer
  -mutexprofile file
        write mutex profile to file
  -nolocalimports
        reject local (relative) imports
  -o file
        write output to file
  -p path
        set expected package import path
  -pack
        write to file.a instead of file.o
  -r    debug generated wrappers
  -race
        enable race detector
  -shared
        generate code that can be linked into a shared library
  -smallframes
        reduce the size limit for stack allocated objects
  -spectre list
        enable spectre mitigations in list (all, index, ret)
  -std
        compiling standard library
  -symabis file
        read symbol ABIs from file
  -t    enable tracing for debugging the compiler
  -traceprofile file
        write an execution trace to file
  -trimpath prefix
        remove prefix from recorded source file paths
  -v    increase debug verbosity
  -w    debug type checking
  -wb
        enable write barrier (default true)

说明:(1)错误提示中第一行的 auto-task/task/create 是项目的目录。

二、尝试的解决方法

1.修改 project 上一级目录名称,如 power 修改为 power1,结果可以正常编译。  
2.将 project 移动到 GoProject 之外的目录,结果可以正常编译。  

请教各位大佬,为什么用 power 这个名字就不行,可能是因为什么原因造成的?


Golang Go语言中 build 失败,提示 usage: compile [options] file.go...

更多关于Golang Go语言中 build 失败,提示 usage: compile [options] file.go...的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html

2 回复

第二个就是答案,自从有了 go mod 之后,不要把项目放到 gopath 目录下,gopath 在 go mod 之后就是个缓存目录,里面的文件也尽量不要编辑。

我估计你的 go mod 文件 第一行有包含 …/power/project/… ,go 编译时会查找 gopath 目录下的代码也会查找 go.mod 文件开始的子目录路径,而你把项目放到 gopath 目录下,估计引起了冲突。把 power 改为 power1 后,如果你的 go.mod 文件没有同步更改,那么 go 在查找路径时不会冲突,所以第一个也能编译(这个是我推测的)

更多关于Golang Go语言中 build 失败,提示 usage: compile [options] file.go...的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html


在Go语言中遇到编译(build)失败,并提示“usage: compile [options] file.go…”这类信息时,通常意味着编译命令的使用方式有误。这里有几个可能的原因及解决步骤:

  1. 命令格式错误:确保你使用的编译命令格式正确。标准的编译命令是go build,而不是直接使用compilecompile是Go工具链内部的一个命令,通常不直接由用户调用。

  2. 文件路径问题:检查你指定的.go文件路径是否正确。如果文件不在当前目录下,需要提供相对路径或绝对路径。

  3. 环境配置:确认你的Go语言环境(GOROOT和GOPATH)已正确配置。GOROOT应指向Go的安装目录,GOPATH是你的工作空间。

  4. 使用go tool compile:如果你确实需要直接调用compile命令(通常不推荐),应使用go tool compile形式,并确保后续参数正确。但这通常用于调试或深入了解Go编译过程,不是日常开发的标准做法。

  5. 查看具体错误信息:如果go build失败,尝试添加-x参数以获取更详细的编译过程信息,这有助于诊断问题。

  6. 文档和社区资源:查阅官方文档或搜索相关社区和论坛,看看是否有类似问题的解决方案。

总之,首先确保使用正确的go build命令,并检查文件路径和环境配置。如果问题依旧,考虑获取更详细的错误信息或寻求社区帮助。

回到顶部