Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • SEARCH
  • Home
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 639481
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: May 13, 20262026-05-13T20:50:51+00:00 2026-05-13T20:50:51+00:00

.dylib is the dynamic library extension on macOS, but it’s never been clear to

  • 0

.dylib is the dynamic library extension on macOS, but it’s never been clear to me when I can’t / shouldn’t use a traditional unix .so shared object.

Some of the questions I have:

  • At a conceptual level, what are the main differences between .so and .dylib?
  • When can/should I use one over the other?
  • Compilation tricks & tips (For example, the replacement for gcc -shared -fPIC, since that doesn’t work on osx)
  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-05-13T20:50:51+00:00Added an answer on May 13, 2026 at 8:50 pm

    The Mach-O object file format used by Mac OS X for executables and libraries distinguishes between shared libraries and dynamically loaded modules. Use otool -hv some_file to see the filetype of some_file.

    Mach-O shared libraries have the file type MH_DYLIB and carry the extension .dylib. They can be linked against with the usual static linker flags, e.g. -lfoo for libfoo.dylib. They can be created by passing the -dynamiclib flag to the compiler. (-fPIC is the default and needn’t be specified.)

    Loadable modules are called “bundles” in Mach-O speak. They have the file type MH_BUNDLE. They can carry any extension; the extension .bundle is recommended by Apple, but most ported software uses .so for the sake of compatibility. Typically, you’ll use bundles for plug-ins that extend an application; in such situations, the bundle will link against the application binary to gain access to the application’s exported API. They can be created by passing the -bundle flag to the compiler.

    Both dylibs and bundles can be dynamically loaded using the dl APIs (e.g. dlopen, dlclose). It is not possible to link against bundles as if they were shared libraries. However, it is possible that a bundle is linked against real shared libraries; those will be loaded automatically when the bundle is loaded.

    Historically, the differences were more significant. In Mac OS X 10.0, there was no way to dynamically load libraries. A set of dyld APIs (e.g. NSCreateObjectFileImageFromFile, NSLinkModule) were introduced with 10.1 to load and unload bundles, but they didn’t work for dylibs. A dlopen compatibility library that worked with bundles was added in 10.3; in 10.4, dlopen was rewritten to be a native part of dyld and added support for loading (but not unloading) dylibs. Finally, 10.5 added support for using dlclose with dylibs and deprecated the dyld APIs.

    On ELF systems like Linux, both use the same file format; any piece of shared code can be used as a library and for dynamic loading.

    Finally, be aware that in Mac OS X, “bundle” can also refer to directories with a standardized structure that holds executable code and the resources used by that code. There is some conceptual overlap (particularly with “loadable bundles” like plugins, which generally contain executable code in the form of a Mach-O bundle), but they shouldn’t be confused with Mach-O bundles discussed above.

    Additional references:

    • Fink Porting Guide, the basis for this answer (though pretty out of date, as it was written for Mac OS X 10.3).
    • ld(1) and dlopen(3)
    • Dynamic Library Programming Topics
    • Mach-O Programming Topics
    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

I have made a C++ library and have built a .dylib dynamic library from
I need to use a library in a Cocoa application and can use either
I'm developing a Mac OS X Cocoa app and want to use several .dylib
My .app packages looks like this: MyApp.app/ Contents/ MacOS/ MyApp libA.dylib libB.dylib libC.dylib PlugIns/
I have a C++ library repeater.so that I can load from Python in Linux
I have a project whose artifacts are two dynamic libraries, let's say libX.dylib and
I'm writing a dylib in C++, but when I try to link it into
I'm trying to write a Ruby extension, and I've been successfully compiling my nmatrix.so
So I have included the libxml2.2.dylib library into my iPhone XCode project to create
I'm trying to create a dynamic library using Qt on OS X 10.6.7 and

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.