Kirjoittaja Aihe: libserial + undefined reference to [ratkaistu]  (Luettu 3879 kertaa)

zepalus

  • Käyttäjä
  • Viestejä: 2
    • Profiili
libserial + undefined reference to [ratkaistu]
« : 20.01.08 - klo:00.30 »
Tarkoitus on kommonikoida sarjaportin kautta mikrokontrollerille. Asensin libserialin (http://libserial.sourceforge.net/). Asennus meni mielestäni ihan hyvin, mutta kun yritän kääntää mukana tullutta esimerkkiohjelmaa tulee pitkälista tämän tyylisiä ilmoituksia:
write_port.cc:(.text+0x175): undefined reference to `LibSerial::SerialStream::Open(std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::_Ios_Openmode)'
Vika on ilmeisesti linkittämisessä, mutta mitä pitää tehdä että homma rupeisi toimimaan?
« Viimeksi muokattu: 20.01.08 - klo:15.52 kirjoittanut zepalus »

_Pete_

  • Käyttäjä
  • Viestejä: 1836
  • Fufufuuffuuu
    • Profiili
Vs: libserial + undefined reference to
« Vastaus #1 : 20.01.08 - klo:14.18 »
Tarkoitus on kommonikoida sarjaportin kautta mikrokontrollerille. Asensin libserialin (http://libserial.sourceforge.net/). Asennus meni mielestäni ihan hyvin, mutta kun yritän kääntää mukana tullutta esimerkkiohjelmaa tulee pitkälista tämän tyylisiä ilmoituksia:
write_port.cc:(.text+0x175): undefined reference to `LibSerial::SerialStream::Open(std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::_Ios_Openmode)'
Vika on ilmeisesti linkittämisessä, mutta mitä pitää tehdä että homma rupeisi toimimaan?

Linkata mukaan kirjasto, joka puuttuu ?


Tommi S.

  • Käyttäjä
  • Viestejä: 240
    • Profiili
Vs: libserial + undefined reference to
« Vastaus #2 : 20.01.08 - klo:14.36 »
Eli olisiko kyse siitä että kun vaikka gcc:llä kääntää ohjelman jossa on käyttänyt jotain kirjastoa niin täytyy käyttää -l valintaa, eli esim.
Koodia: [Valitse]
gcc write_port.cc -llibserial tai
Koodia: [Valitse]
gcc write_port.cc -lserial tai millä nimellä se kirjasto nyt sitten luuraakin, eli ensin -l, ja sitten kirjaston nimi.

zepalus

  • Käyttäjä
  • Viestejä: 2
    • Profiili
Vs: libserial + undefined reference to
« Vastaus #3 : 20.01.08 - klo:15.51 »
Eli olisiko kyse siitä että kun vaikka gcc:llä kääntää ohjelman jossa on käyttänyt jotain kirjastoa niin täytyy käyttää -l valintaa, eli esim.
Koodia: [Valitse]
gcc write_port.cc -llibserial tai
Koodia: [Valitse]
gcc write_port.cc -lserial tai millä nimellä se kirjasto nyt sitten luuraakin, eli ensin -l, ja sitten kirjaston nimi.


Kiitoksia, kirjaston nimi oli serial ja nyt onnistui. Seuraava ongelma oli että ohjelmaa ajettaessa tuli ilmoitus:
error while loading shared libraries: libserial.so.0: cannot open shared object file: No such file or directory
Tuosta pääsi eroon kun lisäsi ld.so.conf tiedostoon rivin
/usr/local/lib
ja ajoi ldconfig:in. Tämä kertomus siltä varalta, että jollekkin tulee sama ongelma.