ubuntuusers.de

Eigene C-Bibliothek verwenden

Status: Gelöst | Ubuntu-Version: Ubuntu 11.10 (Oneiric Ocelot)
Antworten |

prone

Anmeldungsdatum:
6. September 2011

Beiträge: 8

Hi,

ich muss eine eigene C-Bibliothek verwenden.

In der Readme steht, dass ich die Header Datei einmal in usr/local/include und die Bibliothek in usr/local/lib rein kopieren soll.

Das habe ich gemacht jedoch wenn ich versuche das Programm zu kompilieren dann bekomme ich immer den folgenden Fehler:

1
2
3
4
laptop@ubuntu:~/Klausur$ sudo cc k1a2.c -o k1a2 -lm -lcnum
[sudo] password for laptop: 
/usr/bin/ld: cannot find -lcnum
collect2: ld gab 1 als Ende-Status zurück

Ich habe das x64 System bei mir installiert in den Beschreibung zu der Bibliothek steht, dass sie für ein 32bit System geschrieben ist, kann es schon das Problem sein?

Danke für die Hilfe!

Bilder

Lysander

Avatar von Lysander

Anmeldungsdatum:
30. Juli 2008

Beiträge: 2669

Wohnort: Hamburg

prone schrieb:

ich muss eine eigene C-Bibliothek verwenden.

Es ist Deine eigene C-Lib und Du kannst sie nicht einbinden? 😬

Ich habe das x64 System bei mir installiert in den Beschreibung zu der Bibliothek steht, dass sie für ein 32bit System geschrieben ist, kann es schon das Problem sein?

Das kann natürlich ein Problem sein - aber dieses Problem liegt daran, dass Du nicht genau liest! Lies Dir doch bitte mal durch, wie die Dateien heißen und wie man die als Lib angeben soll!

Und wieso kopierst Du uns hier ein Bild aus einem PDF rein?

Ach ja: Einen Compiler mit root-Rechten laufen zu lassen ist eine ziemlich dumme Idee!

prone

(Themenstarter)

Anmeldungsdatum:
6. September 2011

Beiträge: 8

Ist ja nicht meine eigene von mir Geschriebene Bibliothek. Sondern die von der FH.

Ich muss den Compiler mit Root rechten durchlaufen lassen, weil ich ansonsten den Fehler bekomme, dass er keine Zugriffsrechte auf die Bibliothek hat.

Ich habe mir das alles genau durchgelesen, so ist es ja nicht ich gebe die Lib genau so an wie es in der Beschreibung steht.

Das Bild von der PDF habe ich hier eingebunden, damit ihr wisst was ich gemacht habe.

Kinch

Anmeldungsdatum:
6. Oktober 2007

Beiträge: 1261

prone schrieb:

Ich muss den Compiler mit Root rechten durchlaufen lassen, weil ich ansonsten den Fehler bekomme, dass er keine Zugriffsrechte auf die Bibliothek hat.

Es wäre besser den Fehler zu beseitigen, statt hier etwas mit 'sudo' zu machen.

Ich habe mir das alles genau durchgelesen, so ist es ja nicht ich gebe die Lib genau so an wie es in der Beschreibung steht.

In der Beschreibung steht '-lCNnum' du schreibst aber '-lcnum'.

Lysander

Avatar von Lysander

Anmeldungsdatum:
30. Juli 2008

Beiträge: 2669

Wohnort: Hamburg

Kinch schrieb:

In der Beschreibung steht '-lCNnum' du schreibst aber '-lcnum'.

Ach menno... das sollte er doch selber rausfinden 😛

@prone: Wenn Du an einer FH studierst, dann solltest Du in der Lage sein, Dich korrekt und präzise auszudrücken. "Eigene" bedeutet genau das, was ich daraus gelesen habe, nämlich eine von Dir selber geschriebene Bibliothek. Du willst aber eine fremde Lib einbinden. Das ist ziemlich konträr - oder siehst Du das anders?

Zum Bild: Gibt es zu dieser Lib keine textuelle README? Selbst wenn nicht, hättest Du den Text einfach kopieren und den hier posten können.

Generell ist in Linux so ziemlich alles Case-Sensitive. Insofern ist es z.B. hilfreich einmal per find den Lookup vom gcc zu emulieren. Dadurch wärst Du sogar ohne externe Hilfe darauf gekommen, wieso die Lib nicht gefunden wird. Ok, exaktes Lesen hilft natürlich auch 😉

prone

(Themenstarter)

Anmeldungsdatum:
6. September 2011

Beiträge: 8

Kinch schrieb:

In der Beschreibung steht '-lCNnum' du schreibst aber '-lcnum'.

Es ist ja nocht so, dass ich es nicht schon veruscht habe...

Das ist dann der Fehler.

1
2
3
/usr/bin/ld: skipping incompatible /usr/local/lib/libCNum.a when searching for -lCNum
/usr/bin/ld: cannot find -lCNum
collect2: ld gab 1 als Ende-Status zurück

Lysander

Avatar von Lysander

Anmeldungsdatum:
30. Juli 2008

Beiträge: 2669

Wohnort: Hamburg

prone schrieb:

Es ist ja nocht so, dass ich es nicht schon veruscht habe...

Und wieso schreibst Du das nicht? Wieso postest Du hier einen unsinnigen Aufruf und verfälscht damit alles?

Das ist dann der Fehler.

1
2
3
/usr/bin/ld: skipping incompatible /usr/local/lib/libCNum.a when searching for -lCNum
/usr/bin/ld: cannot find -lCNum
collect2: ld gab 1 als Ende-Status zurück

*seufz* Lies Dir doch mal diese Meldung exakt durch! Mann mann mann... da steht doch des Rätsels Lösung im Klartext drin. Daraus musst Du nur noch die richtigen Schlüsse ziehen - im Grunde genommen hast Du das ja oben schon gemutmaßt.

Kinch

Anmeldungsdatum:
6. Oktober 2007

Beiträge: 1261

prone schrieb:

Kinch schrieb:

In der Beschreibung steht '-lCNnum' du schreibst aber '-lcnum'.

Es ist ja nocht so, dass ich es nicht schon veruscht habe...

Und woher sollen wir das wissen?

Das ist dann der Fehler.

1
2
3
/usr/bin/ld: skipping incompatible /usr/local/lib/libCNum.a when searching for -lCNum
/usr/bin/ld: cannot find -lCNum
collect2: ld gab 1 als Ende-Status zurück

Das ist doch auch ein ganz anderer Fehler? Beim ersten wird nicht die Datei gefunden 'cannot find -lcnum'. Beim zweiten wird die Datei gefunden, aber das Format ist inkompatibel. Du kannst halt kein 32bit-Lib mit 64bit-Compiler zusammennutzen; das sind unterschiedliche Architekturen.

Du könntest dir ein 32bit-Chroot aufsetzen und dort versuchen das zu kompilieren. Besser wäre es natürlich, wenn du eine 64bit-Version der Bibliothek benutzt. Entweder deine FH stellt dir wsa bereit oder du kompilierst es selbst, wenn sie dir den Quellcode geben.

prone

(Themenstarter)

Anmeldungsdatum:
6. September 2011

Beiträge: 8

Ok, danke für die nette Hilfe.

Lysander

Avatar von Lysander

Anmeldungsdatum:
30. Juli 2008

Beiträge: 2669

Wohnort: Hamburg

prone schrieb:

Ok, danke für die nette Hilfe.

Wieso ist der Student von heute nur so patzig?

prone

(Themenstarter)

Anmeldungsdatum:
6. September 2011

Beiträge: 8

Ok, eine Frage bleibt bei mir noch.

Wenn es nicht so klug ist den Compiler mit root-Rechten durchlaufen zu lassen, was muss ich dann machen damit er auf die Lib zugreift ohne mir zu sagen, dass er keine Zugriffsrechte hat?

Lysander

Avatar von Lysander

Anmeldungsdatum:
30. Juli 2008

Beiträge: 2669

Wohnort: Hamburg

Schau Dir mal die Rechte an. others müssen Leserechte darauf haben.

prone

(Themenstarter)

Anmeldungsdatum:
6. September 2011

Beiträge: 8

Lysander schrieb:

Schau Dir mal die Rechte an. others müssen Leserechte darauf haben.

OK, hat so funktioniert. Danke.

Antworten |