# PackageCompiler throwing error on fresh machine

**URL:** https://discourse.julialang.org/t/packagecompiler-throwing-error-on-fresh-machine/68109
**Category:** General Usage
**Tags:** package, package-compiler
**Created:** [September 13, 2021, 4:29pm UTC](https://discourse.julialang.org/t/packagecompiler-throwing-error-on-fresh-machine/68109 "2021-09-13T16:29:35Z")
**Posts on this page:** 7
**Page:** 1

<div class="post-metadata">

### Author: ![connormeaton](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/connormeaton/32/27120_2.png) [@connormeaton](https://discourse.julialang.org/u/connormeaton)
#### Post date: [September 13, 2021, 4:29pm UTC](https://discourse.julialang.org/t/packagecompiler-throwing-error-on-fresh-machine/68109/1 "2021-09-13T16:29:35Z")

</div>

I have been able to successfully use PackageCompiler to compile a Julia script into a binary and run on a different machine (same OS and distro) that doesn’t have Julia or any dependencies. For some reason, my workflow no longer seems to work as it used to. Here is what I’ve done:

```julia
$ wget https://julialang-s3.julialang.org/bin/linux/x64/1.6/julia-1.6.2-linux-x86_64.tar.gz
$ tar zxvf julia-1.6.2-linux-x86_64.tar.gz
$ julia
> ] add PkgTemplates PackageCompiler
> t = Template(;user="username")
> t("app")
> cd("/home/admin/.julia/dev/app") 
> ] activate
> ] dev .
> activate /home/admin/.julia/dev/app
> ] add DataFrames CSV Statistics LinearAlgebra DSP SingularSpectrumAnalysis Loess
> using Pkg; Pkg.precompile()
> exit()

```

Now to add artifacts file (not sure if this is necessary but it worked in the past? …

```julia
$ cd app
$ vim Artifacts.toml

```

Paste this into file:

```julia
[[fooifier]]
arch = "x86_64"
git-tree-sha1 = "98d93024ca384050c59d554415b75d61e467fd8c"
libc = "glibc"
os = "linux"

    [[fooifier.download]]
    sha256 = "5208c63a9d07e592c78f541fc13caa8cd191b11e7e77b31d407237c2b13ec391"
    url = "https://github.com/staticfloat/small_bin/raw/master/libfoo/libfoo.x86_64-linux-gnu.tar.gz"

[[fooifier]]
arch = "i686"
git-tree-sha1 = "c3a9f27382862092e064bcf4aeb3cb7190578338"
libc = "glibc"
os = "linux"

    [[fooifier.download]]
    sha256 = "97655b6a218d61284723b6923d7c96e6a256fa68b9419d723c588aa24404b102"
    url = "https://github.com/staticfloat/small_bin/raw/master/libfoo/libfoo.i686-linux-gnu.tar.gz"

[[fooifier]]
arch = "x86_64"
git-tree-sha1 = "f413ff2438a4e9e9dd69b23c35ca30de6af069cc"
os = "macos"

    [[fooifier.download]]
    sha256 = "fcc268772d6f21d65b45fcf3854a3142679b78e53c7673dac26c95d6ccc89a24"
    url = "https://github.com/staticfloat/small_bin/raw/master/libfoo/libfoo.x86_64-apple-darwin14.tar.gz"

[[fooifier]]
arch = "x86_64"
git-tree-sha1 = "d61f806c76b57e54f343634c5219d00d4c81b077" # FIX!
os = "windows"

    [[fooifier.download]]
    sha256 = "7f8939e9529835b83810d3ae7e2556f6e002d571f619894e54ece42ea5262b7f"
    url = "https://github.com/staticfloat/small_bin/raw/master/libfoo/libfoo.x86_64-w64-mingw32.tar.gz"

[[fooifier]]
arch = "aarch64"
git-tree-sha1 = "281cbe3dd65aa4bdb887bfb29651da500c81e242"
os = "linux"

    [[fooifier.download]]
    sha256 = "36886ac25cf5678c01fe20630b413f9354b7a3721c6a2c2043162f7ebd147ff5"
    url = "https://github.com/staticfloat/small_bin/raw/master/libfoo/libfoo.aarch64-linux-gnu.tar.gz"

```

Now add src code into `src/app.jl`

Then compile:

```julia
$ julia
> using PackageCompiler
> create_app("../app","app_compiled";force=true)

```

In the past, I’ve been able to transfer the output directory from this compilation (`app_compiled`) to a brand new machine with the same OS and distribution and it runs as expected. Now however, the process builds without error, but when I transfer the compiled binary, I get this error:

```julia
admin@ip-172-31-23-78:~$ app_compiled/bin/app input.csv output.csv
fatal: error thrown and no exception handler available.
InitError(mod=:FFTW, error=ErrorException("could not load library "/home/admin/.julia/artifacts/e8fff3113d692608a8bb8ab8492ec2f02a0de103/lib/libfftw3.so"
/home/admin/.julia/artifacts/e8fff3113d692608a8bb8ab8492ec2f02a0de103/lib/libfftw3.so: cannot open shared object file: No such file or directory"))
jl_errorf at /buildworker/worker/package_linux64/build/src/rtutils.c:77
jl_load_dynamic_library at /buildworker/worker/package_linux64/build/src/dlload.c:266
jl_get_library_ at /buildworker/worker/package_linux64/build/src/runtime_ccall.cpp:48
jl_get_library_ at /buildworker/worker/package_linux64/build/src/runtime_ccall.cpp:32 [inlined]
jl_lazy_load_and_lookup at /buildworker/worker/package_linux64/build/src/runtime_ccall.cpp:80
fftw_init_threads at /home/admin/.julia/packages/FFTW/kKdEk/src/providers.jl:69 [inlined]
__init__ at /home/admin/.julia/packages/FFTW/kKdEk/src/FFTW.jl:30
jfptr ___init___ 35047 at /home/admin/ app_compiled/bin/app.so (unknown line)
_jl_invoke at /buildworker/worker/package_linux64/build/src/gf.c:2237 [inlined]
jl_apply_generic at /buildworker/worker/package_linux64/build/src/gf.c:2419
jl_apply at /buildworker/worker/package_linux64/build/src/julia.h:1703 [inlined]
jl_module_run_initializer at /buildworker/worker/package_linux64/build/src/toplevel.c:72
_julia_init at /buildworker/worker/package_linux64/build/src/init.c:794
main at app_compiled/bin/app (unknown line)
__libc_start_main at /lib/x86_64-linux-gnu/libc.so.6 (unknown line)
_start at app_compiled/bin/app (unknown line)

```

If useful, I am using Julia 1.6.2 and Debian 10.

---

<div class="post-metadata">

### Author: ![kristoffer.carlsson](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/kristoffer.carlsson/32/22_2.png) [@kristoffer.carlsson](https://discourse.julialang.org/u/kristoffer.carlsson)
#### Post date: [September 13, 2021, 4:36pm UTC](https://discourse.julialang.org/t/packagecompiler-throwing-error-on-fresh-machine/68109/2 "2021-09-13T16:36:10Z")

</div>

What FFTW version is this?

---

<div class="post-metadata">

### Author: ![connormeaton](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/connormeaton/32/27120_2.png) [@connormeaton](https://discourse.julialang.org/u/connormeaton)
#### Post date: [September 13, 2021, 4:45pm UTC](https://discourse.julialang.org/t/packagecompiler-throwing-error-on-fresh-machine/68109/3 "2021-09-13T16:45:35Z")

</div>

> [@connormeaton](#):
>
> ```julia
> > ] add DataFrames CSV Statistics LinearAlgebra DSP SingularSpectrumAnalysis Loess
> 
> ```

I’m not sure, I don’t even specifically add FFTW? Will look, maybe its a dependency on one of my packages.

On the machine I am doing the compiling:

```julia
julia> using FFTW
ERROR: ArgumentError: Package FFTW not found in current path:
- Run `import Pkg; Pkg.add("FFTW")` to install the FFTW package.

Stacktrace:
 [1] require(into::Module, mod::Symbol)
   @ Base ./loading.jl:893

```

I’ve never needed to explicitly add FFTW during compilation, do you think this would help?

---

<div class="post-metadata">

### Author: ![kristoffer.carlsson](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/kristoffer.carlsson/32/22_2.png) [@kristoffer.carlsson](https://discourse.julialang.org/u/kristoffer.carlsson)
#### Post date: [September 13, 2021, 5:31pm UTC](https://discourse.julialang.org/t/packagecompiler-throwing-error-on-fresh-machine/68109/4 "2021-09-13T17:31:03Z")

</div>

FFTW is what is erroring though. You should be able to see its version by doing `pkg> st -m`.

---

<div class="post-metadata">

### Author: ![connormeaton](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/connormeaton/32/27120_2.png) [@connormeaton](https://discourse.julialang.org/u/connormeaton)
#### Post date: [September 13, 2021, 5:47pm UTC](https://discourse.julialang.org/t/packagecompiler-throwing-error-on-fresh-machine/68109/5 "2021-09-13T17:47:01Z")

</div>

Ah, okay.

I ran the command in my base environment:

```julia
  [7a1cc6ca] FFTW v1.4.3

```

I never explicitly downloaded FFTW, so it must be native when installing Julia?

---

<div class="post-metadata">

### Author: ![kristoffer.carlsson](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/kristoffer.carlsson/32/22_2.png) [@kristoffer.carlsson](https://discourse.julialang.org/u/kristoffer.carlsson)
#### Post date: [September 13, 2021, 5:49pm UTC](https://discourse.julialang.org/t/packagecompiler-throwing-error-on-fresh-machine/68109/6 "2021-09-13T17:49:46Z")

</div>

> [@connormeaton](#):
>
> I never explicitly downloaded FFTW, so it must be native when installing Julia?

No, one of the packages you have added depends on FFTW, so it gets pulled down automatically. I think this should be fixed in FFTW 1.4.4 via the fix in [make FFTW relocatable, take 2 by KristofferC · Pull Request #212 · JuliaMath/FFTW.jl · GitHub](https://github.com/JuliaMath/FFTW.jl/pull/212).

---

<div class="post-metadata">

### Author: ![connormeaton](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/connormeaton/32/27120_2.png) [@connormeaton](https://discourse.julialang.org/u/connormeaton)
#### Post date: [September 13, 2021, 5:53pm UTC](https://discourse.julialang.org/t/packagecompiler-throwing-error-on-fresh-machine/68109/7 "2021-09-13T17:53:49Z")

</div>

Ah it worked! I just added FFTW as a part of the package `add` line in my workflow, which updated to 1.4.5. Thanks for the tip.
