Forum: Compiler & IDEs Libtool's -export-symbol


von embert (Gast)


Lesenswert?

Hallo,


in einem Projekt, das mit Autotools gebaut wird, wird die LDFLAG 
-export-symbol-regex benutzt.

In der von Autotools generierten Makefile finde ich wieder die LDFLAG 
-export-symbol-regex.

Aber -export-symbol-regex ist doch keine reguläre GCC-Linker-Flag, oder?
Wie wird die Flag dann in der Makefile verarbeitet?
Und kann ich in meiner selbstgeschriebenen Makefile -export-symbol-regex 
einfach verwenden?

von Peter II (Gast)


Lesenswert?

embert schrieb:
> Aber -export-symbol-regex ist doch keine reguläre GCC-Linker-Flag, oder?

es steht zumindest in der doku

https://www.gnu.org/software/libtool/manual/html_node/Link-mode.html

von embert (Gast)


Lesenswert?

Hmm, das funktioniert bei mir aber nicht.
1
/* libso.c */
2
foo();
1
# Makefile
2
LDFLAGS += -export-symbols-regex 'foo'
1
$ make
2
bin/arm-linux-gnueabihf-ld: cannot find foo: Datei oder Verzeichnis nicht gefunden

von Dieter Graef (Gast)


Lesenswert?

embert schrieb:
> -export-symbols-regex

Klingt für mich als eine Option mit der man alle Symbole exportieren 
kann die einem regulärem Ausdruck entsprechen z.B.
probier mal
# Makefile
 LDFLAGS += -export-symbols-regex '[A-Za-z0-9]'

m.f.G.
Dieter Gräf

von Dieter Graef (Gast)


Lesenswert?

oder vielleicht sogar
 LDFLAGS += -export-symbols-regex [A-Za-z0-9]

von embert (Gast)


Lesenswert?

Dieter Graef schrieb:
> LDFLAGS += -export-symbols-regex '[A-Za-z0-9]'
> LDFLAGS += -export-symbols-regex [A-Za-z0-9]

Nee, der frisst beides nicht:
1
arm-linux-gnueabihf-ld: cannot find [A-Za-z0-9]: Datei oder Verzeichnis nicht gefunden


Aber es ist doch so, dass Autotools, Libtools etc. nur eine Makefile 
erstellen, und zu guter Letzt GCC o.ä. die Sachen bauen.

Also entweder kann GCC mit dem Flag umgehen, oder sie muss noch 
irgendwie für GCC übersetzt werden.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.