We will see how we can build dynamic libraries on different Unix flavours.
Apple Mac OS X
$ gcc -arch x86_64 -fno-common -c source.c
$ gcc -arch x86_64 -fno-common -c code.c
$ gcc -dynamiclib -flat_namespace -undefined suppress -install_name /usr/local/lib/libfoo.2.dylib
-o libfoo.2.4.5.dylib source.o code.o
-dynamiclib
When passed this option, GCC will produce a dynamic library instead of an executable when linking,
using the Darwin libtool command.
-arch arch
Compile for the specified target architecture arch. The allowable values are i386,x86_64,ppc and ppc64.
-flat_namespace
Use a single level address space for name resolution and done for al Unixes.
-undefined suppress
Supress undefined symbols.It will get resolved later from dependent libraries.
GNU Linux
gcc -m64 -fPIC -g -c -Wall a.c
gcc -m64 -fPIC -g -c -Wall b.c
gcc -m64 -shared -Wl,-soname,libmystuff.so.1 -o libmystuff.so.1.0.1 a.o b.o -lc
-fpic/-fPIC
Generate position-independent code ( PIC ) suitable for use in a shared library.
-shared
Produce a shared object which can then be linked with other objects to form an executable.
-m32/-m64
Generate code for 32-bit or 64-bit environments
HP HP-UX
cc +DD64 -Aa -c +Z length.c volume.c mass.c ( 64-bit )
ld -b -o libunits.sl length.o volume.o mass.o
-Amode
Specify the compilation standard to be used by the compiler.
a
Compile under ANSI mode
+z,+Z
Both of these options cause the compiler to generate position independent code (PIC) in 32/64-bit respectively.
+DD64
Recommended option for compiling in 64-bit mode on either Itanium-based or PA-RISC 2.0 architecture. The macros __LP64__ and (on PA platforms) _PA_RISC2_0 are #defined.
+DD32
Compiles in 32-bit mode and on PA systems creates code compatible with PA-RISC 1.1 architectures. (Same as +DA1.1 and +DAportable.)
+DA2.0W
Compiles in 64-bit mode for the PA-RISC 2.0 architecture. The macros __LP64__ and _PA_RISC2_0 are #defined.
+DA2.0N
Compiles in 32-bit mode (narrow mode) for the PA-RISC 2.0 architecture. The macro _PA_RISC2_0 is #defined. +DA options are not supported on Itanium-based platforms.
SUN SOLARIS
cc -xarch=v9 -Kpic -c a.c
cc -xarch=v9 -Kpic -c b.c
ld -G -o outputfile.so a.o b.o
-Kpic/-KPIC
Generate position-independent code for use in shared libs.
-G
Produce a shared object rather than a dynamically linked executable.
-xarch=v9
Specifies compiling for a 64-bit Solaris OS on SPARC platform.
-xarch=amd64
Specifies compilation for the 64-bit AMD instruction set.The C compiler from studio 10 onwards predefines __amd64 and __x86_64 when you specify -xarch=amd64.
Links:
Using static and shared libraries across platforms
Shared Libraries (HP-UX)
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment