servalproject / serval-dna

The Serval Project's core daemon that implements Distributed Numbering Architecture (DNA), MDP, VoMP, Rhizome, MeshMS, etc.
http://servalproject.org
Other
171 stars 80 forks source link

build error on the mac #75

Closed foozmeat closed 10 years ago

foozmeat commented 10 years ago

Hi, I'm working on an ios build wrapper for servald. I'm hitting a build error though when I attempt to compile. I browsed through the source and it wasn't immediately obvious to me why this linker error is occurring.

+ autoreconf -f -i
+ rm -rf '/tmp/serval-dna-*'
+ CFLAGS='-isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator7.1.sdk -miphoneos-version-min=7.1'
+ CC='clang -arch x86_64'
+ ./configure --prefix=/tmp/serval-dna-x86_64 --disable-voiptest
checking build system type... x86_64-apple-darwin13.1.0
checking host system type... x86_64-apple-darwin13.1.0
checking target system type... x86_64-apple-darwin13.1.0
checking for pkg-config... /usr/local/bin/pkg-config
checking pkg-config is at least version 0.9.0... yes
checking for gcc... clang -arch x86_64
checking whether the C compiler works... yes
checking for C compiler default output file name... a.out
checking for suffix of executables... 
checking whether we are cross compiling... no
checking for suffix of object files... o
checking whether we are using the GNU C compiler... yes
checking whether clang -arch x86_64 accepts -g... yes
checking for clang -arch x86_64 option to accept ISO C89... none needed
checking how to run the C preprocessor... clang -arch x86_64 -E
checking for grep that handles long lines and -e... /usr/bin/grep
checking for egrep... /usr/bin/grep -E
checking for ANSI C header files... yes
checking for sys/types.h... yes
checking for sys/stat.h... yes
checking for stdlib.h... yes
checking for string.h... yes
checking for memory.h... yes
checking for strings.h... yes
checking for inttypes.h... yes
checking for stdint.h... yes
checking for unistd.h... yes
checking for gcc... (cached) clang -arch x86_64
checking whether we are using the GNU C compiler... (cached) yes
checking whether clang -arch x86_64 accepts -g... (cached) yes
checking for clang -arch x86_64 option to accept ISO C89... (cached) none needed
checking whether pthreads work with -pthread... yes
checking for joinable pthread attribute... PTHREAD_CREATE_JOINABLE
checking if more special flags are required for pthreads... -D_THREAD_SAFE
checking for PTHREAD_PRIO_INHERIT... yes
checking math.h usability... yes
checking math.h presence... yes
checking for math.h... yes
checking float.h usability... yes
checking float.h presence... yes
checking for float.h... yes
checking for gcj... no
checking for guavac... no
checking for jikes... no
checking for javac... javac
checking if javac works... yes
checking for javac... /usr/bin/javac
checking symlink for /usr/bin/javac... /System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/javac
checking for srandomdev in -lc... yes
checking for nanosleep in -lrt... no
checking for getpeereid... yes
checking for bcopy... yes
checking for bzero... yes
checking for bcmp... yes
checking for lseek64... no
checking for off64_t... no
checking size of off_t... 8
checking stdio.h usability... yes
checking stdio.h presence... yes
checking for stdio.h... yes
checking errno.h usability... yes
checking errno.h presence... yes
checking for errno.h... yes
checking for stdlib.h... (cached) yes
checking for strings.h... (cached) yes
checking for unistd.h... (cached) yes
checking for string.h... (cached) yes
checking arpa/inet.h usability... yes
checking arpa/inet.h presence... yes
checking for arpa/inet.h... yes
checking sys/socket.h usability... yes
checking sys/socket.h presence... yes
checking for sys/socket.h... yes
checking sys/mman.h usability... yes
checking sys/mman.h presence... yes
checking for sys/mman.h... yes
checking sys/time.h usability... yes
checking sys/time.h presence... yes
checking for sys/time.h... yes
checking sys/ucred.h usability... yes
checking sys/ucred.h presence... yes
checking for sys/ucred.h... yes
checking poll.h usability... yes
checking poll.h presence... yes
checking for poll.h... yes
checking netdb.h usability... yes
checking netdb.h presence... yes
checking for netdb.h... yes
checking linux/ioctl.h usability... no
checking linux/ioctl.h presence... no
checking for linux/ioctl.h... no
checking linux/netlink.h usability... no
checking linux/netlink.h presence... no
checking for linux/netlink.h... no
checking linux/rtnetlink.h usability... no
checking linux/rtnetlink.h presence... no
checking for linux/rtnetlink.h... no
checking net/if.h usability... yes
checking net/if.h presence... yes
checking for net/if.h... yes
checking netinet/in.h usability... yes
checking netinet/in.h presence... yes
checking for netinet/in.h... yes
checking ifaddrs.h usability... yes
checking ifaddrs.h presence... yes
checking for ifaddrs.h... yes
checking net/route.h usability... yes
checking net/route.h presence... yes
checking for net/route.h... yes
checking signal.h usability... yes
checking signal.h presence... yes
checking for signal.h... yes
checking jni.h usability... yes
checking jni.h presence... yes
checking for jni.h... yes
checking ucred.h usability... no
checking ucred.h presence... no
checking for ucred.h... no
checking sys/filio.h usability... yes
checking sys/filio.h presence... yes
checking for sys/filio.h... yes
checking sys/endian.h usability... no
checking sys/endian.h presence... no
checking for sys/endian.h... no
checking sys/byteorder.h usability... no
checking sys/byteorder.h presence... no
checking for sys/byteorder.h... no
checking sys/sockio.h usability... yes
checking sys/sockio.h presence... yes
checking for sys/sockio.h... yes
checking for sys/socket.h... (cached) yes
checking for linux/if.h... no
checking alsa/asoundlib.h usability... no
checking alsa/asoundlib.h presence... no
checking for alsa/asoundlib.h... no
checking for sqrtf in -lm... yes
checking for callrpc in -lnsl... no
checking for socket in -lsocket... no
checking for dlopen in -ldl... yes
checking linker -z relro option... no
checking for SSP support... yes
checking for library containing sinf... none required
checking for library containing cosf... none required
checking for library containing tanf... none required
checking for library containing asinf... none required
checking for library containing acosf... none required
checking for library containing atanf... none required
checking for library containing atan2f... none required
checking for library containing ceilf... none required
checking for library containing floorf... none required
checking for library containing powf... none required
checking for library containing expf... none required
checking for library containing logf... none required
checking for library containing log10f... none required
checking for library containing strlcpy... none required
configure: creating ./config.status
config.status: creating Makefile
config.status: creating testconfig.sh
+ make
sqlite-amalgamation-3070900/sqlite3.c:7763:26: warning: unused variable 'sqlite3one' [-Wunused-const-variable]
SQLITE_PRIVATE const int sqlite3one = 1;
                         ^
1 warning generated.
rhizome_direct_http.c:725:41: warning: implicit conversion from enumeration type 'enum rhizome_payload_status' to different enumeration type 'enum rhizome_bundle_status' [-Wenum-conversion]
          enum rhizome_bundle_status pstatus = rhizome_open_read(&read, &filehash);
                                     ~~~~~~~   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1 warning generated.
rhizome_store.c:610:12: warning: implicit conversion from enumeration type 'enum rhizome_bundle_status' to different enumeration type 'enum rhizome_payload_status' [-Wenum-conversion]
    return RHIZOME_BUNDLE_STATUS_ERROR;
    ~~~~~~ ^~~~~~~~~~~~~~~~~~~~~~~~~~~
rhizome_store.c:677:12: warning: implicit conversion from enumeration type 'enum rhizome_payload_status' to different enumeration type 'enum rhizome_bundle_status' [-Wenum-conversion]
    return RHIZOME_PAYLOAD_STATUS_NEW;
    ~~~~~~ ^~~~~~~~~~~~~~~~~~~~~~~~~~
rhizome_store.c:682:12: warning: implicit conversion from enumeration type 'enum rhizome_payload_status' to different enumeration type 'enum rhizome_bundle_status' [-Wenum-conversion]
    return RHIZOME_PAYLOAD_STATUS_CRYPTO_FAIL;
    ~~~~~~ ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
rhizome_store.c:694:10: warning: implicit conversion from enumeration type 'enum rhizome_payload_status' to different enumeration type 'enum rhizome_bundle_status' [-Wenum-conversion]
  return RHIZOME_PAYLOAD_STATUS_NEW;
  ~~~~~~ ^~~~~~~~~~~~~~~~~~~~~~~~~~
rhizome_store.c:706:14: warning: implicit conversion from enumeration type 'enum rhizome_bundle_status' to different enumeration type 'enum rhizome_payload_status' [-Wenum-conversion]
    status = rhizome_write_derive_key(m, write);
           ~ ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
rhizome_store.c:1325:14: warning: implicit conversion from enumeration type 'enum rhizome_bundle_status' to different enumeration type 'enum rhizome_payload_status' [-Wenum-conversion]
    status = rhizome_write_derive_key(m, write);
           ~ ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
6 warnings generated.
clang: warning: argument unused during compilation: '-pthread'
duplicate symbol _rotbuf_log in:
    rotbuf.o
    keyring.o
ld: 1 duplicate symbol for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make: *** [servald] Error 1
lakeman commented 10 years ago

Looks like there are 2 slightly different definitions of rotbuf_log() in rotbuf.h.

Try deleting this one? https://github.com/servalproject/serval-dna/blob/development/rotbuf.h#L136

On Thu, Apr 3, 2014 at 6:18 AM, James Moore notifications@github.comwrote:

Hi, I'm working on an ios build wrapper for servald. I'm hitting a build error though when I attempt to compile. I browsed through the source and it wasn't immediately obvious to me why this linker error is occurring.

  • autoreconf -f -i
  • rm -rf '/tmp/serval-dna-*'
  • CFLAGS='-isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator7.1.sdk -miphoneos-version-min=7.1'
  • CC='clang -arch x86_64'
  • ./configure --prefix=/tmp/serval-dna-x86_64 --disable-voiptest checking build system type... x86_64-apple-darwin13.1.0 checking host system type... x86_64-apple-darwin13.1.0 checking target system type... x86_64-apple-darwin13.1.0 checking for pkg-config... /usr/local/bin/pkg-config checking pkg-config is at least version 0.9.0... yes checking for gcc... clang -arch x86_64 checking whether the C compiler works... yes checking for C compiler default output file name... a.out checking for suffix of executables... checking whether we are cross compiling... no checking for suffix of object files... o checking whether we are using the GNU C compiler... yes checking whether clang -arch x86_64 accepts -g... yes checking for clang -arch x86_64 option to accept ISO C89... none needed checking how to run the C preprocessor... clang -arch x86_64 -E checking for grep that handles long lines and -e... /usr/bin/grep checking for egrep... /usr/bin/grep -E checking for ANSI C header files... yes checking for sys/types.h... yes checking for sys/stat.h... yes checking for stdlib.h... yes checking for string.h... yes checking for memory.h... yes checking for strings.h... yes checking for inttypes.h... yes checking for stdint.h... yes checking for unistd.h... yes checking for gcc... (cached) clang -arch x86_64 checking whether we are using the GNU C compiler... (cached) yes checking whether clang -arch x86_64 accepts -g... (cached) yes checking for clang -arch x86_64 option to accept ISO C89... (cached) none needed checking whether pthreads work with -pthread... yes checking for joinable pthread attribute... PTHREAD_CREATE_JOINABLE checking if more special flags are required for pthreads... -D_THREAD_SAFE checking for PTHREAD_PRIO_INHERIT... yes checking math.h usability... yes checking math.h presence... yes checking for math.h... yes checking float.h usability... yes checking float.h presence... yes checking for float.h... yes checking for gcj... no checking for guavac... no checking for jikes... no checking for javac... javac checking if javac works... yes checking for javac... /usr/bin/javac checking symlink for /usr/bin/javac... /System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/javac checking for srandomdev in -lc... yes checking for nanosleep in -lrt... no checking for getpeereid... yes checking for bcopy... yes checking for bzero... yes checking for bcmp... yes checking for lseek64... no checking for off64_t... no checking size of off_t... 8 checking stdio.h usability... yes checking stdio.h presence... yes checking for stdio.h... yes checking errno.h usability... yes checking errno.h presence... yes checking for errno.h... yes checking for stdlib.h... (cached) yes checking for strings.h... (cached) yes checking for unistd.h... (cached) yes checking for string.h... (cached) yes checking arpa/inet.h usability... yes checking arpa/inet.h presence... yes checking for arpa/inet.h... yes checking sys/socket.h usability... yes checking sys/socket.h presence... yes checking for sys/socket.h... yes checking sys/mman.h usability... yes checking sys/mman.h presence... yes checking for sys/mman.h... yes checking sys/time.h usability... yes checking sys/time.h presence... yes checking for sys/time.h... yes checking sys/ucred.h usability... yes checking sys/ucred.h presence... yes checking for sys/ucred.h... yes checking poll.h usability... yes checking poll.h presence... yes checking for poll.h... yes checking netdb.h usability... yes checking netdb.h presence... yes checking for netdb.h... yes checking linux/ioctl.h usability... no checking linux/ioctl.h presence... no checking for linux/ioctl.h... no checking linux/netlink.h usability... no checking linux/netlink.h presence... no checking for linux/netlink.h... no checking linux/rtnetlink.h usability... no checking linux/rtnetlink.h presence... no checking for linux/rtnetlink.h... no checking net/if.h usability... yes checking net/if.h presence... yes checking for net/if.h... yes checking netinet/in.h usability... yes checking netinet/in.h presence... yes checking for netinet/in.h... yes checking ifaddrs.h usability... yes checking ifaddrs.h presence... yes checking for ifaddrs.h... yes checking net/route.h usability... yes checking net/route.h presence... yes checking for net/route.h... yes checking signal.h usability... yes checking signal.h presence... yes checking for signal.h... yes checking jni.h usability... yes checking jni.h presence... yes checking for jni.h... yes checking ucred.h usability... no checking ucred.h presence... no checking for ucred.h... no checking sys/filio.h usability... yes checking sys/filio.h presence... yes checking for sys/filio.h... yes checking sys/endian.h usability... no checking sys/endian.h presence... no checking for sys/endian.h... no checking sys/byteorder.h usability... no checking sys/byteorder.h presence... no checking for sys/byteorder.h... no checking sys/sockio.h usability... yes checking sys/sockio.h presence... yes checking for sys/sockio.h... yes checking for sys/socket.h... (cached) yes checking for linux/if.h... no checking alsa/asoundlib.h usability... no checking alsa/asoundlib.h presence... no checking for alsa/asoundlib.h... no checking for sqrtf in -lm... yes checking for callrpc in -lnsl... no checking for socket in -lsocket... no checking for dlopen in -ldl... yes checking linker -z relro option... no checking for SSP support... yes checking for library containing sinf... none required checking for library containing cosf... none required checking for library containing tanf... none required checking for library containing asinf... none required checking for library containing acosf... none required checking for library containing atanf... none required checking for library containing atan2f... none required checking for library containing ceilf... none required checking for library containing floorf... none required checking for library containing powf... none required checking for library containing expf... none required checking for library containing logf... none required checking for library containing log10f... none required checking for library containing strlcpy... none required configure: creating ./config.status config.status: creating Makefile config.status: creating testconfig.sh
  • make sqlite-amalgamation-3070900/sqlite3.c:7763:26: warning: unused variable 'sqlite3one' [-Wunused-const-variable] SQLITE_PRIVATE const int sqlite3one = 1; ^ 1 warning generated. rhizome_direct_http.c:725:41: warning: implicit conversion from enumeration type 'enum rhizome_payload_status' to different enumeration type 'enum rhizome_bundle_status' [-Wenum-conversion] enum rhizome_bundle_status pstatus = rhizome_open_read(&read, &filehash);
    
    1 warning generated.
    rhizome_store.c:610:12: warning: implicit conversion from enumeration type 'enum rhizome_bundle_status' to different enumeration type 'enum rhizome_payload_status' [-Wenum-conversion]
    return RHIZOME_BUNDLE_STATUS_ERROR;
    ~~~~~~ ^~~~~~~~~~~~~~~~~~~~~~~~~~~
    rhizome_store.c:677:12: warning: implicit conversion from enumeration type 'enum rhizome_payload_status' to different enumeration type 'enum rhizome_bundle_status' [-Wenum-conversion]
    return RHIZOME_PAYLOAD_STATUS_NEW;
    ~~~~~~ ^~~~~~~~~~~~~~~~~~~~~~~~~~
    rhizome_store.c:682:12: warning: implicit conversion from enumeration type 'enum rhizome_payload_status' to different enumeration type 'enum rhizome_bundle_status' [-Wenum-conversion]
    return RHIZOME_PAYLOAD_STATUS_CRYPTO_FAIL;
    ~~~~~~ ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    rhizome_store.c:694:10: warning: implicit conversion from enumeration type 'enum rhizome_payload_status' to different enumeration type 'enum rhizome_bundle_status' [-Wenum-conversion]
    return RHIZOME_PAYLOAD_STATUS_NEW;
    ~~~~~~ ^~~~~~~~~~~~~~~~~~~~~~~~~~
    rhizome_store.c:706:14: warning: implicit conversion from enumeration type 'enum rhizome_bundle_status' to different enumeration type 'enum rhizome_payload_status' [-Wenum-conversion]
    status = rhizome_write_derive_key(m, write);
         ~ ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    rhizome_store.c:1325:14: warning: implicit conversion from enumeration type 'enum rhizome_bundle_status' to different enumeration type 'enum rhizome_payload_status' [-Wenum-conversion]
    status = rhizome_write_derive_key(m, write);
         ~ ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    6 warnings generated.
    clang: warning: argument unused during compilation: '-pthread'
    duplicate symbol _rotbuf_log in:
    rotbuf.o
    keyring.o
    ld: 1 duplicate symbol for architecture x86_64
    clang: error: linker command failed with exit code 1 (use -v to see invocation)
    make: **\* [servald] Error 1

— Reply to this email directly or view it on GitHubhttps://github.com/servalproject/serval-dna/issues/75 .

foozmeat commented 10 years ago

Thanks, that worked. I'll comment out that function with a comment as a part of my branch.