//
//  (C) Porkolab 2003
//
//  A.8.9.
//   
//  Static linking:

g++ -fPIC -g -c x.cpp
g++ -fPIC -g -c y.cpp
g++ -shared -Wl,-soname,libx.so.1 -o libx-so.1.0.1 x.o -lc
g++ -shared -Wl,-soname,liby.so.1 -o liby-so.1.0.1 y.o -lc

-rwxr-xr-x    1 gsd      users      117820 2003-11-10 02:26 libx-so.1.0.1
-rwxr-xr-x    1 gsd      users      117820 2003-11-10 02:26 liby-so.1.0.1
-rw-r--r--    1 gsd      users         112 2003-11-10 01:34 main.cpp
-rw-r--r--    1 gsd      users          95 2003-11-10 01:31 x.cpp
-rw-r--r--    1 gsd      users          61 2003-11-10 01:32 x.h
-rw-r--r--    1 gsd      users      142852 2003-11-10 02:24 x.o
-rw-r--r--    1 gsd      users          95 2003-11-10 01:31 y.cpp
-rw-r--r--    1 gsd      users          61 2003-11-10 01:32 y.h
-rw-r--r--    1 gsd      users      142852 2003-11-10 02:24 y.o

g++ main.cpp ./libx-so.1.0.1 ./liby-so.1.0.1

//////////////////////////////////////////////////////////////


// file: x.cpp
#include "x.h"

X::X()
{
    std::cerr << "X is created" << std::endl;
}
X X::xs;


///////////////////////////////////////


// file: x.cpp
#include "y.h"

Y::Y()
{
    std::cerr << "Y is created" << std::endl;
}
Y Y::ys;


////////////////////////////////////////


// file: main.cpp
#include <iostream>

using namespace std;

int main()
{
    cout << "main is running" << endl;
    return 0;
}


// g++ main.cpp -Llibx-so.1.0.1 -Lliby-so.1.0.1
// output: 
main is running


// g++ main.cpp y.cpp x.cpp
// output: 
X is created
Y is created
main is running