Getting `GLIBC_2.34` not found error while running go-geos package on Ubuntu 20.04

4.4k Views Asked by At

I am using github.com/twpayne/go-geos package in my program to handle geometries. I developed on my a machine which runs Ubuntu 22.04 and everything works as expected. I built a binary using

go build -o someName

and it executes normally. But when I try run the binary on a machine that runs Ubuntu 20.04, I get these errors:

$ ./someName
./someName: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.34' not found (required by ./someName)
./someName: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.32' not found (required by ./someName)

While looking online I saw that ubuntu focal uses glibc 2.31 whereas jammy has glibc 2.35.

I built my binary on ubuntu 22.04 and copied it to ubuntu 20.04 and got the above mentioned issue. I also tried to build it directly on the machine with ubuntu 20.04 but I get this error:

go build github.com/twpayne/go-geos:
# pkg-config --cflags  -- geos
Package geos was not found in the pkg-config search path.
Perhaps you should add the directory containing `geos.pc'
to the PKG_CONFIG_PATH environment variable
No package 'geos' found
pkg-config: exit status 1

I could not find a geos.pc on this machine using mlocate

locate geos.pc returns nothing. echo $PKG_CONFIG_PATH returns nothing.

Both machines are running go version 1.20.

Running apt search libgeos on both machines I get this:

Ubuntu 20.04

libgeos++-dev/focal,now 3.8.0-1build1 amd64 [installed]
  Geometry engine for GIS - C++ development files

libgeos-3.8.0/focal,now 3.8.0-1build1 amd64 [installed]
  Geometry engine for Geographic Information Systems - C++ Library

libgeos-c1v5/focal,now 3.8.0-1build1 amd64 [installed]
  Geometry engine for Geographic Information Systems - C Library

libgeos-dev/focal,now 3.8.0-1build1 amd64 [installed]
  Geometry engine for GIS - Development files

libgeos-doc/focal,now 3.8.0-1build1 all [installed]
  Documentation for the GEOS GIS geometry engine library

Ubuntu 22.04

libgeos++-dev/jammy 3.10.2-1 amd64
  Geometry engine for GIS - C++ development files

libgeos-c1v5/jammy,now 3.10.2-1 amd64 [installed,automatic]
  Geometry engine for Geographic Information Systems - C Library

libgeos-dev/jammy,now 3.10.2-1 amd64 [installed]
  Geometry engine for GIS - Development files

libgeos-doc/jammy,jammy 3.10.2-1 all
  Documentation for the GEOS GIS geometry engine library

libgeos3.10.2/jammy,now 3.10.2-1 amd64 [installed,automatic]
  Geometry engine for Geographic Information Systems - C++ Library

These are the latest versions for each machine I have also tried using an older version of the github.com/twpayne/go-geos package as I though maybe an earlier version would run on Ubuntu 20.04. 'v0.10.0' is the earliest I can go which has the functions I need but that also produces the same error.

Is there something I am overlooking? I am new to go as well as working with geos so I am a bit stumped. All I can think of is to rewrite my code using a different library. Any help on resolving this will be greatly appreciated. Upgrading the OS to the 22.04 version is not an option. Using a docker image is also not an option for me.

ADDITIONAL INFO: Not sure if this is relevant but I noticed when running which go on both machines I get these outputs: Ubuntu 20.04

/snap/bin/go 

Ubuntu 22.04

/usr/local/go/bin/go 

I did not install go (was done by someone else) on the machine running Ubuntu 20.04.

NOTE: This is my first time asking on stackoverflow. Let me know if I need to add something more to my question.

0

There are 0 best solutions below