반응형

OS: Ubuntu 16.04 (amd64)

Version: ns-3.26

gcc: 4.8.4



*결론부터 말하면, 소스 파일 확장자를 반드시 .cc 로 맞추자.



ns-3 에서 바로 시뮬레이션 코드를 테스트할 때 scratch 디렉토리에 소스코드를 집어넣으면 되고, 이 때 객체지향 컨셉을 적당히 쓰기 위해 하나의 클래스를 독립된 헤더와 소스 파일로 만드는 경우가 있다.


헤더와 소스 파일을 만들 때, [클래스 이름].h, [클래스 이름].cc 로 맞춰서 만들어야 하는데, 실수로 소스 파일 확장자를 cc가 아닌 cpp 또는 그외 다른 확장자로 쓰게 되면 ns-3의 waf 스크립트에서 소스 파일만 인식을 못해서 빌드 과정에서 "undefined reference to X" 에러가 발생한다.


문제는 이클립스 CPP 환경에서 ns-3를 프로젝트로 로드해 와서 scratch 폴더 내부에 클래스를 생성할 때에는 소스 파일의 확장자가 .cc이든 .cpp이든 아무 경고 메세지가 발생하지 않는다. 나도 이클립스 CPP에서 New > Class 메뉴를 통해서 자동으로 클래스를 만들면서 소스 파일 확장자가 .cpp로 만들어지는 것을 미처 인지하지 못해서 이 링크 에러를 보게 되었다.


ns-3.26/build/scratch 디렉토리를 살펴 보니 아예 내가 만든 클래스에 대한 오브젝트 파일(.o) 파일이 존재하지 않았다. 그 원인은 ns-3.26/wscript 파일에서 소스 파일을 자동으로 불러올 때 .cc 파일만 인식하게 되어 있기 때문이다.


(ns-3.26/wscript 파일 일부)

...(앞부분 생략)...

elif filename.endswith(".cc"):

name = filename[:-len(".cc")]

...(이하 생략)



wscript 파일을 고쳐서 cpp 파일도 자동 인식하도록 만들어도 되지만, 일단 ns-3에서 scratch 디렉토리에 대해서 미리 정해져 있는 컨벤션이고, 나중에 시뮬레이션 코드만 다른 컴퓨터의 다른 ns-3 버전에서 돌려야 할 때 같은 문제가 또 발생하게 되므로, 그냥 소스 파일을 .cc로 맞추는 것이 안전한 방법이 되겠다.



반응형
블로그 이미지

Bryan_

,
반응형

OS: Ubuntu 16.04 (amd64)



우분투에 와인을 설치해 두고 쓰다 보면 몇몇 확장자의 파일에 wine에서 작동하는 어플리케이션들이 "Open With" 메뉴에 선택 항목으로 표시된다.

몇 가지 예를 들어 보면:


txt 파일에서 Open With에 notepad (윈도우 메모장)이 연결되고, 

png, jpg 같은 이미지 파일에는 Internet Explorer가 연결되고,

hwp 파일에는 리눅스용 한컴뷰어 대신 wine에 내장된 한글 워드프로세서가 연결

그외 다수...


우분투에서 wine을 적극적으로 사용하는 경우에는 편리할 수 있지만, 단순한 텍스트 문서를 열고 싶을 때 굳이 wine에 연동된 메모장을 쓰고 싶지는 않을 것이다.


Open With 에 나타나는 wine 기반 윈도우용 어플리케이션 목록을 제거하려면,

텍스트 에디터로 ~/.local/share/applications/mimeinfo.cache 파일을 열고,

"wine-extension-" 문자열이 들어가 있는 라인을 모두 제거한다.


예를 들어, txt 파일에는 wine-extension-txt.desktop과 wine-extension-htm.desktop이 쓰여져 있을 텐데, 이 라인들을 지우고 mimeinfo.cache 파일을 저장한다. 그러면 이후 txt 파일을 마우스 오른쪽 버튼으로 클릭했을 때, Open With에서 더이상 notepad는 보이지 않게 된다.



<참고자료>

[1] https://askubuntu.com/questions/186494/remove-wines-notepad-from-open-with-options

반응형
블로그 이미지

Bryan_

,