linux-l: Symbolexport in Shared Libraries

Oliver Hillmann ohil at tequila.in-berlin.de
So Jan 23 20:41:05 CET 2000


Hallo,

weiß von Euch wer, wie ich die Symbole, die eine selbstgebastelte Shared
Library exportiert, einschränke?

Also, angenommen, ich habe folgendes File (foo.c):

*snip!* ----8<-----8<-----8<------8<-----
#include <stdio.h>
void foo()
{
	if (always_true())
		printf("Foo!\n");
	else
		printf("No foo...\n");
}
int always_true() {
	return 1;
}
*snap!* ----8<-----8<-----8<------8<-----

compiliere das mit

gcc -shared -o libfoo.so foo.c -Wl,-soname,lifoo.so

, dann habe ich eine Shared Lib namens libfoo.so, die ich - entsprechende
Linkoptionen und LD_LIBRARY_PATH vorausgesetzt - zum Linken mit
anderen Programmen benutzen kann.

Allerdings: So wie ich das mache, werden sowohl foo als auch always_true
als Symbole exportiert. Wie kann ich verhindern, daß always_true (is ja
ohnehin ne blöde Funktion :) exportiert wird, also für dagegen dynamisch
gelinkte Programme unsichtbar wird?

Die von mir gefundene Doku zu ELF und Shared Libs half mir in diesem Punkt
nicht weiter.... Die Linkeroption -E ("Export all dynamic symbols")
verstehe ich nicht, da ja ohnehin alle exportiert werden...

Herzlichen Dank schon mal vorher... Wer mir helfen kann, darf obiges
Programm auch behalten :)

Gruß

Oli



Mehr Informationen über die Mailingliste linux-l