build fails on Debian stable
Brought to you by:
thesun
From: Tom M. <tme...@vl...> - 2005-08-22 22:39:13
|
Attempting to configure rsyncrypto 0.14 on Debian 3.1 (Sarge/stable) I see: % ./configure checking for a BSD-compatible install... /usr/bin/install -c checking whether build environment is sane... yes checking for gawk... no checking for mawk... mawk checking whether make sets $(MAKE)... yes checking for g++... g++ checking for C++ compiler default output file name... a.out checking whether the C++ compiler works... yes checking whether we are cross compiling... no checking for suffix of executables... checking for suffix of object files... o checking whether we are using the GNU C++ compiler... yes checking whether g++ accepts -g... yes checking for style of include used by make... GNU checking dependency style of g++... gcc3 checking for AES_encrypt in -lcrypto... yes checking for arg_parse in -largtable2... no configure: error: argtable2 not found See `config.log' for more details. Some relevant bits from the log: configure:2235: g++ -c -g -O2 conftest.cc >&5 conftest.cc: In function `int main()': conftest.cc:15: error: `exit' undeclared (first use this function) conftest.cc:15: error: (Each undeclared identifier is reported only once for each function it appears in.) configure:2241: $? = 1 configure: failed program was: | /* confdefs.h. */ | | #define PACKAGE_NAME "rsyncrypt" | #define PACKAGE_TARNAME "rsyncrypt" | #define PACKAGE_VERSION "0.14" | #define PACKAGE_STRING "rsyncrypt 0.14" | #define PACKAGE_BUGREPORT "" | #define PACKAGE "rsyncrypt" | #define VERSION "0.14" | /* end confdefs.h. */ | | int | main () | { | exit (42); | ; | return 0; | } [...] configure:2587: checking for arg_parse in -largtable2 configure:2617: g++ -o conftest -g -O2 conftest.cc -largtable2 -lcrypto >&5 /usr/bin/ld: cannot find -largtable2 collect2: ld returned 1 exit status configure:2623: $? = 1 configure: failed program was: | /* confdefs.h. */ | | #define PACKAGE_NAME "rsyncrypt" | #define PACKAGE_TARNAME "rsyncrypt" | #define PACKAGE_VERSION "0.14" | #define PACKAGE_STRING "rsyncrypt 0.14" | #define PACKAGE_BUGREPORT "" | #define PACKAGE "rsyncrypt" | #define VERSION "0.14" | #ifdef __cplusplus | extern "C" void std::exit (int) throw (); using std::exit; | #endif | #define HAVE_LIBCRYPTO 1 | /* end confdefs.h. */ | | /* Override any gcc2 internal prototype to avoid an error. */ | #ifdef __cplusplus | extern "C" | #endif | /* We use char because int might match the return type of a gcc2 | builtin and then its argument prototype would still apply. */ | char arg_parse (); | int | main () | { | arg_parse (); | ; | return 0; | } configure:2648: result: no configure:2659: error: argtable2 not found [...] I'm not sure about the first failure, but the second is obviously due to a missing libargtable2. I searched the Debian package archives for packages containing the substring 'argtable', but found nothing in the stable distribution. I did find it in unstable: http://packages.debian.org/unstable/libdevel/libargtable2-dev Argtable is an ANSI C library for parsing GNU style command line arguments. ... argtable can function as a "getopt_long" replacement, without the user of the program noticing the difference. Unlike "getopt_long", however, argtable is cross platform, working on all Posix systems, as well as Windows and Mac. Would it be practical to fall back to using getopt_long() if libargtable2 isn't available? I proceeded by installing libargtable2-dev from unstable (which fortunately didn't have any dependencies and didn't require a cascading upgrade), and then configure succeeded. rsyncrypto built without error, but a simple test of: % ./rsyncrypto --help Usage: rsyncrypt <src> <dst> <keys> <publickey file> Options: -h Help - this page -d Decrypt. [...] Currently only AES encryption is supported Segmentation fault produces a seg fault. A gdb backtrace shows: (gdb) bt #0 0x4027b39b in mallopt () from /lib/libc.so.6 #1 0x4027a15f in free () from /lib/libc.so.6 #2 0x40020b84 in arg_freetable () from /usr/lib/libargtable2.so.0 #3 0x0804a60b in __tcf_1 () at rsyncrypto.h:148 #4 0x40234b62 in exit () from /lib/libc.so.6 #5 0x4021ee3e in __libc_start_main () from /lib/libc.so.6 #6 0x08049f21 in _start () at ../sysdeps/i386/elf/start.S:102 I see libargtable2 is near the top of the stack, so perhaps it does have a dependency on libc that just isn't documented. Perhaps I'll try building it from source. -Tom -- Tom Metro Venture Logic, Newton, MA, USA "Enterprise solutions through open source." Professional Profile: https://www.linkedin.com/e/fps/3452158/ |