Suppose that libabc.so is obtained from posiition independent object code files abc1.pic.o and abc2.pic.o ; then you have built them with e.g.
gcc -Wall -fPIC -O -g abc1.c -c -o abc1.pic.o
gcc -Wall -fPIC -O -g abc2.c -c -o abc2.pic.o
and you build libabc.so with
gcc -shared abc1.pic.o abc2.pic.o -L/usr/local/lib -l123 -o libabc.so
I added -L/usr/local/lib before -l123 because I am assuming you have a /usr/local/lib/lib123.so shared library.
Read also the Program Library HowTo.
As you see, you may link a shared library lib123.so into your own shared library libabc.so
Then check with ldd libabc.so
You may want to set up some rpath in your libabc.so by adding -Wl,-rpath and -Wl,$RPATHDIR to the linking command.
For much more details, read Drepper's paper How to write shared libraries
PS. Don't use a static library for lib123.a (it should be PIC). If you link non-PIC code into a shared object, you lose most of the advantages of shared objects, and the dynamic linker ld.so has to do zillions of relocations.