ejabberd 'make' 通过“无法运行已编译的 C 程序”

Posted

技术标签:

【中文标题】ejabberd \'make\' 通过“无法运行已编译的 C 程序”【英文标题】:ejabberd 'make' through "cannot run compiled C program"ejabberd 'make' 通过“无法运行已编译的 C 程序” 【发布时间】:2016-02-14 00:33:49 【问题描述】:

我正在尝试在 CentOS 6.x 上安装 ejabberd,当我运行“make”命令时,它会出现以下错误。

ejabberd]# make
rm -rf deps/.got
rm -rf deps/.built
/usr/lib/erlang/bin/escript rebar get-deps && :> deps/.got
==> goldrush (get-deps)
==> lager (get-deps)
==> p1_utils (get-deps)
==> p1_cache_tab (get-deps)
==> p1_tls (get-deps)
==> p1_stringprep (get-deps)
==> p1_xml (get-deps)
==> p1_stun (get-deps)
==> esip (get-deps)
==> p1_yaml (get-deps)
==> jiffy (get-deps)
==> oauth2 (get-deps)
==> xmlrpc (get-deps)
==> p1_zlib (get-deps)
==> p1_iconv (get-deps)
==> rel (get-deps)
==> ejabberd (get-deps)
checking for gcc... cc
checking whether the C compiler works... yes
checking for C compiler default output file name... a.out
checking for suffix of executables... 
checking whether we are cross compiling... configure: error: in `/root/ejabberd/deps/p1_tls':
configure: error: cannot run C compiled programs.
If you meant to cross compile, use `--host'.
See `config.log' for more details
ERROR: Command ['get-deps'] failed!
make: *** [deps/.got] Error 1

你能帮我解决这个问题吗?我已经安装了 Erlang-17.5 和所有必需的“开发工具”。谢谢。

【问题讨论】:

上面写着See config.log for more details,config.log 没有显示任何有用的信息吗?您可以尝试yum groupinstall "Development Tools" -y 以确保您拥有所有正确的软件包,然后再试一次。虽然不是以 root 身份运行“make”(构建不需要或具有 root 访问权限),然后您可以以 root 身份运行“make install”。 我的猜测是您没有安装真正的 C 编译器,而只是安装了一些无法编译真正程序的默认值。安装 gcc,然后重新配置。 @Michael - 你想看看我的 config.log 文件吗?。我安装了你提到的所有“开发工具”,但它对我没有用。 @Steve - 我安装了 gcc。但我怎样才能确定它是真的还是假的呢? 尝试重新运行配置。如果它说“检查 gcc”,它应该报告找到 gcc 而不是 cc。 【参考方案1】:

当您收到此错误时,请确保安装

 # yum install glibc-headers

这将解决您的错误。

【讨论】:

【参考方案2】:

一个有效的 gcc:# yum install gcc-c++

即c++ 编译器的安装还将安装使 gcc 功能齐全的依赖项:glibc-devel、glibc-headers、kernel-headers。

【讨论】:

我单独安装 glibc-headers。它对我有用。所以这意味着“# yum install gcc-c++”不会安装依赖项。顺便说一句,非常感谢。从您的帖子中我得到了解决方案。

以上是关于ejabberd 'make' 通过“无法运行已编译的 C 程序”的主要内容,如果未能解决你的问题,请参考以下文章

无法在 Mac 上安装 ejabberd

如何通过 HTTP 访问 ejabberd 管理 api?

ejabberd - 通过 API 连接两个用户

如何记录通过 ejabberd 的消息

如何使用 ejabberd 聊天应用程序通过 API 层传递服务器

Ejabberd 通过 Web 界面安装 mod_multicast 模块