使用多个动态库时因为都包含了模板类的实现,会造成符号冲突的告警,用下面的-bh:5的方法可以把这些告警关掉。很管用,世界清静了:)

ld: 0711-224 WARNING: Duplicate symbol: .std::bad_exception::~bad_exception()
ld: 0711-224 WARNING: Duplicate symbol: std::bad_exception::~bad_exception()
ld: 0711-224 WARNING: Duplicate symbol: .std::bad_typeid::~bad_typeid()
ld: 0711-224 WARNING: Duplicate symbol: std::bad_typeid::~bad_typeid()
ld: 0711-224 WARNING: Duplicate symbol: .std::logic_error::~logic_error()
ld: 0711-224 WARNING: Duplicate symbol: std::logic_error::~logic_error()
ld: 0711-224 WARNING: Duplicate symbol: std::logic_error::what() const
ld: 0711-224 WARNING: Duplicate symbol: std::logic_error::_Doraise() const
ld: 0711-224 WARNING: Duplicate symbol: .std::ios_base::failure::~failure()
ld: 0711-224 WARNING: Duplicate symbol: std::ios_base::failure::~failure()
ld: 0711-224 WARNING: Duplicate symbol: std::exception::what() const
ld: 0711-224 WARNING: Duplicate symbol: std::bad_alloc::_Doraise() const

Those warnings are due to the standard C++ iostream implementation.  Some functions are defined in the header of iostream, and they get included in both a library and inside your application.  The linker complains about duplicate symbols being defined by default.  This is not a problem with ICU. 

You have two options to fix this problem. 

1) Add -bh:5 when you link your application to silence these warnings 
2) Ask the AIX or the Visual Age people to fix their iostream implementation to silence these warnings. 

Using -O and removing -bnoquiet may reduce the number warnings, but it won't remove them completely like one of the above options.
10-09 19:27