You can manually delete unwanted characters in the last merged library:
$ objcopy -N foo cppwrap.a (delete character)
Or, if you need characters, but want to make sure that external users cannot reach them:
$ objcopy -L bar cppwrap.a (localize character)
Or, if the symbol clib.a should be visible by something in cpp.o, but you do not want anyone else to use it:
$ objcopy -W baz cppwrap.a (loosen symbol)
In this case, collisions with characters from other object files / libraries will be delayed until they are used, although the character will still be visible. To darken things or reduce the chances of even a shameful encounter, you can also use:
$ objcopy --redefine-sym old=new cppwrap.a
, , , , .