【发布时间】:2015-04-25 09:15:23
【问题描述】:
https://travis-ci.org/mmmries/sqlitex/builds/51889563#L96
我正在尝试为我的 sqlite Elixir 项目设置 Travis CI 集成。当前,在尝试编译作为 esqlite 依赖项的一部分的 C 扩展时,构建失败。错误消息回来了
c_src/esqlite3_nif.o: file not recognized: File format not recognized
所以编译错误发生在我不太了解的钢筋层中。我无法在 Travis 之外复制此构建错误,因此我不确定下一步该去哪里。
【问题讨论】:
-
我会开始研究 Travis-CI 上的 gcc 版本。接下来,我将研究您的钢筋版本以及在 esqlite 上使用的版本。鉴于他们使用 travis,它在某些条件下确实有效。也许如果您在安装依赖项之前执行“混合 local.rebar”,它会起作用,因为它可能会使用与本地相同的版本?
-
gcc 版本与as the build for esqlite 相同。我还尝试在编译之前使用
mix local.rebar --force作为额外的安装步骤,但没有成功 -
Ohhhhh,看来问题在于我如何发布 esqlite hex 包。 tar 文件包含已编译的 esqlite3_nif.o(在 OSX 机器上),这就是为什么当我尝试在另一台 OSX 机器上安装和编译时它工作正常,但在 travis 使用的 ubuntu 映像上失败。谁能告诉我一些关于如何正确发布应该在客户端机器上编译的钢筋项目的十六进制包的文档?
-
您只是不想包含“priv”目录(或 .so 文件编译到的目录)。您可以通过在包配置中为十六进制指定“文件”选项来配置哪些文件是包的一部分。
标签: erlang travis-ci elixir rebar