'How can I combine two different dylib into a simple one for my Mac application?

I am trying to build ffmpeg for Intel and M1 platform for my application.

I got some problem, because when I put arm64 dylibs I got error that no x86_64 dylibs available. And I got arm64 dylibs not available when I put x86_64 dylibs.

Can I combine these two set of dylibs into a single one then I don't need to change the dylibs on different platform?

XCFramework or ??

Thank you.

Eric



Solution 1:[1]

You can create so called "fat" library. It is dylib which combine several architectures for one platform (MacOS in your case).

lipo -create libx86_64.dylib libarm64.dylib -output libcombined.dylib

Resulted dylib you can include in your project and it will compile fine for both archs.

If you want it more comfortable you can build framework from combined library and header folder

xcodebuild -create-xcframework -library libcombined.dylib -headers path/to/headers/directory -output output.xcframework

In this case you'll need to include only framework in your project

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 Alexander Ushakov