Ubuntun käyttö > Ohjelmointi, palvelimet ja muu edistyneempi käyttö

libserial + undefined reference to [ratkaistu]

(1/1)

zepalus:
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?

_Pete_:

--- Lainaus käyttäjältä: zepalus - 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?

--- Lainaus päättyy ---

Linkata mukaan kirjasto, joka puuttuu ?

Tommi S.:
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: ---gcc write_port.cc -llibserial
--- Koodi päättyy ---
tai
--- Koodia: ---gcc write_port.cc -lserial
--- Koodi päättyy ---
tai millä nimellä se kirjasto nyt sitten luuraakin, eli ensin -l, ja sitten kirjaston nimi.

zepalus:

--- Lainaus käyttäjältä: Tommi S. - 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: ---gcc write_port.cc -llibserial
--- Koodi päättyy ---
tai
--- Koodia: ---gcc write_port.cc -lserial
--- Koodi päättyy ---
tai millä nimellä se kirjasto nyt sitten luuraakin, eli ensin -l, ja sitten kirjaston nimi.


--- Lainaus päättyy ---

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.

Navigaatio

[0] Viestien etusivu

Siirry pois tekstitilasta