시리얼 포트 프로그래밍
시리얼 프로그래밍 라이브러리를 http://libserial.sourceforge.net/ 에서 받아서 컴파일 하고 인스톨 했읍니다.
그리고 테스트 프로그램을 했고 (serial.c) 이것을 두가지 방법으로 컴파일 했읍니다. (링크방법)
보드에 시리얼 포트가 없어서 시스템베이스 의 USB to 232C 컨버터를 사용했는데 /dev/ttyUSB0 으로 잡혔읍니다.
(1) g++ -Wall -static -o serials serial.c -L/usr/local/lib -lserial
(2) g++ -Wall -shared -o seriald serial.c -L/usr/lib -lserial -lm
두 방법 모두 컴파일 과 링크가 되었읍니다.
특히 ldd -v seriald 를 해 보면
libserial.so.0 => /usr/lib/libserial.so.0 (0xb6f33000)
libstdc++.so.6 => /usr/lib/libstdc++.so.6 (0xb6e66000)
libm.so.6 => /usr/lib/libm.so.6 (0xb6dc1000)
libgcc_s.so.1 => /usr/lib/libgcc_s.so.1 (0xb6d99000)
libc.so.6 => /usr/lib/libc.so.6 (0xb6c5f000)
/usr/lib/ld-linux.so.3 (0xb6f70000)
Version information:
이렇게 해당 라이브러리가 잘 mapping 되어 있는데
문제는 (1) 방법의 serials 는 잘 동작하는데
(2) 방법의 seriald 는 세그먼테이션 위반 에러로 core dump 를 하네요......
첨부 파일로 serial.c 를 올립니다.
원인이 무었일까요?
첨부 | 파일 크기 |
---|---|
![]() | 899바이트 |
다른 방법으로 시도
(3) g++ -Wall -o serialp serial.c libserial.a
이방법으로 해 보았는데 문제없이 잘 되었읍니다.
그렇다면 libserial.so 다이나믹 라이브러리가 문제가 있다고 결론을 내릴 수 있는 것인지요 ???
댓글 달기