How to fix path in third-party libs which usage another third-party libs after macdeployqt?
-
wrote on 5 Jan 2018, 16:39 last edited by
So, you're defining all the libraries in the .pro file?
-
wrote on 5 Jan 2018, 16:41 last edited by
Not all. Because my application is building correct without add all libs. But I try this. Thanks.
-
So, you're defining all the libraries in the .pro file?
wrote on 5 Jan 2018, 17:07 last edited by@Charlie_Hdz I check it. And still have a problem.
The result of tool -l command for application binary file looks like:
andrewsh$ otool -L /Volumes/HPDD/PROJECTS/QtProjects/GIT/iOS_Device_Manager/qt/build-MatterPortBackup-Desktop_Qt_5_10_0_clang_64bit2-Production/Xtended\ Backup\ Manager.app/Contents/MacOS/Xtended\ Backup\ Manager /Volumes/HPDD/PROJECTS/QtProjects/GIT/iOS_Device_Manager/qt/build-MatterPortBackup-Desktop_Qt_5_10_0_clang_64bit2-Production/Xtended Backup Manager.app/Contents/MacOS/Xtended Backup Manager: /System/Library/Frameworks/Foundation.framework/Versions/C/Foundation (compatibility version 300.0.0, current version 1450.15.0) /System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation (compatibility version 150.0.0, current version 1450.15.0) @loader_path/../Frameworks/libplist.3.dylib (compatibility version 5.0.0, current version 5.0.0) @loader_path/../Frameworks/libimobiledevice.6.dylib (compatibility version 7.0.0, current version 7.0.0) @loader_path/../Frameworks/libgnutls.30.dylib (compatibility version 45.0.0, current version 45.8.0) @loader_path/../Frameworks/libnettle.6.dylib (compatibility version 6.0.0, current version 6.4.0) @loader_path/../Frameworks/libhogweed.4.dylib (compatibility version 4.0.0, current version 4.4.0) @rpath/QtQuick.framework/Versions/5/QtQuick (compatibility version 5.10.0, current version 5.10.0) @rpath/QtQml.framework/Versions/5/QtQml (compatibility version 5.10.0, current version 5.10.0) @rpath/QtNetwork.framework/Versions/5/QtNetwork (compatibility version 5.10.0, current version 5.10.0) @rpath/QtCore.framework/Versions/5/QtCore (compatibility version 5.10.0, current version 5.10.0) /System/Library/Frameworks/DiskArbitration.framework/Versions/A/DiskArbitration (compatibility version 1.0.0, current version 1.0.0) /System/Library/Frameworks/IOKit.framework/Versions/A/IOKit (compatibility version 1.0.0, current version 275.0.0) @rpath/QtGui.framework/Versions/5/QtGui (compatibility version 5.10.0, current version 5.10.0) @rpath/QtWidgets.framework/Versions/5/QtWidgets (compatibility version 5.10.0, current version 5.10.0) /System/Library/Frameworks/OpenGL.framework/Versions/A/OpenGL (compatibility version 1.0.0, current version 1.0.0) /System/Library/Frameworks/AGL.framework/Versions/A/AGL (compatibility version 1.0.0, current version 1.0.0) /usr/lib/libc++.1.dylib (compatibility version 1.0.0, current version 400.9.0) /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1252.0.0) /usr/lib/libobjc.A.dylib (compatibility version 1.0.0, current version 228.0.0)
When I try to open my application on customer Mac I receive error:
dyld: Library not loaded: /usr/local/Cellar/nettle/3.4/lib/libnettle.6.dylib Referenced from: /Volumes/HPDD/PROJECTS/QtProjects/GIT/iOS_Device_Manager/qt/build-MatterPortBackup-Desktop_Qt_5_10_0_clang_64bit2-Production/Xtended Backup Manager.app/Contents/Frameworks/libhogweed.4.dylib Reason: image not found Abort trap: 6
But, as you can see the library libhogweed and libnettle has correct path for application binary file. If I try to use tool -l for library libhogweed I get this result:
andrewsh$ otool -L /Volumes/HPDD/PROJECTS/QtProjects/GIT/iOS_Device_Manager/qt/build-MatterPortBackup-Desktop_Qt_5_10_0_clang_64bit2-Production/Xtended\ Backup\ Manager.app/Contents/Frameworks/libhogweed.4.dylib /Volumes/HPDD/PROJECTS/QtProjects/GIT/iOS_Device_Manager/qt/build-MatterPortBackup-Desktop_Qt_5_10_0_clang_64bit2-Production/Xtended Backup Manager.app/Contents/Frameworks/libhogweed.4.dylib: @executable_path/../Frameworks/libhogweed.4.dylib (compatibility version 4.0.0, current version 4.4.0) /usr/local/Cellar/nettle/3.4/lib/libnettle.6.dylib (compatibility version 6.0.0, current version 6.4.0) @loader_path/libgmp.10.dylib (compatibility version 14.0.0, current version 14.2.0) /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1252.0.0)
As you can see the problem in incorrect path for libhogweed which usage libnettle.
-
wrote on 5 Jan 2018, 17:16 last edited by
Has your computer this library path, right?
/Volumes/HPDD/PROJECTS/QtProjects/GIT/iOS_Device_Manager/qt/build-MatterPortBackup-Desktop_Qt_5_10_0_clang_64bit2-Production/Xtended
Does your customer Mac has the same path?
-
wrote on 5 Jan 2018, 17:18 last edited by
No. This example from my another Mac where I have the same path for application.
-
wrote on 5 Jan 2018, 17:22 last edited by
Ok, maybe you need to explicitly set the libraries path from your customer, also, maybe they're being shared implicitly.
-
wrote on 5 Jan 2018, 17:25 last edited by
Ok, I will try to find another way how to fix the path for customer.
-
Hi,
You should run ma deploy Qt with the verbose option on to see what is happening with these external libraries.
If it’s only this one you can copy it by hand and run install_name_tool on it.
-
wrote on 6 Apr 2018, 07:56 last edited by
Hello
i have actually same problem with same Library :Dyld Error Message: Library not loaded: /usr/local/Cellar/nettle/3.3/lib/libnettle.6.dylib Referenced from: /private/var/folders/8h/6gwsfzvd0497x5v7dqkf6dg80000gp/T/AppTranslocation/AC4CC981-7245-4236-9929-4EF95D0225B1/d/StoreUpgradeTools.app/Contents/Frameworks/libhogweed.4.dylib Reason: image not found
Did you fixe it ?
-
Hello
i have actually same problem with same Library :Dyld Error Message: Library not loaded: /usr/local/Cellar/nettle/3.3/lib/libnettle.6.dylib Referenced from: /private/var/folders/8h/6gwsfzvd0497x5v7dqkf6dg80000gp/T/AppTranslocation/AC4CC981-7245-4236-9929-4EF95D0225B1/d/StoreUpgradeTools.app/Contents/Frameworks/libhogweed.4.dylib Reason: image not found
Did you fixe it ?
wrote on 6 Apr 2018, 08:03 last edited by@florent_lightingsoft
Yes, but you need to do this for every lib which generate this error.install_name_tool -change "old_path" "@executable_path/../Frameworks/lib_name" lib_path_for_update install_name_tool -change "old_path" "@executable_path/../Frameworks/lib_name" app_binnary_path_for_update
If you find a way to use this commands for all lib and sub-libs by script let me know, because for now I use this for every lib manually.
-
@florent_lightingsoft
Yes, but you need to do this for every lib which generate this error.install_name_tool -change "old_path" "@executable_path/../Frameworks/lib_name" lib_path_for_update install_name_tool -change "old_path" "@executable_path/../Frameworks/lib_name" app_binnary_path_for_update
If you find a way to use this commands for all lib and sub-libs by script let me know, because for now I use this for every lib manually.
wrote on 8 Apr 2022, 04:53 last edited by@shav said in How to fix path in third-party libs which usage another third-party libs after macdeployqt?:
@florent_lightingsoft
Yes, but you need to do this for every lib which generate this error.install_name_tool -change "old_path" "@executable_path/../Frameworks/lib_name" lib_path_for_update install_name_tool -change "old_path" "@executable_path/../Frameworks/lib_name" app_binnary_path_for_update
If you find a way to use this commands for all lib and sub-libs by script let me know, because for now I use this for every lib manually.
it's 2022, same problem here. any solution?
-
@shav said in How to fix path in third-party libs which usage another third-party libs after macdeployqt?:
@florent_lightingsoft
Yes, but you need to do this for every lib which generate this error.install_name_tool -change "old_path" "@executable_path/../Frameworks/lib_name" lib_path_for_update install_name_tool -change "old_path" "@executable_path/../Frameworks/lib_name" app_binnary_path_for_update
If you find a way to use this commands for all lib and sub-libs by script let me know, because for now I use this for every lib manually.
it's 2022, same problem here. any solution?
wrote on 8 Apr 2022, 13:16 last edited by ngn999 4 Aug 2022, 13:17I'm sure it's about this bug:
https://bugreports.qt.io/browse/QTBUG-56814but the fix is not complete, it can't deal with some libraries , such as ffmpeg and nettle.
I made a bugfix here: https://github.com/ngn999/qttools/commit/5be4d44508c3a8b4d739de30929d9158b84b4e50
based on 6.2.4.
-
I'm sure it's about this bug:
https://bugreports.qt.io/browse/QTBUG-56814but the fix is not complete, it can't deal with some libraries , such as ffmpeg and nettle.
I made a bugfix here: https://github.com/ngn999/qttools/commit/5be4d44508c3a8b4d739de30929d9158b84b4e50
based on 6.2.4.
@ngn999 hi and welcome to devnet,
Would you make a submission to the official repo so it can be integrated for all ? :-)
-
@ngn999 hi and welcome to devnet,
Would you make a submission to the official repo so it can be integrated for all ? :-)
wrote on 9 Apr 2022, 01:55 last edited by@SGaist yes, I submit a pull request to 6.2.4 https://github.com/qt/qttools/pull/5
-
GitHub is just a mirror. Here you can find the procedure to get you started. Don't worry about the size of the page, it's just very detailed instructions :-)
-
GitHub is just a mirror. Here you can find the procedure to get you started. Don't worry about the size of the page, it's just very detailed instructions :-)
-
GitHub is just a mirror. Here you can find the procedure to get you started. Don't worry about the size of the page, it's just very detailed instructions :-)
wrote on 10 Apr 2022, 07:43 last edited by ngn999 4 Oct 2022, 07:44@SGaist I have submitted one code review: https://codereview.qt-project.org/c/qt/qtbase/+/405490
by the way, the workflow is complex.
-
Thanks !
I also found it the first time but it quickly becomes easier.
You forgot to add reviewers. Usually the best is to check the persons that reviewed the submissions applied to the file you changed.