guile-reader-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[guile-reader-devel] Ubuntu build problem scm_take_u8vector


From: pelzflorian (Florian Pelz)
Subject: [guile-reader-devel] Ubuntu build problem scm_take_u8vector
Date: Fri, 17 Nov 2017 12:34:51 +0100
User-agent: Mutt/1.9.1 (2017-09-22)

Hello,

I’m trying to build guile-reader-0.6.2 on my university’s Ubuntu 17.10
system but ./configure fails (from looking at the archives, the same
happens to others).

I’ve downloaded guile-reader from
http://download.savannah.nongnu.org/releases/guile-reader/guile-reader-0.6.2.tar.gz

guile-2.0-* packages are installed.

configure reports

[…]
checking for GUILE... yes
checking for guile-snarf... /usr/bin/guile-snarf
checking for guild... (cached) /usr/bin/guild
checking for Guile site directory... /usr/share/guile/site/2.0
checking for scm_take_u8vector... no
configure: error: You need Guile 1.8.x or higher.
[…]

but objdump says the symbol is exported when running

objdump -T /usr/lib/x86_64-linux-gnu/libguile-2.0.so.22


config.log says

[…]
configure:13913: result: /usr/bin/guile-snarf
configure:13928: checking for guild
configure:13958: result: /usr/bin/guild
configure:13970: checking for Guile site directory
configure:13973: result: /usr/share/guile/site/2.0
configure:13989: checking for scm_take_u8vector
configure:13989: gcc -o conftest -g -O2 -pthread -I/usr/include/guile/2.0   
-lguile-2.0 -lgc conftest.c  >&5
/tmp/ccIR17gv.o: In function `main':
/tmp/tmp.76tQV34U60/guile-reader-0.6.2/conftest.c:65: undefined reference to 
`scm_take_u8vector'
collect2: error: ld returned 1 exit status
configure:13989: $? = 1
configure: failed program was:
| /* confdefs.h */
| #define PACKAGE_NAME "Guile-Reader"
| #define PACKAGE_TARNAME "guile-reader"
| #define PACKAGE_VERSION "0.6.2"
| #define PACKAGE_STRING "Guile-Reader 0.6.2"
| #define PACKAGE_BUGREPORT "address@hidden"
| #define PACKAGE_URL "http://nongnu.org/guile-reader/";
| #define STDC_HEADERS 1
| #define HAVE_SYS_TYPES_H 1
| #define HAVE_SYS_STAT_H 1
| #define HAVE_STDLIB_H 1
| #define HAVE_STRING_H 1
| #define HAVE_MEMORY_H 1
| #define HAVE_STRINGS_H 1
| #define HAVE_INTTYPES_H 1
| #define HAVE_STDINT_H 1
| #define HAVE_UNISTD_H 1
| #define HAVE_DLFCN_H 1
| #define LT_OBJDIR ".libs/"
| #define STDC_HEADERS 1
| #define HAVE_STDLIB_H 1
| #define HAVE_STRING_H 1
| #define HAVE_STRINGS_H 1
| #define SIZEOF_VOID_P 8
| #define HAVE_STDLIB_H 1
| #define HAVE_MALLOC 1
| #define HAVE_STDLIB_H 1
| #define HAVE_REALLOC 1
| #define HAVE_STRNCASECMP 1
| /* end confdefs.h.  */
| /* Define scm_take_u8vector to an innocuous variant, in case <limits.h> 
declares scm_take_u8vector.
|    For example, HP-UX 11i <limits.h> declares gettimeofday.  */
| #define scm_take_u8vector innocuous_scm_take_u8vector
| 
| /* System header to define __stub macros and hopefully few prototypes,
|     which can conflict with char scm_take_u8vector (); below.
|     Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
|     <limits.h> exists even on freestanding compilers.  */
| 
| #ifdef __STDC__
| # include <limits.h>
| #else
| # include <assert.h>
| #endif
| 
| #undef scm_take_u8vector
| 
| /* Override any GCC internal prototype to avoid an error.
|    Use char because int might match the return type of a GCC
|    builtin and then its argument prototype would still apply.  */
| #ifdef __cplusplus
| extern "C"
| #endif
| char scm_take_u8vector ();
| /* The GNU C library defines this for functions which it implements
|     to always fail with ENOSYS.  Some functions are actually named
|     something starting with __ and the normal name is an alias.  */
| #if defined __stub_scm_take_u8vector || defined __stub___scm_take_u8vector
| choke me
| #endif
| 
| int
| main ()
| {
| return scm_take_u8vector ();
|   ;
|   return 0;
| }
configure:13989: result: no
configure:13997: error: You need Guile 1.8.x or higher.

## ---------------- ##
## Cache variables. ##
## ---------------- ##

ac_cv_build=x86_64-unknown-linux-gnu
ac_cv_c_compiler_gnu=yes
[…]

I copied the C program and tried manually running:
gcc -o conftest -g -O2 -pthread -I/usr/include/guile/2.0   -lguile-2.0 -lgc 
conftest.c


It fails with the same error.

I investigated further and read
https://stackoverflow.com/questions/21695744/how-do-i-link-c-code-against-libguile-with-guile-1-8-8

I then ran
gcc -o conftest -g -O2 -pthread -I/usr/include/guile/2.0   conftest.c 
-lguile-2.0 -lgc

and it compiles.

I presume the wrong order of gcc arguments stems from an error either
in aclocal.m4 or in gnulib, but I’ve given up on deciphering m4.

<rant>I presume this would not be an issue if Guile would have a
general pkg-config file for all Guile versions because then this check
would be much simpler. And if Guile used a build system like Meson
debugging these things were simpler. But I’m well aware Meson has
issues too.</rant>


Regards,
Florian

Attachment: signature.asc
Description: PGP signature


reply via email to

[Prev in Thread] Current Thread [Next in Thread]