Ti avevo già risposto (ecco svelato l'arcano delle librerie). Devi toglierle dalla compilazione dell'oggetto
#Compile source
gcc -fPIC -c -I$2 -I$2/applib/ -I$4/bp/include -I$4/bp/library src/bp_implementations/*.c
gcc -fPIC -c -I$DIR_BP_IMPL -I$2 -I$2/applib/ -I$4/bp/include -I$4/bp/library src/*.c
Questa parte deve essere necessariamente statica perché non compilato con PIC (Position Independent Code)
#extract source from dtn2's library
cp $2/applib/libdtnapi.a .
ar x libdtnapi.a
Qui devi semplicemente crearti la libreria sharata dagli oggetti. Togli
fPic ma
assicurati che in lista ci siano solo gli oggetti compilati con -fpic
#create a dynamic library of ion
gcc -fPIC -shared -o libbp.so $4/bp/i86-redhat/libbp.o $4/bp/i86-redhat/libbpP.o $4/bp/i86-redhat/ecos.o $4/bp/i86-redhat/bei.o $4/bp/i86-redhat/extbsputil.o $4/bp/i86-redhat/extbspbab.o $4/bp/i86-redhat/extbsppcb.o $4/bp/i86-redhat/extbsppib.o $4/bp/i86-redhat/crypto.o $4/bp/i86-redhat/libbpnm.o
Esegui il linker come hai fatto nel post precedente.
EDIT:
gcc main.c -o provaBP -L$BPDIR -I$DTN2DIR/applib -I$IONDIR/include -I$IONDIR/library -I$DTN2DIR -I$BPDIR/src/bp_implementations -I$BPDIR/src -lbp_abstraction_layer -ldtnapi -lbp -lici -lpthread
Fai attenzione al percorso della shared object aggiungi
-L/path/to/libdir_so