2015-07-13 2 views
0

Моя программа должна связываться с последовательным устройством. Я разрабатываю его на Ubuntu 14.04 LTS. Я нашел libserial и попытался использовать его, но он не компилируется. Я загрузил, скомпилировал и установил v0.6.0rc2. Да, это rc, но он более популярен на sourceforge, и стабильные версии очень старые. Если вы знаете лучшую библиотеку, сообщите мне об этом в комментариях.Как скомпилировать libserial на linux?

Приведенный ниже код согласно Документов оленьей коже компиляции:

#include <SerialStream.h> 
// 
using namespace LibSerial ; 
main() 
{ 
    SerialStream my_serial_stream ; 
    // 
    // Open the serial port for communication. 
    // 
    my_serial_stream.Open("/dev/ttyS0") ; 

} 

Это ошибка, я получаю:

[email protected]:~$ g++ test.cpp 
/tmp/ccyWIbXN.o: In function `main': 
test.cpp:(.text+0x17): undefined reference to `LibSerial::SerialStream::SerialStream()' 
test.cpp:(.text+0x6d): undefined reference to `LibSerial::SerialStream::Open(std::string, std::_Ios_Openmode)' 
test.cpp:(.text+0x9a): undefined reference to `LibSerial::SerialStream::~SerialStream()' 
test.cpp:(.text+0xd6): undefined reference to `LibSerial::SerialStream::~SerialStream()' 
collect2: error: ld returned 1 exit status 

Я изменил линию в вопросе my_serial_stream.Open("/dev/ttyS0" , ios::out) ; и добавили имен std , Теперь я получаю эту ошибку:

[email protected]:~$ g++ test.cpp 
/tmp/ccUhSQVA.o: In function `main': 
test.cpp:(.text+0x17): undefined reference to `LibSerial::SerialStream::SerialStream()' 
test.cpp:(.text+0x5f): undefined reference to `LibSerial::SerialStream::Open(std::string, std::_Ios_Openmode)' 
test.cpp:(.text+0x8c): undefined reference to `LibSerial::SerialStream::~SerialStream()' 
test.cpp:(.text+0xc8): undefined reference to `LibSerial::SerialStream::~SerialStream()' 
collect2: error: ld returned 1 exit status 

ответ

1

Вам необходимо связать библиотеку с вашим кодом.

попробуйте использовать

g++ test.cpp -L<PATH_TO_LIB_SERIAL_LIBRARY_DIR> -lserial 

Давайте предположим, вы установили libserial в/USR/местные/Lib (libserial.a или libserial.so в/USR/местные/Библиотека) нужно использовать следующую команду для компиляции и связывания вашей программы

g++ test.cpp -L/usr/local/lib -lserial 

Вывод ошибки, который вы опубликовали, показывает, что ошибка произошла во время фазы связывания.

См What is an undefined reference/unresolved external symbol error and how do I fix it?

для получения дополнительной информации о том, что может вызвать ошибки связывания.

В этом случае, похоже, что вы не ссылались на библиотеку.

Смежные вопросы