Levi Pearson <[EMAIL PROTECTED]> writes: > "Andres Gonzalez" <[EMAIL PROTECTED]> writes: > >> I am porting a DLL (originally developed for MS Windows) to linux and >> I have a couple of basic questions about shared libraries in linux. >> >> How do you control what symbols and function names are exported or >> available when building the shared library? >> >> My code is compiling fine (using position independent code) and I am >> producing the .so file. When I run nm on the .so file, it shows tons >> and tons of symbols. My function names are also mangled. I want to >> only have a few select API functions available public ally. > > Are you building a C or a C++ library? If you're using a C++ compiler > to build a C library, you have to tell it to provide C symbols instead > of C++ ones.
Oh... regarding visibility of symbols. The easiest way to restrict the visibility of C symbols is to declare them static, which makes them file-scoped. If you want to share between files but not export in your shared library, you'll have to delve into deeper magic. Here's a document that explains everything you need to get started with shared objects: http://people.redhat.com/drepper/dsohowto.pdf --Levi /* PLUG: http://plug.org, #utah on irc.freenode.net Unsubscribe: http://plug.org/mailman/options/plug Don't fear the penguin. */
