thanks your help.
in addition, I tried to fool the ld, I build a SDK shared lib with the link flag "--whole-archive -lstdc++ --no-whole-archive".
the shared lib should contain the whole libstdc++.
then I rename the .so to libstdc++.so, put it into the folder which is one of ld search folder.
re-build the executable, let it link with the new libstdc++.so.
from link trace, only this new libstdc++.so is linked, it seems I get a executable with one copy of libstdc++.a.
but test it on android, exception handling still doesn' work
steps: 1, build sdk.so with "--whole-archive -lstdc++ --no-whole-archive"
2, rename sdk.so to libstdc++.so
3, build test only with the new libstdc++.so,
4, check the dependencies, readelf -d test, which need sdk.so
5, put test in /data, put sdk.so into /system/lib, run test, no link error, but exception handling still doesn't work