Can't compile on MacOS Sierra 10.12.6
Created by: derwentx
Hi There, here are the steps I've used to try to compile Heimdall on my system from the latest unmodified version on GitHub as per the instructions in appendix B
With additional tips mentioned here when the vanilla instructions didn't work.
$ pwd
/Users/derwent/GitHub/Heimdall/build
$ brew install libusb qt5 cmake
Warning: libusb 1.0.21 is already installed
Warning: qt 5.9.1 is already installed
Warning: cmake 3.9.4 is already installed
$ cmake -G "Unix Makefiles" -DCMAKE_BUILD_TYPE=Release -DQt5Widgets_DIR=/usr/local/opt/qt5/lib/cmake/Qt5Widgets -DDISABLE_FRONTEND=ON ..
-- The C compiler identification is AppleClang 9.0.0.9000037
-- The CXX compiler identification is AppleClang 9.0.0.9000037
-- Check for working C compiler: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/cc
-- Check for working C compiler: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/cc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Detecting C compile features
-- Detecting C compile features - done
-- Check for working CXX compiler: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/c++
-- Check for working CXX compiler: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/c++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Found libusb: /usr/local/lib/libusb-1.0.a
-- Checking if large (64-bit) file support is available...
-- Checking if large (64-bit) file support is available - yes
-- Configuring done
-- Generating done
CMake Warning:
Manually-specified variables were not used by the project:
Qt5Widgets_DIR
-- Build files have been written to: /Users/derwent/GitHub/Heimdall/build
$ LIBRARY_PATH=/usr/local/lib make
[ 12%] Built target pit
[ 18%] Linking CXX executable ../bin/heimdall
Undefined symbols for architecture x86_64:
"_CFDataGetBytes", referenced from:
_process_new_device in libusb-1.0.a(libusb_1_0_la-darwin_usb.o)
"_CFDataGetLength", referenced from:
_process_new_device in libusb-1.0.a(libusb_1_0_la-darwin_usb.o)
"_CFDataGetTypeID", referenced from:
_process_new_device in libusb-1.0.a(libusb_1_0_la-darwin_usb.o)
"_CFGetTypeID", referenced from:
_process_new_device in libusb-1.0.a(libusb_1_0_la-darwin_usb.o)
_get_ioregistry_value_number in libusb-1.0.a(libusb_1_0_la-darwin_usb.o)
"_CFNumberGetTypeID", referenced from:
_get_ioregistry_value_number in libusb-1.0.a(libusb_1_0_la-darwin_usb.o)
"_CFNumberGetValue", referenced from:
_get_ioregistry_value_number in libusb-1.0.a(libusb_1_0_la-darwin_usb.o)
"_CFRelease", referenced from:
_darwin_close in libusb-1.0.a(libusb_1_0_la-darwin_usb.o)
_darwin_release_interface in libusb-1.0.a(libusb_1_0_la-darwin_usb.o)
_darwin_kernel_driver_active in libusb-1.0.a(libusb_1_0_la-darwin_usb.o)
_darwin_event_thread_main in libusb-1.0.a(libusb_1_0_la-darwin_usb.o)
_process_new_device in libusb-1.0.a(libusb_1_0_la-darwin_usb.o)
_get_ioregistry_value_number in libusb-1.0.a(libusb_1_0_la-darwin_usb.o)
"_CFRetain", referenced from:
_darwin_open in libusb-1.0.a(libusb_1_0_la-darwin_usb.o)
_darwin_event_thread_main in libusb-1.0.a(libusb_1_0_la-darwin_usb.o)
"_CFRunLoopAddSource", referenced from:
_darwin_open in libusb-1.0.a(libusb_1_0_la-darwin_usb.o)
_darwin_claim_interface in libusb-1.0.a(libusb_1_0_la-darwin_usb.o)
_darwin_event_thread_main in libusb-1.0.a(libusb_1_0_la-darwin_usb.o)
"_CFRunLoopGetCurrent", referenced from:
_darwin_event_thread_main in libusb-1.0.a(libusb_1_0_la-darwin_usb.o)
"_CFRunLoopRemoveSource", referenced from:
_darwin_close in libusb-1.0.a(libusb_1_0_la-darwin_usb.o)
_darwin_release_interface in libusb-1.0.a(libusb_1_0_la-darwin_usb.o)
_darwin_event_thread_main in libusb-1.0.a(libusb_1_0_la-darwin_usb.o)
"_CFRunLoopRun", referenced from:
_darwin_event_thread_main in libusb-1.0.a(libusb_1_0_la-darwin_usb.o)
"_CFRunLoopSourceCreate", referenced from:
_darwin_event_thread_main in libusb-1.0.a(libusb_1_0_la-darwin_usb.o)
"_CFRunLoopSourceSignal", referenced from:
_darwin_exit in libusb-1.0.a(libusb_1_0_la-darwin_usb.o)
"_CFRunLoopStop", referenced from:
_darwin_event_thread_main in libusb-1.0.a(libusb_1_0_la-darwin_usb.o)
"_CFRunLoopWakeUp", referenced from:
_darwin_exit in libusb-1.0.a(libusb_1_0_la-darwin_usb.o)
"_CFUUIDGetConstantUUIDWithBytes", referenced from:
_darwin_claim_interface in libusb-1.0.a(libusb_1_0_la-darwin_usb.o)
_process_new_device in libusb-1.0.a(libusb_1_0_la-darwin_usb.o)
"_CFUUIDGetUUIDBytes", referenced from:
_darwin_claim_interface in libusb-1.0.a(libusb_1_0_la-darwin_usb.o)
_process_new_device in libusb-1.0.a(libusb_1_0_la-darwin_usb.o)
"_IOCreatePlugInInterfaceForService", referenced from:
_darwin_claim_interface in libusb-1.0.a(libusb_1_0_la-darwin_usb.o)
_process_new_device in libusb-1.0.a(libusb_1_0_la-darwin_usb.o)
"_IOIteratorNext", referenced from:
_darwin_init in libusb-1.0.a(libusb_1_0_la-darwin_usb.o)
_process_new_device in libusb-1.0.a(libusb_1_0_la-darwin_usb.o)
_darwin_devices_detached in libusb-1.0.a(libusb_1_0_la-darwin_usb.o)
_darwin_devices_attached in libusb-1.0.a(libusb_1_0_la-darwin_usb.o)
_darwin_clear_iterator in libusb-1.0.a(libusb_1_0_la-darwin_usb.o)
_darwin_get_interface in libusb-1.0.a(libusb_1_0_la-darwin_usb.o)
"_IOKitWaitQuiet", referenced from:
_darwin_hotplug_poll in libusb-1.0.a(libusb_1_0_la-darwin_usb.o)
"_IONotificationPortCreate", referenced from:
_darwin_event_thread_main in libusb-1.0.a(libusb_1_0_la-darwin_usb.o)
"_IONotificationPortDestroy", referenced from:
_darwin_event_thread_main in libusb-1.0.a(libusb_1_0_la-darwin_usb.o)
"_IONotificationPortGetRunLoopSource", referenced from:
_darwin_event_thread_main in libusb-1.0.a(libusb_1_0_la-darwin_usb.o)
"_IOObjectRelease", referenced from:
_darwin_init in libusb-1.0.a(libusb_1_0_la-darwin_usb.o)
_darwin_claim_interface in libusb-1.0.a(libusb_1_0_la-darwin_usb.o)
_darwin_kernel_driver_active in libusb-1.0.a(libusb_1_0_la-darwin_usb.o)
_darwin_event_thread_main in libusb-1.0.a(libusb_1_0_la-darwin_usb.o)
_process_new_device in libusb-1.0.a(libusb_1_0_la-darwin_usb.o)
_darwin_devices_detached in libusb-1.0.a(libusb_1_0_la-darwin_usb.o)
_darwin_devices_attached in libusb-1.0.a(libusb_1_0_la-darwin_usb.o)
...
"_IORegistryEntryCreateCFProperty", referenced from:
_darwin_kernel_driver_active in libusb-1.0.a(libusb_1_0_la-darwin_usb.o)
_process_new_device in libusb-1.0.a(libusb_1_0_la-darwin_usb.o)
_get_ioregistry_value_number in libusb-1.0.a(libusb_1_0_la-darwin_usb.o)
"_IORegistryEntryGetParentEntry", referenced from:
_process_new_device in libusb-1.0.a(libusb_1_0_la-darwin_usb.o)
"_IOServiceAddMatchingNotification", referenced from:
_darwin_event_thread_main in libusb-1.0.a(libusb_1_0_la-darwin_usb.o)
"_IOServiceGetMatchingServices", referenced from:
_darwin_init in libusb-1.0.a(libusb_1_0_la-darwin_usb.o)
"_IOServiceMatching", referenced from:
_darwin_init in libusb-1.0.a(libusb_1_0_la-darwin_usb.o)
_darwin_event_thread_main in libusb-1.0.a(libusb_1_0_la-darwin_usb.o)
"___CFConstantStringClassReference", referenced from:
CFString in libusb-1.0.a(libusb_1_0_la-darwin_usb.o)
CFString in libusb-1.0.a(libusb_1_0_la-darwin_usb.o)
CFString in libusb-1.0.a(libusb_1_0_la-darwin_usb.o)
CFString in libusb-1.0.a(libusb_1_0_la-darwin_usb.o)
CFString in libusb-1.0.a(libusb_1_0_la-darwin_usb.o)
"_kCFAllocatorDefault", referenced from:
_darwin_kernel_driver_active in libusb-1.0.a(libusb_1_0_la-darwin_usb.o)
_process_new_device in libusb-1.0.a(libusb_1_0_la-darwin_usb.o)
_get_ioregistry_value_number in libusb-1.0.a(libusb_1_0_la-darwin_usb.o)
"_kCFAllocatorSystemDefault", referenced from:
_process_new_device in libusb-1.0.a(libusb_1_0_la-darwin_usb.o)
"_kCFRunLoopCommonModes", referenced from:
_darwin_open in libusb-1.0.a(libusb_1_0_la-darwin_usb.o)
"_kCFRunLoopDefaultMode", referenced from:
_darwin_close in libusb-1.0.a(libusb_1_0_la-darwin_usb.o)
_darwin_claim_interface in libusb-1.0.a(libusb_1_0_la-darwin_usb.o)
_darwin_release_interface in libusb-1.0.a(libusb_1_0_la-darwin_usb.o)
_darwin_event_thread_main in libusb-1.0.a(libusb_1_0_la-darwin_usb.o)
"_kIOMasterPortDefault", referenced from:
_darwin_init in libusb-1.0.a(libusb_1_0_la-darwin_usb.o)
_darwin_hotplug_poll in libusb-1.0.a(libusb_1_0_la-darwin_usb.o)
_darwin_event_thread_main in libusb-1.0.a(libusb_1_0_la-darwin_usb.o)
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make[2]: *** [bin/heimdall] Error 1
make[1]: *** [heimdall/CMakeFiles/heimdall.dir/all] Error 2
make: *** [all] Error 2
From this it looks like something is going wrong in the linking stage when trying to find libusb, but I certainly have libusb installed
$ pkg-config --list-all | grep libusb
libusb-1.0 libusb-1.0 - C API for USB device access from Linux, Mac OS X, Windows, OpenBSD/NetBSD and Solaris userspace
libusb libusb - USB access library (libusb-1.0 compat wrapper)
some libusb information:
$ brew ls libusb; ls -la /usr/local/lib | grep usb
/usr/local/Cellar/libusb/1.0.21/include/libusb-1.0/libusb.h
/usr/local/Cellar/libusb/1.0.21/lib/libusb-1.0.0.dylib
/usr/local/Cellar/libusb/1.0.21/lib/pkgconfig/libusb-1.0.pc
/usr/local/Cellar/libusb/1.0.21/lib/ (2 other files)
/usr/local/Cellar/libusb/1.0.21/share/libusb/ (16 files)
lrwxr-xr-x 54 derwent 9 Oct 14:15 libusb-0.1.4.dylib -> ../Cellar/libusb-compat/0.1.5_1/lib/libusb-0.1.4.dylib
lrwxr-xr-x 46 derwent 9 Oct 14:15 libusb-1.0.0.dylib -> ../Cellar/libusb/1.0.21/lib/libusb-1.0.0.dylib
lrwxr-xr-x 40 derwent 9 Oct 14:15 libusb-1.0.a -> ../Cellar/libusb/1.0.21/lib/libusb-1.0.a
lrwxr-xr-x 44 derwent 9 Oct 14:15 libusb-1.0.dylib -> ../Cellar/libusb/1.0.21/lib/libusb-1.0.dylib
lrwxr-xr-x 44 derwent 9 Oct 14:15 libusb.a -> ../Cellar/libusb-compat/0.1.5_1/lib/libusb.a
lrwxr-xr-x 48 derwent 9 Oct 14:15 libusb.dylib -> ../Cellar/libusb-compat/0.1.5_1/lib/libusb.dylib
Nothing interesting in my brew doctor
Please note that these warnings are just used to help the Homebrew maintainers
with debugging if you file an issue. If everything you use Homebrew for is
working fine: please don't worry and just ignore them. Thanks!
Warning: "config" scripts exist outside your system or Homebrew directories.
`./configure` scripts often look for *-config scripts to determine if
software packages are installed, and what additional flags to use when
compiling and linking.
Having additional scripts in your path can confuse software installed via
Homebrew if the config script overrides a system or Homebrew provided
script of the same name. We found the following "config" scripts:
/Users/derwent/.pyenv/shims/python-config
/Users/derwent/.pyenv/shims/python2-config
/Users/derwent/.pyenv/shims/python2.6-config
/Users/derwent/.pyenv/shims/python2.7-config
/Users/derwent/.pyenv/shims/python3-config
/Users/derwent/.pyenv/shims/python3.2-config
/Users/derwent/.pyenv/shims/python3.2m-config
/Users/derwent/.pyenv/shims/python3.3-config
/Users/derwent/.pyenv/shims/python3.3m-config
/Users/derwent/.pyenv/shims/python3.4-config
/Users/derwent/.pyenv/shims/python3.4m-config
/Users/derwent/.pyenv/shims/python3.6-config
/Users/derwent/.pyenv/shims/python3.6m-config
Warning: You have a curlrc file
If you have trouble downloading packages with Homebrew, then maybe this
is the problem? If the following command doesn't work, then try removing
your curlrc:
curl https://github.com
And some info about my system:
Distro: OS X 10.12.6
Shell: /bin/zsh
CPU: Intel Core i7-4960HQ CPU @ 2.60GHz
Memory: 16 GB
Disk: 91%
When I install using the installer, it works fine but I'm trying to install from source because I'm having issues with my Samsung Galaxy S5 klte not downloading the pit file on my windows or mac machines.
Thanks.