在 aarch64 docker 容器中编译 clisp 源代码

问题描述

我想在 Ubuntu16.04 aarch64 docker 容器(在 aarch64 服务器中启动)中编译 xindy 之前编译 clisp 源代码。 gcc 是:

gcc (Ubuntu/Linaro 5.4.0-6ubuntu1~16.04.11) 5.4.0 20160609
copyright (C) 2015 Free Software Foundation,Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or fitness FOR A PARTIculaR PURPOSE.

操作系统信息为:

NAME="Ubuntu"
VERSION="16.04.6 LTS (Xenial Xerus)"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 16.04.6 LTS"
VERSION_ID="16.04"
HOME_URL="http://www.ubuntu.com/"
SUPPORT_URL="http://help.ubuntu.com/"
BUG_REPORT_URL="http://bugs.launchpad.net/ubuntu/"
VERSION_CODENAME=xenial
UBUNTU_CODENAME=xenial

当我运行下面的命令时

cd clisp-clisp_2_49_60-2017-06-25
./configure --ignore-absence-of-libsigsegv
cd src
make

错误表明:

    ./comment5 arilev1e.d | ./gctrigger | ./varbrace > arilev1e.c
    ./comment5 arilev1i.d | ./gctrigger | ./varbrace > arilev1i.c
    ./comment5 genclisph.d | ./gctrigger | ./varbrace > genclisph.c
    ./comment5 noreadline.d | ./gctrigger | ./varbrace > noreadline.c
    ./comment5 lispbibl.d | sed -e '/^%% /
    {s///;p;d;}
    
    ' -e '/^#line /!s/.*//' > gen.lispbibl.c
    gcc -I/mnt/clisp-clisp_2_49_60-2017-06-25/src/gllib -g -O2 -W -Wswitch -Wcomment -Wpointer-arith -Wreturn-type -Wmissing-declarations -Wimplicit -Wno-sign-compare -Wno-format-nonliteral -O2 -fwrapv -fno-strict-aliasing -DENABLE_UNICODE -DDYNAMIC_MODULES -I. -c spvw.c
    In file included from spvw.d:23:0:
    lispbibl.d:3953:4: error: #error varobject_alignment depends on cpu – readjust varobject_alignment!!
    #error varobject_alignment depends on cpu – readjust varobject_alignment!!
    ^
    lispbibl.d:7111:60: error: 'varobject_alignment' undeclared here (not in a function)
    typedef int subr_size_check[1 - 2 * (int)(sizeof(subr_t) % varobject_alignment)];
    ^
    In file included from spvw.d:998:0:
    spvw_garcol.d:1382:4: error: #error UnkNown value for 'varobject_alignment'!
    #error UnkNown value for 'varobject_alignment'!
    ^
    spvw_garcol.d: In function 'gc_sweep2_varobject_page':
    spvw_garcol.d:1396:9: error: 'uintVLA' undeclared (first use in this function)
    (uintVLA)p2 = (uintVLA)p1; \
    ^
    spvw_garcol.d:1430:6: note: in expansion of macro 'move_aligned_p1_p2'
    move_aligned_p1_p2(count); /* relocate and advance */
    ^
    spvw_garcol.d:1396:9: note: each undeclared identifier is reported only once for each function it appears in
    (uintVLA)p2 = (uintVLA)p1; \
    ^
    spvw_garcol.d:1430:6: note: in expansion of macro 'move_aligned_p1_p2'
    move_aligned_p1_p2(count); /* relocate and advance */
    ^
    spvw_garcol.d:1396:17: error: expected expression before ')' token
    (uintVLA)p2 = (uintVLA)p1; \
    ^
    spvw_garcol.d:1430:6: note: in expansion of macro 'move_aligned_p1_p2'
    move_aligned_p1_p2(count); /* relocate and advance */
    ^
    spvw_garcol.d:1396:17: error: expected expression before ')' token
    (uintVLA)p2 = (uintVLA)p1; \
    ^
    spvw_garcol.d:1490:2: note: in expansion of macro 'move_aligned_p1_p2'
    move_aligned_p1_p2(count); /* relocate and advance */
    ^
    spvw.d: In function 'getSP':
    spvw.d:1115:10: warning: function returns address of local variable [-Wreturn-local-addr]
    return &dummy;
    ^
    spvw.d: At top level:
    spvw.d:1346:23: warning: no prevIoUs declaration for 'error_pseudocode_alignment' [-Wmissing-declarations]
    global _noreturn void error_pseudocode_alignment (uintP address,const char* prefix,const char* name) {
    ^
    In file included from spvw.d:954:0:

如何在 aarch64 docker 容器中编译 clisp 源代码(clisp-clisp_2_49_60-2017-06-25)?

解决方法

您在使用 clisp_2_49_60-2017-06-25 时遇到的问题已在 clisp 2.49.92(从 2018-02-18 开始)中得到修复。

您可以从 https://alpha.gnu.org/gnu/clisp/ 下载。