[英]Go can't find local package
I have two projects, one is a library and the other is a utility. 我有两个项目,一个是库,另一个是实用程序。 I've used go install
to build the library and place it in the pkg area. 我已经使用go install
来构建库并将其放置在pkg区域中。 This seems to have worked as expected. 这似乎按预期工作。
sbio $ pwd
/home/mjohn/workspaces/goprojects/src/crown/sbio
sbio $ CC=armv7l-timesys-linux-gnueabi-gcc CGO_ENABLED=1 GOOS=linux GOARCH=arm GOARM=7 go install
sbio $ ls ../../../pkg/linux_arm/crown
sbio.a
My issue is when I try to have my utility use this library. 我的问题是当我尝试让我的实用程序使用此库时。 It complains about no buildable Go source files
but its looking under the src
directory, which makes me think its not seeing it in the pkg
area. 它抱怨no buildable Go source files
而是在src
目录下查找,这让我认为它在pkg
区域pkg
不到它。 My import path in the utility is crown/sbio
. 我在实用程序中的导入路径是crown/sbio
。 Any ideas would be helpful. 任何想法都会有所帮助。
utility $ GOOS=linux GOARCH=arm GOARM=7 go build
go build crown/sbio: no buildable Go source files in /home/mjohn/workspaces/goprojects/src/crown/sbio
utility $ GOOS=linux GOARCH=arm GOARM=7 go build -v -x -work
WORK=/tmp/go-build709862068
crown/sbio
github.com/jessevdk/go-flags
mkdir -p $WORK/github.com/jessevdk/go-flags/_obj/
os/signal
mkdir -p $WORK/github.com/jessevdk/
cd /home/mjohn/workspaces/goprojects/src/github.com/jessevdk/go-flags
/home/mjohn/software/go/pkg/tool/linux_386/compile -o $WORK/github.com/jessevdk/go-flags.a -trimpath $WORK -p github.com/jessevdk/go-flags -complete -buildid 2e7b82d3996437f712d51c2be269e6cd3eb809d6 -D _/home/mjohn/workspaces/goprojects/src/github.com/jessevdk/go-flags -I $WORK -pack ./arg.go ./closest.go ./command.go ./command_private.go ./completion.go ./convert.go ./error.go ./flags.go ./group.go ./group_private.go ./help.go ./ini.go ./ini_private.go ./man.go ./multitag.go ./option.go ./option_private.go ./optstyle_other.go ./parser.go ./parser_private.go ./termsize.go ./termsize_linux.go
mkdir -p $WORK/os/signal/_obj/
mkdir -p $WORK/os/
cd /home/mjohn/software/go/src/os/signal
/home/mjohn/software/go/pkg/tool/linux_386/compile -o $WORK/os/signal.a -trimpath $WORK -p os/signal -buildid 36d5db084a1ab49c3fbb474d340be7996d6606d8 -D _/home/mjohn/software/go/src/os/signal -I $WORK -pack -asmhdr $WORK/os/signal/_obj/go_asm.h ./doc.go ./signal.go ./signal_unix.go
mkdir -p $WORK/crown/sbio/_obj/
mkdir -p $WORK/crown/
go build crown/sbio: no buildable Go source files in /home/mjohn/workspaces/goprojects/src/crown/sbio
/home/mjohn/software/go/pkg/tool/linux_386/asm -o $WORK/os/signal/_obj/sig.o -trimpath $WORK -I $WORK/os/signal/_obj/ -I /home/mjohn/software/go/pkg/include -D GOOS_linux -D GOARCH_arm ./sig.s
pack r $WORK/os/signal.a $WORK/os/signal/_obj/sig.o # internal
utility $ go env
GOARCH="386"
GOBIN=""
GOEXE=""
GOHOSTARCH="386"
GOHOSTOS="linux"
GOOS="linux"
GOPATH="/home/mjohn/workspaces/goprojects"
GORACE=""
GOROOT="/home/mjohn/software/go"
GOTOOLDIR="/home/mjohn/software/go/pkg/tool/linux_386"
CC="gcc"
GOGCCFLAGS="-fPIC -m32 -pthread -fmessage-length=0 -fdebug-prefix-map=/tmp/go-build583017880=/tmp/go-build -gno-record-gcc-switches"
CXX="g++"
CGO_ENABLED="1"
utility $ go version
go version go1.7.4 linux/386
Thanks for any help. 谢谢你的帮助。
I was able to solve my issue by building the utility with the CC
and CGO_ENABLED
variables defined. 我可以通过使用定义的CC
和CGO_ENABLED
变量构建实用程序来解决我的问题。 I needed them defined for building the utility even though it didn't include any cgo code it was still needed because of the library. 我需要为构建实用程序定义它们,即使它不包含由于库而仍然需要的任何cgo代码。
If it's possible to build the utility without needing to do this I would still be interested as it's a pain to have every user of the library be required to define these. 如果有可能无需执行此操作就可以构建实用程序,我仍然会很感兴趣,因为要求该库的每个用户都定义它们是一件很痛苦的事情。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.