# Illegal CPU instructions when testing GDAL.jl?

**URL:** <https://discourse.julialang.org/t/illegal-cpu-instructions-when-testing-gdal-jl/41922>\
**Category:** Geo\
**Created:** [June 23, 2020, 9:30am UTC](https://discourse.julialang.org/t/illegal-cpu-instructions-when-testing-gdal-jl/41922 "2020-06-23T09:30:50Z")\
**Posts on this page:** 19\
**Page:** 1

<div class="post-metadata">

**Author:** ![Chen](https://avatars.discourse-cdn.com/v4/letter/c/3d9bf3/32.png) [@Chen](https://discourse.julialang.org/u/Chen)\
**Post date:** [June 23, 2020, 9:30am UTC](https://discourse.julialang.org/t/illegal-cpu-instructions-when-testing-gdal-jl/41922/1 "2020-06-23T09:30:50Z")

</div>

Does GDAL come with prebuilt x86\_64 libraries?

If yes, it seems that the libraries were built with march that is not x86-64.

On my old Pentium 4 CPU, Julia gives an error. I think the error was caused by a CPU instruction that is not supported by an old Pentium 4 CPU.

Here is the full log:

```julia
(@v1.4) pkg> test GDAL
    Testing GDAL
Status `/tmp/jl_0RUuwZ/Manifest.toml`
  [fa961155] CEnum v0.4.1
  [add2ef01] GDAL v1.1.2
  [a7073274] GDAL_jll v3.0.4+0
  [d604d12d] GEOS_jll v3.8.1+0
  [deac9b47] LibCURL_jll v7.70.0+0
  [29816b5a] LibSSH2_jll v1.9.0+1
  [c8ffd9c3] MbedTLS_jll v2.16.0+2
  [58948b4f] PROJ_jll v6.3.2+1
  [76ed43ae] SQLite_jll v3.31.1+0
  [83775a58] Zlib_jll v1.2.11+10
  [8e850ede] nghttp2_jll v1.40.0+0
  [2a0f44e3] Base64 
  [ade2ca70] Dates 
  [8ba89e20] Distributed 
  [b77e0a4c] InteractiveUtils 
  [76f85450] LibGit2 
  [8f399da3] Libdl 
  [56ddb016] Logging 
  [d6f4376e] Markdown 
  [44cfe95a] Pkg 
  [de0858da] Printf 
  [3fa0cd96] REPL 
  [9a3f8284] Random 
  [ea8e919c] SHA 
  [9e88b42a] Serialization 
  [6462fe0b] Sockets 
  [8dfed614] Test 
  [cf7118a7] UUIDs 
  [4ec0a83e] Unicode 
┌ Info: GDAL 3.0.4, released 2020/01/28
│ 194 GDAL drivers found
└ 69 OGR drivers found

signal (6): Aborted
in expression starting at /home/c/.julia/packages/GDAL/tKD0i/test/tutorial_raster.jl:24
gsignal at /lib64/libc.so.6 (unknown line)
abort at /lib64/libc.so.6 (unknown line)
unknown function (ip: 0x7f0206c023c8)
_ZNK5osgeo4proj9operation10Conversion19_exportToPROJStringEPNS0_2io19PROJStringFormatterE at /home/c/.julia/artifacts/0896d7ece43eb82db63576fd6588d143c00e586e/lib/libproj.so (unknown line)
_ZNK5osgeo4proj2io21IPROJStringExportable18exportToPROJStringB5cxx11EPNS1_19PROJStringFormatterE at /home/c/.julia/artifacts/0896d7ece43eb82db63576fd6588d143c00e586e/lib/libproj.so (unknown line)
_ZL13pj_obj_createP9projCtx_tRKN7dropbox6oxygen2nnISt10shared_ptrIN5osgeo4proj6common16IdentifiedObjectEEEE at /home/c/.julia/artifacts/0896d7ece43eb82db63576fd6588d143c00e586e/lib/libproj.so (unknown line)
proj_create_conversion at /home/c/.julia/artifacts/0896d7ece43eb82db63576fd6588d143c00e586e/lib/libproj.so (unknown line)
SetProjCS at /workspace/srcdir/gdal-3.0.4/ogr/ogrspatialreference.cpp:4624
GTIFGetOGISDefnAsOSR at /workspace/srcdir/gdal-3.0.4/frmts/gtiff/gt_wkt_srs.cpp:525
LookForProjection at /workspace/srcdir/gdal-3.0.4/frmts/gtiff/geotiff.cpp:12649
GetSpatialRef at /workspace/srcdir/gdal-3.0.4/frmts/gtiff/geotiff.cpp:18054
GetProjectionRef at /workspace/srcdir/gdal-3.0.4/gcore/gdaldataset.cpp:851
gdalgetprojectionref at /home/c/.julia/packages/GDAL/tKD0i/src/gdal_h.jl:1070
unknown function (ip: 0x7f01f69b6392)
unknown function (ip: 0x7f020a2ffdbd)
unknown function (ip: 0x7f020a2ffa83)
unknown function (ip: 0x7f020a2ffee5)
unknown function (ip: 0x7f020a300ec1)
unknown function (ip: 0x7f020a3014a9)
unknown function (ip: 0x7f020a301a07)
unknown function (ip: 0x7f020a318f40)
unknown function (ip: 0x7f020a2f673d)
jl_load at /usr/bin/../lib64/libjulia.so.1 (unknown line)
unknown function (ip: 0x7f01fd5d3b28)
#3 at /home/c/.julia/packages/GDAL/tKD0i/test/runtests.jl:45
cd at ./file.jl:104
unknown function (ip: 0x7f020a2ffdbd)
unknown function (ip: 0x7f020a2ffa83)
unknown function (ip: 0x7f020a2ffee5)
unknown function (ip: 0x7f020a300ec1)
unknown function (ip: 0x7f020a3014a9)
unknown function (ip: 0x7f020a3014a9)
unknown function (ip: 0x7f020a301a07)
unknown function (ip: 0x7f020a318f40)
unknown function (ip: 0x7f020a2f673d)
jl_load at /usr/bin/../lib64/libjulia.so.1 (unknown line)
unknown function (ip: 0x7f01fd5d3b28)
unknown function (ip: 0x7f020a2ffdbd)
unknown function (ip: 0x7f020a2ffa83)
unknown function (ip: 0x7f020a2ffee5)
unknown function (ip: 0x7f020a300ec1)
unknown function (ip: 0x7f020a301a07)
unknown function (ip: 0x7f020a318f40)
unknown function (ip: 0x7f020a319214)
jl_toplevel_eval_in at /usr/bin/../lib64/libjulia.so.1 (unknown line)
unknown function (ip: 0x7f01fd38bb34)
unknown function (ip: 0x7f01fd38a015)
unknown function (ip: 0x7f01fd38b57f)
unknown function (ip: 0x7f01fd38b6c5)
unknown function (ip: 0x555f857f771a)
unknown function (ip: 0x555f857f732e)
__libc_start_main at /lib64/libc.so.6 (unknown line)
unknown function (ip: 0x555f857f73d9)
Allocations: 3358712 (Pool: 3358035; Big: 677); GC: 2
ERROR: Package GDAL errored during testing

```

I opened an issue on github: [https://github.com/JuliaGeo/GDAL.jl/issues/92](https://github.com/JuliaGeo/GDAL.jl/issues/92)

At the same time, I would like to ask for inputs here, in the hope of solving the issue faster.

---

<div class="post-metadata">

**Author:** ![visr](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/visr/32/17204_2.png) [@visr](https://discourse.julialang.org/u/visr)\
**Post date:** [June 23, 2020, 12:15pm UTC](https://discourse.julialang.org/t/illegal-cpu-instructions-when-testing-gdal-jl/41922/2 "2020-06-23T12:15:51Z")

</div>

Yes, GDAL.jl comes with prebuilt libraries. It’s unfortunate that you get an error due to an unsupported CPU instruction. The build is done with BinaryBuilder, with a build file stored in Yggdrasil. [This line](https://github.com/JuliaPackaging/Yggdrasil/blob/32f1ae9ecd91998b26cc4f760b74225fca8829ef/G/GDAL/build_tarballs.jl#L61) shows it is built for all platforms that BinaryBuilder supports. So in the GDAL build in particular I don’t think there is much I can do, it seems this architecture would need to be supported in BinaryBuilder.

Perhaps you could for now manually hook it up to another GDAL build that does work for you?

---

<div class="post-metadata">

**Author:** ![Chen](https://avatars.discourse-cdn.com/v4/letter/c/3d9bf3/32.png) [@Chen](https://discourse.julialang.org/u/Chen)\
**Post date:** [June 23, 2020, 1:16pm UTC](https://discourse.julialang.org/t/illegal-cpu-instructions-when-testing-gdal-jl/41922/3 "2020-06-23T13:16:00Z")

</div>

Thank you!

I have a GDAL that is compiled on my computer and installed on /usr. Do you mean to copy the library files from /usr into ~/.julia?

I opened a ticket on BinaryBuilder: [https://github.com/JuliaPackaging/BinaryProvider.jl/issues/198](https://github.com/JuliaPackaging/BinaryProvider.jl/issues/198)  
I hope that it could be fixed there.

---

<div class="post-metadata">

**Author:** ![Chen](https://avatars.discourse-cdn.com/v4/letter/c/3d9bf3/32.png) [@Chen](https://discourse.julialang.org/u/Chen)\
**Post date:** [June 23, 2020, 1:33pm UTC](https://discourse.julialang.org/t/illegal-cpu-instructions-when-testing-gdal-jl/41922/4 "2020-06-23T13:33:31Z")

</div>

One question that I do not fully understand.

Take gdal as an example. On my computer, there is a gdal library that is installed as part of the system on /usr. It seems that GDAL.jl uses its own gdal library. Is that right?

Is it possible to ask GDAL.jl to use the system gdal library?

---

<div class="post-metadata">

**Author:** ![giordano](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/giordano/32/2166_2.png) [@giordano](https://discourse.julialang.org/u/giordano)\
**Post date:** [June 23, 2020, 1:47pm UTC](https://discourse.julialang.org/t/illegal-cpu-instructions-when-testing-gdal-jl/41922/5 "2020-06-23T13:47:13Z")

</div>

> [@Chen](#):
>
> Is it possible to ask GDAL.jl to use the system gdal library?

[https://julialang.github.io/Pkg.jl/v1/artifacts/#Overriding-artifact-locations-1](https://julialang.github.io/Pkg.jl/v1/artifacts/#Overriding-artifact-locations-1)

---

<div class="post-metadata">

**Author:** ![Chen](https://avatars.discourse-cdn.com/v4/letter/c/3d9bf3/32.png) [@Chen](https://discourse.julialang.org/u/Chen)\
**Post date:** [June 23, 2020, 2:05pm UTC](https://discourse.julialang.org/t/illegal-cpu-instructions-when-testing-gdal-jl/41922/6 "2020-06-23T14:05:18Z")

</div>

Thank you.

Interesting thing is that under `/home/c/.julia/artifacts/0896d7ece43eb82db63576fd6588d143c00e586e/`, the binaries are put in the `bin` folder and the libraries in the `lib` folder.

On my system, which is x86-64, the binaries are in `/usr/bin`, but the libraries are in `/usr/lib64`.

---

<div class="post-metadata">

**Author:** ![Chen](https://avatars.discourse-cdn.com/v4/letter/c/3d9bf3/32.png) [@Chen](https://discourse.julialang.org/u/Chen)\
**Post date:** [June 23, 2020, 2:29pm UTC](https://discourse.julialang.org/t/illegal-cpu-instructions-when-testing-gdal-jl/41922/7 "2020-06-23T14:29:49Z")

</div>

I set ~/.julia/artifacts/Overrides.toml to be

```julia
[add2ef01-049f-52c4-9ee2-e494f65e021a]
libc = "/usr/lib64/libc.so"
libcurl = "/usr/lib64/libcurl.so"
libproj = "/usr/lib64/libproj.so"
libssh2 = "/usr/lib64/libssh2.so"

```

I got the same error when `] test GDAL`. What can I try next to fix the problem?

---

<div class="post-metadata">

**Author:** ![visr](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/visr/32/17204_2.png) [@visr](https://discourse.julialang.org/u/visr)\
**Post date:** [June 23, 2020, 3:44pm UTC](https://discourse.julialang.org/t/illegal-cpu-instructions-when-testing-gdal-jl/41922/8 "2020-06-23T15:44:54Z")

</div>

Are you missing `libgdal` here? I haven’t used Overrides.toml before, but it’d be nice if there is a good example for how to switch from a jll package to a manual version.

---

<div class="post-metadata">

**Author:** ![Chen](https://avatars.discourse-cdn.com/v4/letter/c/3d9bf3/32.png) [@Chen](https://discourse.julialang.org/u/Chen)\
**Post date:** [June 23, 2020, 4:25pm UTC](https://discourse.julialang.org/t/illegal-cpu-instructions-when-testing-gdal-jl/41922/9 "2020-06-23T16:25:49Z")

</div>

New content of ~/.julia/artifacts/Overrides.toml:

```julia
# Override package bindings by specifying the package UUID and bound artifact name.
# The UUIDs are found from https://github.com/JuliaRegistries/General/blob/master/Registry.toml.
#
# GDAL
[add2ef01-049f-52c4-9ee2-e494f65e021a]
libc = "/usr/lib64/libc.so"
libcurl = "/usr/lib64/libcurl.so"
libgdal = "/usr/lib64/libgdal.so"
libproj = "/usr/lib64/libproj.so"
libssh2 = "/usr/lib64/libssh2.so"

```

I used the codes from [https://github.com/JuliaGeo/GDAL.jl/blob/master/test/tutorial\_raster.jl](https://github.com/JuliaGeo/GDAL.jl/blob/master/test/tutorial_raster.jl). All codes started with `@test` were removed.

Here are the codes:

```julia
using Pkg
Pkg.build("GDAL")
using GDAL

utmsmall = joinpath(@ __DIR__ , "/home/c/g/temp/utmsmall.tif")
utmsmall_copy = joinpath(@ __DIR__ , "/tmp/utmsmall.tif")

# needed to actually load tifs
GDAL.gdalallregister()

# Opening the File
dataset = GDAL.gdalopen(utmsmall, GDAL.GA_ReadOnly) # file from GDAL SVN

# Getting Dataset Information
driver = GDAL.gdalgetdriverbyname("GTiff")
nad27_prefix = "PROJCS[\"NAD27 / UTM zone 11N\",GEOGCS[\"NAD27\",DATUM[\"North_American_Datum_1927\","

geotransform = fill(0.0, 6)
GDAL.gdalgetgeotransform(dataset, geotransform)

# Fetching a Raster Band
band = GDAL.gdalgetrasterband(dataset, 1)

blockxsize, blockysize = Ref(Cint(-1)), Ref(Cint(-1))
GDAL.gdalgetblocksize(band, blockxsize, blockysize)

gotmin, gotmax = Ref(Cint(-1)), Ref(Cint(-1))

# Reading Raster Data
xsize = GDAL.gdalgetrasterbandxsize(band)

scanline = fill(0.0f0, xsize)
GDAL.gdalrasterio(band, GDAL.GF_Read, 0, 0, xsize, 1,
                  scanline, xsize, 1, GDAL.GDT_Float32, 0, 0)

# Closing the Dataset
GDAL.gdalclose(dataset)

# Using CreateCopy()
ds_src = GDAL.gdalopen(utmsmall, GDAL.GA_ReadOnly)

progressfunc = convert(Ptr{GDAL.GDALProgressFunc}, C_NULL)

ds_dst = GDAL.gdalcreatecopy(driver, utmsmall_copy, ds_src, 0,
                         C_NULL, progressfunc, C_NULL)
#GDAL.gdalclose(ds_dst)
#GDAL.gdalclose(ds_src)

#rm(utmsmall_copy)

```

I was adding these codes one line by one line. The error occored in the last uncommented lines:

```julia
ds_dst = GDAL.gdalcreatecopy(driver, utmsmall_copy, ds_src, 0,
                         C_NULL, progressfunc, C_NULL)

```

The error message is:

```julia
julia> include("gdal.jl")

signal (6): Aborted
in expression starting at /home/c/g/temp/gdal.jl:44
gsignal at /lib64/libc.so.6 (unknown line)
abort at /lib64/libc.so.6 (unknown line)
unknown function (ip: 0x7f6d8d9ce3c8)
_ZNK5osgeo4proj9operation10Conversion19_exportToPROJStringEPNS0_2io19PROJStringFormatterE at /home/c/.julia/artifacts/0896d7ece43eb82db63576fd6588d143c00e586e/lib/libproj.so (unknown line)
_ZNK5osgeo4proj2io21IPROJStringExportable18exportToPROJStringB5cxx11EPNS1_19PROJStringFormatterE at /home/c/.julia/artifacts/0896d7ece43eb82db63576fd6588d143c00e586e/lib/libproj.so (unknown line)
_ZL13pj_obj_createP9projCtx_tRKN7dropbox6oxygen2nnISt10shared_ptrIN5osgeo4proj6common16IdentifiedObjectEEEE at /home/c/.julia/artifacts/0896d7ece43eb82db63576fd6588d143c00e586e/lib/libproj.so (unknown line)
proj_create_conversion at /home/c/.julia/artifacts/0896d7ece43eb82db63576fd6588d143c00e586e/lib/libproj.so (unknown line)
SetProjCS at /workspace/srcdir/gdal-3.0.4/ogr/ogrspatialreference.cpp:4624
GTIFGetOGISDefnAsOSR at /workspace/srcdir/gdal-3.0.4/frmts/gtiff/gt_wkt_srs.cpp:525
LookForProjection at /workspace/srcdir/gdal-3.0.4/frmts/gtiff/geotiff.cpp:12649
GetSpatialRef at /workspace/srcdir/gdal-3.0.4/frmts/gtiff/geotiff.cpp:18054
WriteMetadata at /workspace/srcdir/gdal-3.0.4/frmts/gtiff/geotiff.cpp:11610
CreateCopy at /workspace/srcdir/gdal-3.0.4/frmts/gtiff/geotiff.cpp:17107
CreateCopy at /workspace/srcdir/gdal-3.0.4/gcore/gdaldriver.cpp:938
gdalcreatecopy at /home/c/.julia/packages/GDAL/tKD0i/src/gdal_h.jl:366
unknown function (ip: 0x7f6d7d76eed3)
unknown function (ip: 0x7f6d910cbdbd)
unknown function (ip: 0x7f6d910cba83)
unknown function (ip: 0x7f6d910cbee5)
unknown function (ip: 0x7f6d910ccec1)
unknown function (ip: 0x7f6d910cda07)
unknown function (ip: 0x7f6d910e4f40)
unknown function (ip: 0x7f6d910c273d)
jl_load at /usr/bin/../lib64/libjulia.so.1 (unknown line)
unknown function (ip: 0x7f6d8439fb28)
unknown function (ip: 0x7f6d910cbdbd)
unknown function (ip: 0x7f6d910cba83)
unknown function (ip: 0x7f6d910cbee5)
unknown function (ip: 0x7f6d910ccec1)
unknown function (ip: 0x7f6d910cda07)
unknown function (ip: 0x7f6d910e4f40)
unknown function (ip: 0x7f6d910e5214)
jl_toplevel_eval_in at /usr/bin/../lib64/libjulia.so.1 (unknown line)
unknown function (ip: 0x7f6d84157b34)
unknown function (ip: 0x7f6d8437ebd8)
unknown function (ip: 0x7f6d8437eec4)
unknown function (ip: 0x7f6d910d0ac2)
unknown function (ip: (nil))
Allocations: 11966539 (Pool: 11964937; Big: 1602); GC: 14

```

What does the last two uncommentedd lines do, which caused julia to break down?

Do you think much of the GDAL.jl’s functions are working, since the codes were running until the last two uncommented lines?

---

<div class="post-metadata">

**Author:** ![visr](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/visr/32/17204_2.png) [@visr](https://discourse.julialang.org/u/visr)\
**Post date:** [June 23, 2020, 5:20pm UTC](https://discourse.julialang.org/t/illegal-cpu-instructions-when-testing-gdal-jl/41922/10 "2020-06-23T17:20:49Z")

</div>

It looks like that is the first line that needs a working `libproj`. The first four functions in the stacktrace are from `libproj`. But it is still loaded from the artifacts, instead of the one you want to override. Perhaps that is because GDAL.jl loads PROJ\_jll. If you could take that out you may get a bit further. Seems like quite an effort though, not sure if it will work out in the end. Hope so! If you do figure it out, we should add it to the documentation.

---

<div class="post-metadata">

**Author:** ![giordano](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/giordano/32/2166_2.png) [@giordano](https://discourse.julialang.org/u/giordano)\
**Post date:** [June 23, 2020, 5:36pm UTC](https://discourse.julialang.org/t/illegal-cpu-instructions-when-testing-gdal-jl/41922/11 "2020-06-23T17:36:55Z")

</div>

You only override the prefix, not each single library, which `Artifacts.toml` doesn’t know anything about. Each JLL package has a single artifact, so a single prefix. For `GDAL_jll` is more like

```nohighlight
[a7073274-a066-55f0-b90d-d619367d196c]
GDAL = "/usr"

```

but for some reason you have the libraries in `lib64`, so this won’t work anyway. Any chance to create a symlink of the library to `/usr/lib`?

---

<div class="post-metadata">

**Author:** ![Chen](https://avatars.discourse-cdn.com/v4/letter/c/3d9bf3/32.png) [@Chen](https://discourse.julialang.org/u/Chen)\
**Post date:** [June 25, 2020, 2:46pm UTC](https://discourse.julialang.org/t/illegal-cpu-instructions-when-testing-gdal-jl/41922/12 "2020-06-25T14:46:30Z")

</div>

I’m experimenting with symlinks and will report back later.

However, I have a question. How did you find out the sha256 for GDAL\_jll, which is `[a7073274-a066-55f0-b90d-d619367d196c]`?

Why is it GDAL\_jll, but not GDAL? What’s the difference?

---

<div class="post-metadata">

**Author:** ![Chen](https://avatars.discourse-cdn.com/v4/letter/c/3d9bf3/32.png) [@Chen](https://discourse.julialang.org/u/Chen)\
**Post date:** [June 25, 2020, 4:43pm UTC](https://discourse.julialang.org/t/illegal-cpu-instructions-when-testing-gdal-jl/41922/13 "2020-06-25T16:43:22Z")

</div>

I think symlinks work. However, I got a new error:

```julia
ERROR: LoadError: InitError: could not load library "/home/c/.julia-usr/lib/libgdal.so"
/home/c/.julia-usr/lib/libgdal.so: undefined symbol: sqlite3_column_table_name
Stacktrace:
 [1] dlopen at /var/tmp/portage/dev-lang/julia-1.4.0-r2/work/julia-1.4.0/usr/share/julia/stdlib/v1.4/Libdl/src/Libdl.jl:109 [inlined] (repeats 2 times)
 [2] __init__ () at /home/c/.julia/packages/GDAL_jll/yQoer/src/wrappers/x86_64-linux-gnu-cxx11.jl:665
 [3] top-level scope at none:6
during initialization of module GDAL_jll
in expression starting at /home/c/.julia/packages/GDAL/tKD0i/test/runtests.jl:1
ERROR: Package GDAL errored during testing

```

I’m not entirely certain what caused the error. It could be that the gdal I have on my system, has a different version that GDAL.jl uses.

The Gentoo system that I use, has gdal 3.0.4 installed. What version of gdal (or libgdal) does GDAL.jl packages and uses?

---

<div class="post-metadata">

**Author:** ![giordano](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/giordano/32/2166_2.png) [@giordano](https://discourse.julialang.org/u/giordano)\
**Post date:** [June 25, 2020, 4:54pm UTC](https://discourse.julialang.org/t/illegal-cpu-instructions-when-testing-gdal-jl/41922/14 "2020-06-25T16:54:44Z")

</div>

> [@Chen](#):
>
> How did you find out the sha256 for GDAL\_jll, which is `[a7073274-a066-55f0-b90d-d619367d196c]` ?

That’s not a SHA256 hash but a UUID, and it’s in the [`Project.toml`](https://github.com/JuliaBinaryWrappers/GDAL_jll.jl/blob/a242496e63a7656ee175d31d20bf025165567e07/Project.toml#L2) of the package and in the [General registry](https://github.com/JuliaRegistries/General/blob/f867500498e58df79fa543f3e24e2a2463fb434a/G/GDAL_jll/Package.toml#L2).

> [@Chen](#):
>
> Why is it GDAL\_jll, but not GDAL? What’s the difference?

It’s `GDAL_jll` which provides the [artifacts](https://github.com/JuliaBinaryWrappers/GDAL_jll.jl/blob/a242496e63a7656ee175d31d20bf025165567e07/Artifacts.toml) that you want to override, `GDAL` doesn’t provide any artifact

> [@Chen](#):
>
> What version of gdal (or libgdal) does GDAL.jl packages and uses?

You should find all information in the [`README.md`](https://github.com/JuliaBinaryWrappers/GDAL_jll.jl/blob/a242496e63a7656ee175d31d20bf025165567e07/README.md) of [`GDAL_jll`](https://github.com/JuliaBinaryWrappers/GDAL_jll.jl)

---

<div class="post-metadata">

**Author:** ![Chen](https://avatars.discourse-cdn.com/v4/letter/c/3d9bf3/32.png) [@Chen](https://discourse.julialang.org/u/Chen)\
**Post date:** [June 25, 2020, 5:32pm UTC](https://discourse.julialang.org/t/illegal-cpu-instructions-when-testing-gdal-jl/41922/15 "2020-06-25T17:32:32Z")

</div>

Thank you.

Currently, Julia is using system libgdal.so, through a symlink.

The error above showed that the symbol `sqlite3_column_table_name` in undefined.

The system’s libgdar was compiled using:

```julia
/var/tmp/portage/sci-libs/gdal-3.0.4-r1/work/gdal-3.0.4/configure --prefix=/usr --build=x86_64-pc-linux-gnu --host=x86_64-pc-linux-gnu --mandir=/usr/share/man --infodir=/usr/share/info --datadir=/usr/share --sysconfdir=/etc --localstatedir=/var/lib --docdir=/usr/share/doc/gdal-3.0.4-r1 --htmldir=/usr/share/doc/gdal-3.0.4-r1/html --with-sysroot=/ --libdir=/usr/lib64 --includedir=/usr/include/gdal --disable-lto --disable-static --disable-driver-bsb --disable-driver-mrf --disable-pdf-plugin --enable-shared --enable-driver-grib --with-bash-completion=/usr/share/bash-completion/completions --with-cpp14 --with-cryptopp=no --with-expat --with-geotiff --with-gnm --with-hide-internal-symbols --with-libjson-c=/usr/ --with-libtiff --with-libtool --with-libz=/usr/ --without-charls --without-dods-root --without-ecw --without-epsilon --without-fgdb --without-fme --without-gta --without-grass --without-hdf4 --without-idb --without-ingres --without-jasper --without-jp2lura --without-jp2mrsid --without-kakadu --without-kea --without-libkml --without-mongocxx --without-mrsid --without-mrsid_lidar --without-msg --without-rasdaman --without-rasterlite2 --without-pcraster --without-pdfium --without-perl --without-podofo --without-python --without-qhull --without-sde --without-sfcgal --without-sosi --without-teigha --disable-debug --with-armadillo --with-pam --with-curl --without-cfitsio --with-geos --with-gif --without-xerces --without-hdf5 --with-pcidsk --with-jpeg --with-openjpeg --without-liblzma --without-mysql --without-netcdf --without-oci --without-odbc --without-ogdi --without-opencl --with-poppler --with-png --with-pg --with-spatialite --with-sqlite3=/usr --with-threads --without-webp --without-freexl --without-zstd --with-java=/opt/icedtea-bin-3.16.0 --with-jvm-lib=dlopen --without-mdb

```

According to [0], GDAL’s libgdal was compiled with the options of:

```julia
./configure --prefix=$prefix --host=$target \
    --with-geos=${bindir}/geos-config \
    --with-proj=$prefix \
    --with-libz=$prefix \
    --with-sqlite3=$prefix \
    --with-curl=${bindir}/curl-config \
    --with-openjpeg \
    --with-python=no \
    --enable-shared \
    --disable-static

```

Both use gdal 3.0.4. Both enabled with-sqlite3.

Do I need to set up an entry in Overrides.toml for sqlite3’s libraries too?

[0] [https://github.com/JuliaPackaging/Yggdrasil/blob/b65d76b0004ebb7a3b0256639cc1fdca34cad5a9/G/GDAL/build\_tarballs.jl](https://github.com/JuliaPackaging/Yggdrasil/blob/b65d76b0004ebb7a3b0256639cc1fdca34cad5a9/G/GDAL/build_tarballs.jl)

---

<div class="post-metadata">

**Author:** ![Chen](https://avatars.discourse-cdn.com/v4/letter/c/3d9bf3/32.png) [@Chen](https://discourse.julialang.org/u/Chen)\
**Post date:** [June 25, 2020, 7:54pm UTC](https://discourse.julialang.org/t/illegal-cpu-instructions-when-testing-gdal-jl/41922/16 "2020-06-25T19:54:54Z")

</div>

Now it seems that the problem is my Gentoo Linux system and/or Julia.

I have set to use the system versions of gdal, proj, and sqlite in Overrides.toml:

```julia
# Override package bindings by specifying the package UUID and bound artifact name.
#
# GDAL_jll
[a7073274-a066-55f0-b90d-d619367d196c]
GDAL = "/home/c/.julia-usr/"
# PROJ_jll
[58948b4f-47e0-5654-a9ad-f609743f8632]
PROJ = "/home/c/.julia-usr/"
# SQLite_jll
[76ed43ae-9a5d-5a62-8c75-30186b810ce8]
SQLite = "/home/c/.julia-usr/"

```

I got a similar error as compared to when I used these libraries that were shipped with GDAL.jl:

```julia
(@v1.4) pkg> test GDAL
    Testing GDAL
Status `/tmp/jl_RcQ971/Manifest.toml`
  [fa961155] CEnum v0.4.1
  [add2ef01] GDAL v1.1.2
  [a7073274] GDAL_jll v3.0.4+0
  [d604d12d] GEOS_jll v3.8.1+0
  [deac9b47] LibCURL_jll v7.70.0+0
  [29816b5a] LibSSH2_jll v1.9.0+1
  [c8ffd9c3] MbedTLS_jll v2.16.0+2
  [58948b4f] PROJ_jll v6.3.2+1
  [76ed43ae] SQLite_jll v3.31.1+0
  [83775a58] Zlib_jll v1.2.11+10
  [8e850ede] nghttp2_jll v1.40.0+0
  [2a0f44e3] Base64 
  [ade2ca70] Dates 
  [8ba89e20] Distributed 
  [b77e0a4c] InteractiveUtils 
  [76f85450] LibGit2 
  [8f399da3] Libdl 
  [56ddb016] Logging 
  [d6f4376e] Markdown 
  [44cfe95a] Pkg 
  [de0858da] Printf 
  [3fa0cd96] REPL 
  [9a3f8284] Random 
  [ea8e919c] SHA 
  [9e88b42a] Serialization 
  [6462fe0b] Sockets 
  [8dfed614] Test 
  [cf7118a7] UUIDs 
  [4ec0a83e] Unicode 
┌ Info: GDAL 3.0.4, released 2020/01/28
│ 196 GDAL drivers found
└ 73 OGR drivers found

signal (6): Aborted
in expression starting at /home/c/.julia/packages/GDAL/tKD0i/test/tutorial_raster.jl:24
gsignal at /lib64/libc.so.6 (unknown line)
abort at /lib64/libc.so.6 (unknown line)
unknown function (ip: 0x7f1eecda53c8)
unknown function (ip: 0x7f1ed943421c)
_ZNK5osgeo4proj2io21IPROJStringExportable18exportToPROJStringB5cxx11EPNS1_19PROJStringFormatterE at /home/c/.julia-usr/lib/libproj.so (unknown line)
unknown function (ip: 0x7f1ed9557f5b)
proj_create_conversion at /home/c/.julia-usr/lib/libproj.so (unknown line)
_ZN19OGRSpatialReference9SetProjCSEPKc at /home/c/.julia-usr/lib/libgdal.so (unknown line)
unknown function (ip: 0x7f1ed823b77d)
unknown function (ip: 0x7f1ed81fe681)
unknown function (ip: 0x7f1ed820478b)
_ZNK11GDALDataset16GetProjectionRefEv at /home/c/.julia-usr/lib/libgdal.so (unknown line)
gdalgetprojectionref at /home/c/.julia/packages/GDAL/tKD0i/src/gdal_h.jl:1070
unknown function (ip: 0x7f1edcb37542)
unknown function (ip: 0x7f1ef049fdbd)
unknown function (ip: 0x7f1ef049fa83)
unknown function (ip: 0x7f1ef049fee5)
unknown function (ip: 0x7f1ef04a0ec1)
unknown function (ip: 0x7f1ef04a14a9)
unknown function (ip: 0x7f1ef04a1a07)
unknown function (ip: 0x7f1ef04b8f40)
unknown function (ip: 0x7f1ef049673d)
jl_load at /usr/bin/../lib64/libjulia.so.1 (unknown line)
unknown function (ip: 0x7f1ee3776b28)
#3 at /home/c/.julia/packages/GDAL/tKD0i/test/runtests.jl:45
cd at ./file.jl:104
unknown function (ip: 0x7f1ef049fdbd)
unknown function (ip: 0x7f1ef049fa83)
unknown function (ip: 0x7f1ef049fee5)
unknown function (ip: 0x7f1ef04a0ec1)
unknown function (ip: 0x7f1ef04a14a9)
unknown function (ip: 0x7f1ef04a14a9)
unknown function (ip: 0x7f1ef04a1a07)
unknown function (ip: 0x7f1ef04b8f40)
unknown function (ip: 0x7f1ef049673d)
jl_load at /usr/bin/../lib64/libjulia.so.1 (unknown line)
unknown function (ip: 0x7f1ee3776b28)
unknown function (ip: 0x7f1ef049fdbd)
unknown function (ip: 0x7f1ef049fa83)
unknown function (ip: 0x7f1ef049fee5)
unknown function (ip: 0x7f1ef04a0ec1)
unknown function (ip: 0x7f1ef04a1a07)
unknown function (ip: 0x7f1ef04b8f40)
unknown function (ip: 0x7f1ef04b9214)
jl_toplevel_eval_in at /usr/bin/../lib64/libjulia.so.1 (unknown line)
unknown function (ip: 0x7f1ee352eb34)
unknown function (ip: 0x7f1ee352d015)
unknown function (ip: 0x7f1ee352e57f)
unknown function (ip: 0x7f1ee352e6c5)
unknown function (ip: 0x560a30ba071a)
unknown function (ip: 0x560a30ba032e)
__libc_start_main at /lib64/libc.so.6 (unknown line)
unknown function (ip: 0x560a30ba03d9)
Allocations: 3341345 (Pool: 3340594; Big: 751); GC: 4
ERROR: Package GDAL errored during testing

```

I run Jula 1.4.0-r1 on my system. I will try to update to the latest stable version when I find time.

But it may likely be that I have hitten a dead end and do not know how to fix this problem.

---

<div class="post-metadata">

**Author:** ![Chen](https://avatars.discourse-cdn.com/v4/letter/c/3d9bf3/32.png) [@Chen](https://discourse.julialang.org/u/Chen)\
**Post date:** [June 26, 2020, 12:05am UTC](https://discourse.julialang.org/t/illegal-cpu-instructions-when-testing-gdal-jl/41922/17 "2020-06-26T00:05:47Z")

</div>

The previously used Julia 1.4.0-r1 was compiled using LLVM 8.0.1, which was downloaded from internet.

Now I have compiled Julia 1.4.1 using my system’s LLVM 9.0.1. The GDAL problem persists.

---

<div class="post-metadata">

**Author:** ![visr](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/visr/32/17204_2.png) [@visr](https://discourse.julialang.org/u/visr)\
**Post date:** [June 26, 2020, 2:01pm UTC](https://discourse.julialang.org/t/illegal-cpu-instructions-when-testing-gdal-jl/41922/18 "2020-06-26T14:01:48Z")

</div>

Too bad it seems to be hard to get this working. I’m not sure, but looking at the error you shared:

```julia
_ZNK5osgeo4proj2io21IPROJStringExportable18exportToPROJStringB5cxx11EPNS1_19PROJStringFormatterE at /home/c/.julia-usr/lib/libproj.so (unknown line)
proj_create_conversion at /home/c/.julia-usr/lib/libproj.so (unknown line)
_ZN19OGRSpatialReference9SetProjCSEPKc at /home/c/.julia-usr/lib/libgdal.so (unknown line)

```

My first guess was a mismatching CXX string ABI, that could still be something to try, see also [Error in building julia](https://discourse.julialang.org/t/error-in-building-julia/33272).

---

<div class="post-metadata">

**Author:** ![Chen](https://avatars.discourse-cdn.com/v4/letter/c/3d9bf3/32.png) [@Chen](https://discourse.julialang.org/u/Chen)\
**Post date:** [June 26, 2020, 10:35pm UTC](https://discourse.julialang.org/t/illegal-cpu-instructions-when-testing-gdal-jl/41922/19 "2020-06-26T22:35:42Z")

</div>

Thank you.

The system uses GCC 9.3.0, which is quite recent.

There is a different error in building Julia on Fedora: [https://github.com/JuliaLang/julia/issues/27118](https://github.com/JuliaLang/julia/issues/27118). But I do not know if this is relevant for my Gentoo amd64 system.
