// // (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