【问题标题】:Guile build error on linuxlinux上的Guile构建错误
【发布时间】:2017-09-19 05:44:00
【问题描述】:

我在构建 guile 时收到以下错误。两个版本都有错误,version 2.2.2、2.2.0 版和version 2.0.14

fports.c: In function 'fport_input_waiting':
fports.c:626:10: error: variable 'pollfd' has initializer but incomplete type
   struct pollfd pollfd = { fdes, POLLIN, 0 };
fports.c:626:34: error: 'POLLIN' undeclared (first use in this function)
   struct pollfd pollfd = { fdes, POLLIN, 0 };
fports.c:626:17: error: storage size of 'pollfd' isn't known
   struct pollfd pollfd = { fdes, POLLIN, 0 };

我通过以下步骤构建包:

$ wget "$DOWNLOAD_URL"
$ tar xzf guile-{$VERSION}.tar.gz
$ cd guile-${VERSION}
$ ./configure --prefix=$HOME/.local --disable-static --disable-networking
$ make -j 12

[UPDATE> 我已经将libunistring-0.9.7gc-7.6.0 安装到$HOME/.local,所以我使用了以下./configure 命令,但没有更好的结果。

$ ./configure --prefix=$HOME/.local \
              --with-libunistring-prefix=$HOME/.local \
              --with-sysroot=$HOME/.local \
              --with-libgmp-prefix=$HOME/.local \
              --with-threads                              ## updated configure command

config.log

451 configure:8023: checking for poll.h
452 configure:8023: gcc -c -g -O2  conftest.c >&5
453 configure:8023: $? = 0
454 configure:8023: result: yes

再深入一点,我看到所需的文件poll.h 似乎 定义在lib/poll.h

但我在/usr/include/poll.h 中也有一个poll.h 重定向到/usr/include/x86_64-linux-gnu/sys/poll.h

还有libguile/poll.h 重定向到libguile/__scm.h 这里是__scm.h struct pollfd 没有定义

配置包的时候好像有问题。

我使用的是 Ubuntu 服务器。并且 sysadmin 路由可能需要一个 比平时多一点。所以我更喜欢构建和安装本地 包。

我正在尝试使用gcc-4.8进行编译

有人知道如何编译吗?

【问题讨论】:

  • 为什么不联系邮件列表或 IRC 上的诡计维护者呢?当您提出问题时,2.2.2 是 1 天前的版本。您应该提供您正在使用的 Ubuntu 版本。一周前,我设法在 Ubuntu 14.04 上编译了 2.2.0。能编译2.2.0版本吗?
  • 我已经给维护者发了邮件,正在等待回复。尝试使用 v2.2.0 但结果相同。
  • 我下载了 Guile2.2.2 的 zip 文件,解压缩到新目录 ~/Guile(在 ubuntu 16.04 上)然后运行 ​​./configure 结果脚本没有发布任何错误,但 Makefile 是没有生产。现在,我该怎么办?
  • @hell_ical_vortex 这是我的 sn-p 和编译说明:gitlab.com/snippets/1657244 你也可以检查这个“从头开始的 Linux”guide。 IMO poll.h 问题表明您计算机上安装的内核头文件有问题:软件包 linux-headers-genericlinux-headers-X.XX.XXXlinux-headers-X.XX.XXX-generic 其中 XXXXX 是您正在使用的 Ubuntu 内核软件包的版本。
  • @zloster,我安装了你提到的三个库。然后输入:./configure && make -f Makefile 全部运行完成,并带有几个小警告,例如返回值被忽略。所以guile 2.2.2 有效。建议你忽略guile的早期版本

标签: c++ c linux build guile


【解决方案1】:

我在 centos 7 上遇到了同样的问题。 我在源文件fports.c 中添加了#include <sys/poll.h>,它有问题。

那么,./configure CFLAGS="-std=gnu11"

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-08-24
    • 2017-06-06
    • 1970-01-01
    相关资源
    最近更新 更多