본문 바로가기

Linux

(4)
동적으로 로딩된 shared library에서 메인 프로그램에 포함된 함수의 호출 방법 linux에서 shared library를 만들고 그 라이브러리에서 메인 프로그램의 일부 기능들을 사용해야 할 경우가 발생하였다. 참고 : http://stackoverflow.com/questions/17081131/how-to-call-a-function-in-the-main-program-from-a-dynamically-loaded-shared-libr -Wl, --export-dynamic 옵션을 이용하는 방법도 있다는 것.(난 몰랐네..)
ubuntu 13.10 + eclipse(kepler) + boost 1.55.0 설치 및 사용 1. Ubuntu 13.10에 boost c++ library 1.55.0 설치 방법 [참고] http://cccob.blogspot.kr/2013/09/boost-1304-boost-153.html 1.53.0 버젼과 설치방법이 다르지는 않으니.. 위 블로그 내용을 참조. 2. Eclipse Kepler에 boost 설정 (1) 일단 본인은 1.54.0버젼 부터 추가된 boost.log 를 사용하려고 한다. 이클립스에서 c++ 프로젝트를 생성하고 cpp 파일에 다음 샘플 코드를 추가했다. #include #include #include #include namespace logging = boost::log;using namespace std;void SetFilter() { logging::core::..
valgrind를 이용한 c++ 메모리 누수(memory leak) 검사 방법 현재 본인의 개발 환경은 아래와 같다. 개발환경 : Eclipse CDT, GCC 프로그램을 구성하고 컴파일과 링크의 오류가 없어서 잘 동작하고 있는것만 같은 프로그램에서..반드시 체크해야 할 부분이 메모리 누수이다.동적으로 메모리를 할당하고 해제하는 과정에서 제대로 처리를 하지 못해서 발생하거나, 사용하는 특정 라이브러리 자체에서 발생하고 있거나, 변수 캐스팅 오류등 다양한 원인에 의해서 프로그램이 종료될때 메모리를 제대로 시스템에 반환하지 못할경우에 어떤일이 발생할지 알수가 없게된다. 이번에 사용해본것은 valgrind라는 프로그램이다. 설치는 $ sudo apt-get install valgrind 로 하면 되고, 사용하는 방법은 실행 프로그램을 만들고, 실행을 아래와 같이 하면 된다. $ valg..
G++ 에서 STL의 transform을 사용할때 발생하는 문제점의 해결방법 윈도우에서 어플리케이션을 짜놓고 리눅스로 바꾸는 과정중에 STL의 transform 함수에서 문제가 발생했다. transform(strJointtype.begin(), strJointtype.end(), strJointtype.begin(), (int(*)(int))tolower); 이 코드를 컴파일 하니.. error: no matching function for call to ‘transform(__gnu_cxx::__normal_iterator, __gnu_cxx::__normal_iterator, __gnu_cxx::__normal_iterator, ) 위와같이 에러가 뜬다. 이것을 해결하기 위해 구글링을 해보니, 답이 바로 나온다. 답은 아래 웹페이지에 나온다. http://osdir.com/m..