Menu

#41 3.2p0 build failure on macOS with gcc 7.1.0 Undefined symbol _umount

v1.0_(example)
open
nobody
None
1
2017-07-17
2017-07-14
Anonymous
No

Tested on OS X 10.11 with GCC 7.1.0

Full build log is here: https://gist.github.com/ilovezfs/ab80ebaf391029151f3a72c2e4b6ee90

As a workaround I can apply this patch: https://gist.github.com/ilovezfs/159ff91e760485c0cdb3ce47c1a27988

diff --git a/module/owfs/src/c/owfs.c b/module/owfs/src/c/owfs.c
index fe67e78..8edd136 100644
--- a/module/owfs/src/c/owfs.c
+++ b/module/owfs/src/c/owfs.c
@@ -128,7 +128,7 @@ int main(int argc, char *argv[])

    // Unmount just in case
    // No checks -- can fail without consequences
-#ifdef __FreeBSD__
+#if defined(__FreeBSD__) || defined(__APPLE__)
    unmount( Outbound_Control.head->name, 0) ;
 #else
    umount( Outbound_Control.head->name ) ;

The error is

Undefined symbols for architecture x86_64:
  "_umount", referenced from:
      _main in owfs.o
     (maybe you meant: _umount_cmd)
ld: symbol(s) not found for architecture x86_64

Verbosely:

/usr/local/bin/gcc-7 -DHAVE_CONFIG_H -I. -I../../../../src/include  -I/usr/local/Cellar/libusb/1.0.21/include/libusb-1.0 -F/usr/local/Frameworks -I../include -DFUSE_USE_VERSION=26 -I/usr/local/include -I../../../owlib/src/include -L../../../owlib/src/c -fexceptions -Wall -W -Wundef -Wshadow -Wpointer-arith -Wcast-qual -Wcast-align -Wstrict-prototypes -Wredundant-decls -D_FILE_OFFSET_BITS=64 -D_BSD_SOURCE=1 -D_ISOC99_SOURCE=1 -D_POSIX_C_SOURCE=200112L -D_DEFAULT_SOURCE -D_THREAD_SAFE  -Os -w -pipe -march=core2 -msse4 -mmacosx-version-min=10.11 -D_BSD_SOURCE=1 -D_ISOC99_SOURCE=1 -D_POSIX_C_SOURCE=200112L -D_DEFAULT_SOURCE -c -o fuse_line.o fuse_line.c
/bin/sh ../../../../libtool  --tag=CC   --mode=link /usr/local/bin/gcc-7 -I../include -DFUSE_USE_VERSION=26 -I/usr/local/include -I../../../owlib/src/include -L../../../owlib/src/c -fexceptions -Wall -W -Wundef -Wshadow -Wpointer-arith -Wcast-qual -Wcast-align -Wstrict-prototypes -Wredundant-decls -D_FILE_OFFSET_BITS=64 -D_BSD_SOURCE=1 -D_ISOC99_SOURCE=1 -D_POSIX_C_SOURCE=200112L -D_DEFAULT_SOURCE -D_THREAD_SAFE  -Os -w -pipe -march=core2 -msse4 -mmacosx-version-min=10.11 -D_BSD_SOURCE=1 -D_ISOC99_SOURCE=1 -D_POSIX_C_SOURCE=200112L -D_DEFAULT_SOURCE  -L/usr/local/lib -F/usr/local/Frameworks -Wl,-headerpad_max_install_names -o owfs owfs.o owfs_callback.o fuse_line.o -low -L/usr/local/lib -lfuse   -Wl,-framework -Wl,IOKit -Wl,-framework -Wl,CoreFoundation 
libtool: link: /usr/local/bin/gcc-7 -I../include -DFUSE_USE_VERSION=26 -I/usr/local/include -I../../../owlib/src/include -fexceptions -Wall -W -Wundef -Wshadow -Wpointer-arith -Wcast-qual -Wcast-align -Wstrict-prototypes -Wredundant-decls -D_FILE_OFFSET_BITS=64 -D_BSD_SOURCE=1 -D_ISOC99_SOURCE=1 -D_POSIX_C_SOURCE=200112L -D_DEFAULT_SOURCE -D_THREAD_SAFE -Os -w -pipe -march=core2 -msse4 -mmacosx-version-min=10.11 -D_BSD_SOURCE=1 -D_ISOC99_SOURCE=1 -D_POSIX_C_SOURCE=200112L -D_DEFAULT_SOURCE -F/usr/local/Frameworks -Wl,-headerpad_max_install_names -o .libs/owfs owfs.o owfs_callback.o fuse_line.o -Wl,-framework -Wl,IOKit -Wl,-framework -Wl,CoreFoundation  -L../../../owlib/src/c -L/usr/local/lib /private/tmp/owfs-20170714-44799-4sop3a/owfs-3.2p0/module/owlib/src/c/.libs/libow.so -L/usr/local/Cellar/libusb/1.0.21/lib -L/usr/local/Cellar/libftdi/1.3/lib -lusb-1.0 -lftdi1 /usr/local/lib/libfuse.dylib -liconv -pthread
Undefined symbols for architecture x86_64:
  "_umount", referenced from:
      _main in owfs.o
     (maybe you meant: _umount_cmd)
ld: symbol(s) not found for architecture x86_64
collect2: error: ld returned 1 exit status
make[4]: *** [owfs] Error 1
make[3]: *** [install-recursive] Error 1
make[2]: *** [install-recursive] Error 1
make[1]: *** [install-recursive] Error 1
make: *** [install-recursive] Error 1

Discussion

  • Jan Kandziora

    Jan Kandziora - 2017-07-15

    Fixed in commit 9f54d7f7ee4c79c8c9f07ba9eb576c0c0f361c29.

    Thanks for reporting.

     
  • ilovezfs

    ilovezfs - 2017-07-17