2009-05-13 14 views
0

Ich versuche, meine Bibliothek xxx mit einer Bibliothek yyy zu verknüpfen. Ich möchte statisch verknüpfen, so dass ich yyy nicht zusammen mit xxx packen muss, wenn ich xxx ausliege. Ich habe zwei Versionen von yyy von einem Drittanbieter zur Verfügung gestellt: libyyy.so und libyyyln.a. Also hier gehe ich und verbinde mich mit -lyyyln.Statische Verknüpfung mit Sunstudio

Ich bekomme keine Fehlermeldung, wenn ich verlinke. Die Abhängigkeit von yyyln taucht nicht auf, wenn ich "ldd libxxx.so" mache. Aber "ldd -r libxxx.so" zeigt, dass die Symbole aus yyy nicht aufgelöst sind. "nm libxxx.so" zeigt, dass diese Symbole aus yyy UNDEF sind.

Was fehlt mir dann?

Edit1: Ich schaffte es zu bekommen schließlich mit "-l /fullpath/libyyyln.a" gcc

Antwort

0

Ich nehme an, Sie verwenden, um zu arbeiten. Standardmäßig verwendet gcc Shared Libraries (.so), wenn dies möglich ist. Daher müssen Sie erzwingen, dass es statisch mit der Option -static verknüpft.

Edit: Sorry, ich dachte Sunstudio war der Name der Bibliothek, die Sie verknüpfen möchten, ich habe vergessen, dass Sun Studio einen Compiler enthält. Es muss jedoch eine ähnliche Option für Sun Studio geben.

1

Sie haben diese Frage auf dem Sun Studio Forum gefragt konnte und Antworten bekommen direkt von der Sun Studio Compiler Team

Sun Studio Forums (für C, C++, Fortran, und Werkzeuge)

0

ich es geschafft, es zu bekommen um schließlich mit "-l /fullpath/libyyyln.a" zu arbeiten

Ich spielte mit -Bastatic und -Bdynamic ohne Erfolg. Die Lösung war wirklich so einfach wie das, was oben geschrieben wurde. Ich hätte früher darüber nachdenken sollen.