【问题标题】:could not compile dependency :salty, "mix compile" failed无法编译依赖项:salty,“混合编译”失败
【发布时间】:2019-11-01 19:42:39
【问题描述】:

我正在使用 mix compile 编译我的应用程序,并且依赖项 salty 发生错误。

我已经添加了依赖saltylibsodium。 但仍然没有解决错误。

这是我的 mix.exs 文件,其中包含所有依赖项。

defp deps do
    [
      {:poison, "~> 3.0", override: true},
      {:syndicate, in_umbrella: true},
      {:xarango, "~> 0.7.0"},
      {:ecto, "~> 3.1"},
      {:phoenix, "~> 1.4.0"},
      {:gettext, "~> 0.11"},
      {:cowboy, "~> 2.6"},
      {:joken, "~> 2.0"},
      {:ecto_sql, "~> 3.0"},
      {:jason, "~> 1.0"},
      {:postgrex, ">= 0.0.0"},
      {:sage, "~> 0.4.0"},
      {:salty, "~> 0.1.3", hex: :libsalty},
      {:libsodium, "~> 0.0.10"}
    ]
  end

它应该可以完美编译,但它会抛出一个错误

 SALTY_CONST_INT64(box_curve25519xchacha20poly1305_SEEDBYTES);
 ^
src/salty_nif.c: In function ‘salty_aead_xchacha20poly1305_ietf_ABYTES’:
src/salty_nif.c:632:1: warning: control reaches end of non-void function [-Wreturn-type]
 SALTY_CONST_INT64(aead_xchacha20poly1305_ietf_ABYTES);
 ^
src/salty_nif.c: In function ‘salty_aead_xchacha20poly1305_ietf_NPUBBYTES’:
src/salty_nif.c:631:1: warning: control reaches end of non-void function [-Wreturn-type]
 SALTY_CONST_INT64(aead_xchacha20poly1305_ietf_NPUBBYTES);
 ^
src/salty_nif.c: In function ‘salty_aead_xchacha20poly1305_ietf_NSECBYTES’:
src/salty_nif.c:630:1: warning: control reaches end of non-void function [-Wreturn-type]
 SALTY_CONST_INT64(aead_xchacha20poly1305_ietf_NSECBYTES);
 ^
src/salty_nif.c: In function ‘salty_aead_xchacha20poly1305_ietf_KEYBYTES’:
src/salty_nif.c:629:1: warning: control reaches end of non-void function [-Wreturn-type]
 SALTY_CONST_INT64(aead_xchacha20poly1305_ietf_KEYBYTES);
 ^
src/salty_nif.c: In function ‘salty_aead_chacha20poly1305_ietf_ABYTES’:
src/salty_nif.c:578:1: warning: control reaches end of non-void function [-Wreturn-type]
 SALTY_CONST_INT64(aead_chacha20poly1305_ietf_ABYTES);
 ^
src/salty_nif.c: In function ‘salty_aead_chacha20poly1305_ietf_NPUBBYTES’:
src/salty_nif.c:577:1: warning: control reaches end of non-void function [-Wreturn-type]
 SALTY_CONST_INT64(aead_chacha20poly1305_ietf_NPUBBYTES);
 ^
src/salty_nif.c: In function ‘salty_aead_chacha20poly1305_ietf_NSECBYTES’:
src/salty_nif.c:576:1: warning: control reaches end of non-void function [-Wreturn-type]
 SALTY_CONST_INT64(aead_chacha20poly1305_ietf_NSECBYTES);
 ^
src/salty_nif.c: In function ‘salty_aead_chacha20poly1305_ietf_KEYBYTES’:
src/salty_nif.c:575:1: warning: control reaches end of non-void function [-Wreturn-type]
 SALTY_CONST_INT64(aead_chacha20poly1305_ietf_KEYBYTES);
 ^
Makefile:37: recipe for target 'priv/salty_nif.so' failed
make: *** [priv/salty_nif.so] Error 1
 SALTY_CONST_INT64(box_curve25519xchacha20poly1305_SEEDBYTES);
 ^
src/salty_nif.c: In function ‘salty_aead_xchacha20poly1305_ietf_ABYTES’:
src/salty_nif.c:632:1: warning: control reaches end of non-void function [-Wreturn-type]
 SALTY_CONST_INT64(aead_xchacha20poly1305_ietf_ABYTES);
 ^
src/salty_nif.c: In function ‘salty_aead_xchacha20poly1305_ietf_NPUBBYTES’:
src/salty_nif.c:631:1: warning: control reaches end of non-void function [-Wreturn-type]
 SALTY_CONST_INT64(aead_xchacha20poly1305_ietf_NPUBBYTES);
 ^
src/salty_nif.c: In function ‘salty_aead_xchacha20poly1305_ietf_NSECBYTES’:
src/salty_nif.c:630:1: warning: control reaches end of non-void function [-Wreturn-type]
 SALTY_CONST_INT64(aead_xchacha20poly1305_ietf_NSECBYTES);
 ^
src/salty_nif.c: In function ‘salty_aead_xchacha20poly1305_ietf_KEYBYTES’:
src/salty_nif.c:629:1: warning: control reaches end of non-void function [-Wreturn-type]
 SALTY_CONST_INT64(aead_xchacha20poly1305_ietf_KEYBYTES);
 ^
src/salty_nif.c: In function ‘salty_aead_chacha20poly1305_ietf_ABYTES’:
src/salty_nif.c:578:1: warning: control reaches end of non-void function [-Wreturn-type]
 SALTY_CONST_INT64(aead_chacha20poly1305_ietf_ABYTES);
 ^
src/salty_nif.c: In function ‘salty_aead_chacha20poly1305_ietf_NPUBBYTES’:
src/salty_nif.c:577:1: warning: control reaches end of non-void function [-Wreturn-type]
 SALTY_CONST_INT64(aead_chacha20poly1305_ietf_NPUBBYTES);
 ^
src/salty_nif.c: In function ‘salty_aead_chacha20poly1305_ietf_NSECBYTES’:
src/salty_nif.c:576:1: warning: control reaches end of non-void function [-Wreturn-type]
 SALTY_CONST_INT64(aead_chacha20poly1305_ietf_NSECBYTES);
 ^
src/salty_nif.c: In function ‘salty_aead_chacha20poly1305_ietf_KEYBYTES’:
src/salty_nif.c:575:1: warning: control reaches end of non-void function [-Wreturn-type]
 SALTY_CONST_INT64(aead_chacha20poly1305_ietf_KEYBYTES);
 ^
Makefile:37: recipe for target 'priv/salty_nif.so' failed
make: *** [priv/salty_nif.so] Error 1

could not compile dependency :salty, "mix compile" failed. You can recompile this dependency with "mix deps.compile salty", update it with "mix deps.update salty" or clean it with "mix deps.clean salty"
** (Mix) Could not compile with "make" (exit status: 2).
You need to have gcc and make installed. If you are using
Ubuntu or any other Debian-based system, install the packages
"build-essential". Also install "erlang-dev" package if not
included in your Erlang/OTP version. If you're on Fedora, run
"dnf group install 'Development Tools'".

【问题讨论】:

  • 你需要安装 gcc 和 make。您是否按照此错误消息进行操作?
  • 是的..它已经安装了。并且还安装了 erlang-dev 包
  • 但是每当我尝试通过apt-get install libsodium-dev 安装 libsodium 时,它都会说它已经是最新的。 Reading package lists... Done Building dependency tree Reading state information... Done libsodium-dev is already the newest version (1.0.8-5). 0 upgraded, 0 newly installed, 0 to remove and 5 not upgraded.
  • 包管理器默认存储库通常没有最新版本的包。听起来您需要从其他地方获取更新版本的 libsodium。
  • 我在哪里可以得到那个?

标签: erlang elixir phoenix-framework libsodium


【解决方案1】:

正如 cmets 中提到的,安装 libsodium 1.0.12+ 可以解决问题。

【讨论】:

    猜你喜欢
    • 2021-10-20
    • 2015-02-04
    • 2018-03-16
    • 2019-11-02
    • 2021-12-26
    • 1970-01-01
    • 2017-05-13
    • 2019-06-22
    • 2019-10-20
    相关资源
    最近更新 更多