OS X 10.11.4 Dynamic Library Dependency Problem
-
Verbose means "output more log information". Use the
-verbose=3
option and see if there's anything in the output talking about QtMultimedia -
Verbose means "output more log information". Use the
-verbose=3
option and see if there's anything in the output talking about QtMultimedia -
Verbose means "output more log information". Use the
-verbose=3
option and see if there's anything in the output talking about QtMultimedia -
Is it me or the QtMultimediaWidgets module wasn't listed ?
-
At first sight, it looks correct. Can you run
otool -l your_app.app/Contents/MacOS/exec_name
and look what you get for the rpath entries ? -
Hello! When I try to launch my qt application on other mac there appears problem with Dyld Error. While googling possible solutions unfortunately I couldn't figure out how to fix this. Please give me some hints with it. Here's error log. Thanks in advance.
Process: iv_macos [83556]
Path: /Users/USER/Downloads/iv_macos.app/Contents/MacOS/iv_macos
Identifier: my.iv-macos
Version: ???
Code Type: X86-64 (Native)
Parent Process: ??? [1]
Responsible: iv_macos [83556]
User ID: 501Date/Time: 2016-07-09 01:10:43.909 +0300
OS Version: Mac OS X 10.11.4 (15E65)
Report Version: 11
Anonymous UUID:Sleep/Wake UUID:
Time Awake Since Boot: 1100000 seconds
Time Since Wake: 7400 secondsSystem Integrity Protection: enabled
Crashed Thread: 0
Exception Type: EXC_BREAKPOINT (SIGTRAP)
Exception Codes: 0x0000000000000002, 0x0000000000000000
Exception Note: EXC_CORPSE_NOTIFYApplication Specific Information:
dyld: launch, loading dependent librariesDyld Error Message:
Library not loaded: @rpath/QtMultimediaWidgets.framework/Versions/5/QtMultimediaWidgets
Referenced from: /Users/USER/Downloads/iv_macos.app/Contents/MacOS/iv_macos
Reason: image not foundBinary Images:
0x7fff64629000 - 0x7fff646600d7 dyld (360.21) <D9B236BC-4AC1-325F-B3EF-3F06DBDA7119> /usr/lib/dyldModel: MacBookPro11,2, BootROM MBP112.0138.B17, 4 processors, Intel Core i7, 2.2 GHz, 16 GB, SMC 2.18f15
Graphics: Intel Iris Pro, Intel Iris Pro, Built-In
Memory Module: BANK 0/DIMM0, 8 GB, DDR3, 1600 MHz, 0x80AD, 0x484D54343147533641465238412D50422020
Memory Module: BANK 1/DIMM0, 8 GB, DDR3, 1600 MHz, 0x80AD, 0x484D54343147533641465238412D50422020
AirPort: spairport_wireless_card_type_airport_extreme (0x14E4, 0x134), Broadcom BCM43xx 1.0 (7.21.95.175.1a6)
Bluetooth: Version 4.4.4f4 17685, 3 services, 27 devices, 1 incoming serial ports
Network Service: Wi-Fi, AirPort, en0
Serial ATA Device: APPLE SSD SM0256F, 251 GB
USB Device: USB 3.0 Bus
USB Device: Apple Internal Keyboard / Trackpad
USB Device: BRCM20702 Hub
USB Device: Bluetooth USB Host Controller
Thunderbolt Bus: MacBook Pro, Apple Inc., 17.1@Sasha-Kolesnikov Build after deploy it is a bad idea. This is solution
-
Do you mean that you re-built your application after calling madecployqt ?
-
@SGaist Yes
-
Indeed, that's not a good idea. Your application executable will be replaced nullifying the job done by
macdeployqt
. You'll have to call it again before re-releasing again your application. -
I've had similar problems with dynamic libraries in 10.11.4. The problems go away if I turn off System Integrity Protection.
These don't show up for every executable. It depends on where the executable is installed. My executable is a Safari extension, which has to be installed in /Library/Internet Plug-ins. Apparently, that (or running in Safari) makes the executable "protected."
I ran into two kinds of problems:- The executable used @rpath to load components of the Framework libraries (inserted into the package by macdeployqt). This doesn't appear to work with System Integrity Protection. @loader_path does work, as do absolute paths. (You can change the paths using install_name_tool).
- Qt loads plugins using dlopen. This doesn't appear to work at all with System Integrity Protection. As a result, the code fails in QtGuiApplication::createPlatformIntegration, which is where it tries to load the platform plugin.
I haven't found a workaround for the second problem. As a result it appears that Qt won't work for "protected" executables under OS X El Capitan.