Ubuntu Suomen keskustelualueet
Ubuntun käyttö => Ohjelmointi, palvelimet ja muu edistyneempi käyttö => Aiheen aloitti: zepalus - 20.01.08 - klo:00.30
-
Tarkoitus on kommonikoida sarjaportin kautta mikrokontrollerille. Asensin libserialin (http://libserial.sourceforge.net/ (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?
-
Tarkoitus on kommonikoida sarjaportin kautta mikrokontrollerille. Asensin libserialin (http://libserial.sourceforge.net/ (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 ?
-
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.
gcc write_port.cc -llibserial
tai gcc write_port.cc -lserial
tai millä nimellä se kirjasto nyt sitten luuraakin, eli ensin -l, ja sitten kirjaston nimi.
-
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. gcc write_port.cc -llibserial
tai 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.