On windows, shared libraries only export wanted symbols (functions, variables, etc). Historically, the reverse has been true for linux: all symbols are exported by default. Recently (with gcc4), it is possible to emulate that behavior. This is good because ABI breakages are less likely (only the API is exported, if the API doesn't change, the ABI most likely hasn't changed). The attached patch enables this by (a) defining PUBLIC on gcc systems, and (b) enabling it by default on a linux/shared library build/gcc4 combination. -- Felipe Sateler