FreeBSD/KnotDNS/makeについて、ここに記述してください。 <> [[/gcc]] 32bit OSだとこういうトラブルもある。 https://www.mail-archive.com/knot-dns-users@lists.nic.cz/msg00585.html https://www.knot-dns.cz/docs/2.4/html/installation.html {{{ Knot DNS build system relies on these standard tools: make libtool autoconf >= 2.65 }}} == Required libraries == libknotを作るだけなので、気にしなくてもいいのかも。 Knot DNS requires few libraries to be compiled: {{{ GnuTLS, at least 3.3 Jansson, at least 2.3 Userspace RCU, at least 0.5.4 libedit lmdb (included) libcap-ng, at least 0.6.4 (optional) libidn (optional) libsystemd (optional) protobuf-c and fstrm (optional) }}} == config == [[/config-diff]] {{{ Making all in libtap Making all in src make all-recursive Making all in zscanner cp ./scanner.c.g2 scanner.c NOTE: Compilation of scanner.c can take several minutes! make all-am CC libzscanner_la-error.lo CC libzscanner_la-functions.lo CC libzscanner_la-scanner.lo ... In file included from /usr/local/include/gnutls/abstract.h:29, from shared/pem.c:18: /usr/local/include/gnutls/openpgp.h:327: warning: 'gnutls_openpgp_recv_key_func' is deprecated ... Making all in . CC libknot/libknot_la-binary.lo CC libknot/libknot_la-codes.lo CC libknot/control/libknot_la-control.lo CC libknot/cookies/libknot_la-alg-fnv64.lo CC libknot/cookies/libknot_la-client.lo CC libknot/cookies/libknot_la-server.lo CC libknot/libknot_la-descriptor.lo CC libknot/libknot_la-dname.lo CC libknot/libknot_la-error.lo CC libknot/db/libknot_la-db_lmdb.lo CC libknot/db/libknot_la-db_trie.lo CC libknot/packet/libknot_la-compr.lo In file included from libknot/packet/compr.c:22: ./libknot/packet/pkt.h:97: error: redefinition of typedef 'knot_pkt_t' ./libknot/rrtype/opt.h:33: error: previous declaration of 'knot_pkt_t' was here *** Error code 1 Stop. make[3]: stopped in /usr/home/tmaeno/knot-2.4.3/src *** Error code 1 }}} == patch == {{{ %diff -c pkt.h* ~/knot-2.4.3/src/libknot/packet *** pkt.h 2017-05-12 10:04:04.685086000 +0900 --- pkt.h.orig 2017-04-11 20:37:11.000000000 +0900 *************** *** 64,70 **** /*! * \brief Structure representing a DNS packet. */ ! struct knot_pkt { uint8_t *wire; /*!< Wire format of the packet. */ size_t size; /*!< Current wire size of the packet. */ --- 64,70 ---- /*! * \brief Structure representing a DNS packet. */ ! typedef struct knot_pkt { uint8_t *wire; /*!< Wire format of the packet. */ size_t size; /*!< Current wire size of the packet. */ *************** *** 94,100 **** knot_rrset_t *rr; knot_mm_t mm; /*!< Memory allocation context. */ ! } ; /*! * \brief Create new packet over existing memory, or allocate new from memory context. --- 94,100 ---- knot_rrset_t *rr; knot_mm_t mm; /*!< Memory allocation context. */ ! } knot_pkt_t; /*! * \brief Create new packet over existing memory, or allocate new from memory context. }}} == nameserver/query_module.h == {{{ CCLD kjournalprint ./.libs/libknotd.a(libknotd_la-rrl.o): In function `mod_ctr_incr': /usr/home/tmaeno/knot-2.4.3/src/./knot/nameserver/query_module.h:144: undefined reference to `__sync_fetch_and_add_8' }}} OS(LLVMとgccと)の違いに由来か。man atomic(9) {{{ NAME atomic_add, atomic_clear, atomic_cmpset, atomic_fetchadd, atomic_load, atomic_readandclear, atomic_set, atomic_subtract, atomic_store atomic operations }}} === Ubuntu === config.log {{{ #define HAVE_ATOMIC 1 }}} === patch === 型不一致の警告はでる。 {{{ %diff -c query_module.h.orig query_module.h *** query_module.h.orig 2017-04-11 20:37:11.000000000 +0900 --- query_module.h 2017-05-12 18:27:11.316725000 +0900 *************** *** 46,54 **** #include "knot/nameserver/internet.h" #include "contrib/ucw/lists.h" #ifdef HAVE_ATOMIC ! #define ATOMIC_ADD(dst, val) __atomic_add_fetch(dst, val, __ATOMIC_RELAXED); ! #define ATOMIC_SUB(dst, val) __atomic_sub_fetch(dst, val, __ATOMIC_RELAXED); #else #define ATOMIC_ADD(dst, val) __sync_fetch_and_add(dst, val); #define ATOMIC_SUB(dst, val) __sync_fetch_and_sub(dst, val); --- 46,57 ---- #include "knot/nameserver/internet.h" #include "contrib/ucw/lists.h" + #include + #include + #ifdef HAVE_ATOMIC ! #define ATOMIC_ADD(dst, val) atomic_add_ptr(dst, val); ! #define ATOMIC_SUB(dst, val) atomic_subtract_ptr(dst, val); #else #define ATOMIC_ADD(dst, val) __sync_fetch_and_add(dst, val); #define ATOMIC_SUB(dst, val) __sync_fetch_and_sub(dst, val); }}}