How do .so files avoid problems associated with passing header-only templates like MS dll files have?
Based on the discussion around this question. I’d like to know how .so files/the ELF format/the gcc toolchain avoid problems passing classes defined purely in header files (like the std library). According to Jan in that answer, the dynamic linker/loader only picks one version of such a class to load if its defined in two .so files. So if two .so files have two definitions, perhaps with different compiler options/etc, the dynamic linker can pick one to use.
How does a dynamic library’s references to a global variable get translated once in the running app?
If a dynamic library exports the address to a global variable defined within the library, how are accesses to that variable translated during dynamic linking so that a running application can interact with it?
Why are there two different kinds of linking, i.e. static and dynamic?
I’ve been bitten for the n-th time now by a library mismatch between a build and deployment environment. The build environment had libruby.so.2.0
and the deployment environment had libruby.a
. One ruby was built with RVM, the other was built with ruby-build
. The reason I ran into a problem was because zookeeper was compiled in a build environment that had the shared library but the deployment environment only had the static library.
Why are there two different kinds of linking, i.e. static and dynamic?
I’ve been bitten for the n-th time now by a library mismatch between a build and deployment environment. The build environment had libruby.so.2.0
and the deployment environment had libruby.a
. One ruby was built with RVM, the other was built with ruby-build
. The reason I ran into a problem was because zookeeper was compiled in a build environment that had the shared library but the deployment environment only had the static library.
Why are there two different kinds of linking, i.e. static and dynamic?
I’ve been bitten for the n-th time now by a library mismatch between a build and deployment environment. The build environment had libruby.so.2.0
and the deployment environment had libruby.a
. One ruby was built with RVM, the other was built with ruby-build
. The reason I ran into a problem was because zookeeper was compiled in a build environment that had the shared library but the deployment environment only had the static library.
Why are there two different kinds of linking, i.e. static and dynamic?
I’ve been bitten for the n-th time now by a library mismatch between a build and deployment environment. The build environment had libruby.so.2.0
and the deployment environment had libruby.a
. One ruby was built with RVM, the other was built with ruby-build
. The reason I ran into a problem was because zookeeper was compiled in a build environment that had the shared library but the deployment environment only had the static library.
Ensuring reliability of cross-compilation
Provided that my code is fully standards compliant with no undefined behaviour, how can I best assure that it will be possible to cross-compile my software for any architecture?
Ensuring reliability of cross-compilation
Provided that my code is fully standards compliant with no undefined behaviour, how can I best assure that it will be possible to cross-compile my software for any architecture?
Ensuring reliability of cross-compilation
Provided that my code is fully standards compliant with no undefined behaviour, how can I best assure that it will be possible to cross-compile my software for any architecture?
Ensuring reliability of cross-compilation
Provided that my code is fully standards compliant with no undefined behaviour, how can I best assure that it will be possible to cross-compile my software for any architecture?