我正在尝试在 Julia 中使用 HDF5 包,但没有成功,尝试添加时出现以下错误。
julia> Pkg.add("HDF5")
Updating registry at `~/.julia/registries/General`
Updating git-repo `https://github.com/JuliaRegistries/General.git`
Resolving package versions...
Updating `~/.julia/environments/v1.0/Project.toml`
[no changes]
Updating `~/.julia/environments/v1.0/Manifest.toml`
[no changes]
我在构建它时得到以下内容。
julia> Pkg.build("HDF5")
Building CMake → `~/.julia/packages/CMake/nSK2r/deps/build.log`
Building Blosc → `~/.julia/packages/Blosc/lzFr0/deps/build.log`
Building HDF5 ─→ `~/.julia/packages/HDF5/Y9Znv/deps/build.log`
┌ Error: Error building `HDF5`:
│ ERROR: LoadError: Your platform ("aarch64-linux-gnu", parsed as "aarch64-linux-gnu-gcc4-cxx11") is not supported by this package!
│ Stacktrace:
│ [1] error(::String) at ./error.jl:33
│ [2] top-level scope at /home/nvidia/.julia/packages/HDF5/Y9Znv/deps/build.jl:35
│ [3] include at ./boot.jl:317 [inlined]
│ [4] include_relative(::Module, ::String) at ./loading.jl:1038
│ [5] include(::Module, ::String) at ./sysimg.jl:29
│ [6] include(::String) at ./client.jl:388
│ [7] top-level scope at none:0
│ in expression starting at /home/nvidia/.julia/packages/HDF5/Y9Znv/deps/build.jl:31
└ @ Pkg.Operations ~/julia/usr/share/julia/stdlib/v1.0/Pkg/src/Operations.jl:1068
这是安装的 GCC。
nvidia@tegra-ubuntu:~$ gcc -v
Using built-in specs.
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/usr/lib/gcc/aarch64-linux-gnu/5/lto-wrapper
Target: aarch64-linux-gnu
Configured with: ../src/configure -v --with-pkgversion='Ubuntu/Linaro 5.4.0-6ubuntu1~16.04.11' --with-bugurl=file:///usr/share/doc/gcc-5/README.Bugs --enable-languages=c,ada,c++,java,go,d,fortran,objc,obj-c++ --prefix=/usr --program-suffix=-5 --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --libdir=/usr/lib --enable-nls --with-sysroot=/ --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --with-default-libstdcxx-abi=new --enable-gnu-unique-object --disable-libquadmath --enable-plugin --with-system-zlib --disable-browser-plugin --enable-java-awt=gtk --enable-gtk-cairo --with-java-home=/usr/lib/jvm/java-1.5.0-gcj-5-arm64/jre --enable-java-home --with-jvm-root-dir=/usr/lib/jvm/java-1.5.0-gcj-5-arm64 --with-jvm-jar-dir=/usr/lib/jvm-exports/java-1.5.0-gcj-5-arm64 --with-arch-directory=aarch64 --with-ecj-jar=/usr/share/java/eclipse-ecj.jar --enable-multiarch --enable-fix-cortex-a53-843419 --disable-werror --enable-checking=release --build=aarch64-linux-gnu --host=aarch64-linux-gnu --target=aarch64-linux-gnu
Thread model: posix
gcc version 5.4.0 20160609 (Ubuntu/Linaro 5.4.0-6ubuntu1~16.04.11)
感谢您的帮助。
我在ARM上构建的Julia也遇到了同样的可怕麻烦。似乎这种对自定义二进制文件的依赖已经在 HDF5 v0.12 中引入。所以对我来说,它强制使用旧版本的HDF5:
pkg> add HDF5@0.11.1
pkg> pin HDF5@0.11.1
之前,我已经安装了(在Debian/armhf中(hdf5-tools,libhdf5-dev。
希望这有帮助。但我认为我们应该通知开发人员,因为 HDF5 是一个非常重要的 pkg(被 JLD 使用,没有它 Julia 几乎无法使用(,并且限制为非常小的一组支持的架构是愚蠢的。