Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

building a static binary with gocv/opencv:4.9.0-static fails #1169

Open
mihaiav opened this issue Apr 19, 2024 · 1 comment
Open

building a static binary with gocv/opencv:4.9.0-static fails #1169

mihaiav opened this issue Apr 19, 2024 · 1 comment

Comments

@mihaiav
Copy link

mihaiav commented Apr 19, 2024

Building a Go app with gocv/opencv:4.9.0-static docker image fails.

Description

I'm trying to build a static go binary using gocv/opencv:4.9.0-static as base. Unfortunately the go build command fails. Is this a known bug? Does it require an additional configuration to make it compile? Given gocv is already shipped in the docker image I expected it to just work.

Steps to Reproduce

I'm a Dockerfile to build the app and later run it as part of a web service. The docker file is pretty simple. Here is a bit more reduced:

FROM gocv/opencv:4.9.0-static as golang ... RUN go build -ldflags="-extldflags=-static" -o main
It throws a bunch of errors such below. log.txt

/usr/local/go/pkg/tool/linux_amd64/link: running g++ failed: exit status 1
/usr/bin/ld: /tmp/go-link-1938547386/000056.o: in function mygetgrouplist': /usr/bin/ld: /usr/local/lib/libopencv_dnn.a(types.pb.cc.o): in function _GLOBAL__sub_I.00102_types.pb.cc':
types.pb.cc:(.text.startup._GLOBAL__sub_I.00102_types.pb.cc+0xf): undefined reference to google::protobuf::internal::AddDescriptorsRunner::AddDescriptorsRunner(google::protobuf::internal::DescriptorTable const*)' /usr/bin/ld: $WORK/b001/exe/a.out: hidden symbol opj_read_header' isn't defined
/usr/bin/ld: final link failed: bad value
collect2: error: ld returned 1 exit status
`

Your Environment

`

  • Operating System and version:
    Google cloud run E2 standard 4 (4 vcpu, 16 gb ram)
    * OpenCV version used:
    Docker repo gocv/opencv:4.9.0-static
  • How did you install OpenCV?
    I've got it preinstalled using the docker repo : gocv/opencv:4.9.0-static
  • GoCV version used:
    I use go modules withgocv.io/x/gocv v0.36.1, vendored as well.
  • Go version:
    docker based gocv/opencv:4.9.0-static which I believe has Go go1.22.0
  • Did you run the env.sh or env.cmd script before trying to go run or go build?
    Yes, it said This script is no longer necessary and has been deprecated. See the Custom Environment section of the README if you need to customize your environment.
@lujihong
Copy link

lujihong commented May 7, 2024

It happened to me too, I compiled and installed a static version of opencv and it also reported a bunch of errors when compiling.

I've taken a random snippet of the error:

C:/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/8.1.0/../../../../x86_64-w64-mingw32/lib/../lib/libopencv_dnn490.a(attr_value.pb.cc.obj):attr_value.pb.cc:(.text$_ZN6google8protobuf8i
nternal8MapFieldIN17opencv_tensorflow31NameAttrList_AttrEntry_DoNotUseENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEENS3_9AttrValueELNS1_14WireFormatLite9FieldTypeE9ELSD_11E
E14DeleteMapValueERKNS0_6MapKeyE[_ZN6google8protobuf8internal8MapFieldIN17opencv_tensorflow31NameAttrList_AttrEntry_DoNotUseENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEENS
3_9AttrValueELNS1_14WireFormatLite9FieldTypeE9ELSD_11EE14DeleteMapValueERKNS0_6MapKeyE]+0x66b): undefined reference to `google::protobuf::internal::LogMessage::operator<<(char const*)'

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants