Search results for '리눅스/개발환경'

VMPlayer에 RedHat9.0 설치

2007/09/16 21:11
학교에서 진행하는 시스템소프트웨어 설계 및 실습에서 사용하는 운영체제는 무려 레드햇 9이다. 새로 파티션만들기 뭐해서 예전에 등록받았던 VMPlayer를 통해 사용하려고 여기저기 알아봤는데, 생각보다 쉽다.

우선 VMPlayer는 2개의 파일을 필요로하는데, 하드드라이브에 해당하는 vmdk와 가상머신 설정에 해당하는 vmx이다. vmdk는 qemu를 통해 생성이 가능하고 vmx에 대해서는 쉽게 자료를 찾아볼수 있어서 긁어와 붙였다.

vmdk 생성
qemu-img.exe create -f vmdk redhat.vmdk 4G
vmx 파일 내용
config.version = "8"
virtualHW.version = "3"
ide0:0.present = "TRUE"
ide0:0.filename = "redhat.vmdk"
memsize = "384"
MemAllowAutoScaleDown = "FALSE"
ide1:0.present = "TRUE"

#ide1:0.fileName = "auto detect"
#ide1:0.deviceType = "cdrom-raw"
#설치후에 위에설정으로 vmx를 변경

ide1:0.fileName = "redhat-install-9-1-i386.iso"
ide1:0.deviceType = "cdrom-image"

ide1:0.autodetect = "TRUE"
floppy0.present = "FALSE"
ethernet0.present = "TRUE"
usb.present = "TRUE"
sound.present = "TRUE"
sound.virtualDev = "es1371"
displayName = "redhat"
guestOS = "redhat"
nvram = "redhat.nvram"
MemTrimRate = "-1"

ide0:0.redo = ""
ethernet0.addressType = "generated"
uuid.location = "56 4d 80 3e f2 32 56 75-44 a6 45 89 2b 4a 03 4b"
uuid.bios = "56 4d 80 3e f2 32 56 75-44 a6 45 89 2b 4a 03 4b"
ethernet0.generatedAddress = "00:0c:29:4a:03:4b"
ethernet0.generatedAddressOffset = "0"

tools.syncTime = "TRUE"
ide1:0.startConnected = "TRUE"
uuid.action = "create"
checkpoint.vmState = ""
tools.remindInstall = "TRUE"

#gui.fullScreenAtPowerOn = "TRUE"

특이한게 레드햇9는 여러장의 cd로 구성되어 있는데, cd교체를 단순히 vmx에서 cd-rom으로 잡았던 ide 이미지 파일 이름과 같게 다음 이미지 파일의 이름을 바꾸는것으로 해결할 수 있었다.

리눅스/개발환경 linux, vmplayer

KDevelop에서 실행폴더 설정하기

2006/07/09 11:07
Project - Project Options - Run Options 에서 설정할 수 있다.
설정파일에서는 프로젝트이름.kdevses 에 <customdirectory> 노드에 저장된다.

빈칸이 있을 경우에는 " 로 전체 경로를 둘러 싸 주어야 한다.

리눅스/개발환경 KDevelop, linux

KDevelop 옵션설정

2006/07/08 22:04
세부적인 libs 나 cflag를 설정하려 할때는 옆에 달려있는 automake manager를 이용해 설정할 수 있다.
세부 설정은 타겟디렉토리의 Makefile.am 에 저장된다.
kdev_target_option
kdev_target_library_set
src 디렉토리에 있는 Makefile.am 파일내용

bin_PROGRAMS = irr_test
irr_test_SOURCES = irr_test.cpp

# set the include path found by configure
INCLUDES= $(all_includes)

# the library search path.
irr_test_LDFLAGS = $(all_libraries)

irr_test_LDADD = -L/usr/X11R6/lib -L/media/sda2/workspace/KDevelop/irr_test/lib \
-lirrlicht -lX11 -lXi -lXmu -lglut -lGL -lGLU -lm

리눅스/개발환경 KDevelop, linux

KDevelop3 Code Completion DB 설정

2006/06/30 22:59
kdevelop_completion
Anjuta를 써보니 내가 좋아하는 kdev보다 코드 자동완성이 더 낫더라.
그런데 그 외의 것은 kdev가 더 나은것 같다. 더욱이 Anjuta의 희안한 버그때문에 더이상 Anjuta를 사용할 수 없는 환경이다.(메뉴 도구모음을 떼어내니 프로그램 시작시에 죽는다.)

그래서 이래저래 찾아봤는데, Code Completion DB를 만들어 줄 수 있더라.
다만, 이렇게 만들어놓으면 자동완성할것이 너무 많아지기 때문에 자동으로 완성하지 않고 단축키를 통해 완성한다. 내 경우에는 shift + space 를 완성 단축키로 설정해 놓았다.

그리고 개발환경 문서는 man 3 인데, 기본적으로 안깔려 있다. sudo apt-get install manpage-dev 로 개발환경 문서를 깔아주자. 그러면 kdev의 Document 의 Finder를 통해 살펴 볼 수 있다.

리눅스/개발환경 Development, linux

pkg-config

2006/06/26 23:24
gcc는 기본적으로 명령행으로 인자를 전달하는 방식이다. 무슨말인고 하니, 설정파일을 읽어들여서 거기에 맞게 include 를 잡거나 lib을 잡는게 아니라는 소리이다. 이렇게 되면 컴파일 설정이 무척 힘들어 질 수 도 있을텐데, pkg-config 라는 엄청난 - 사실은 매우 단순한 - 프로그램이 있다.

이 프로그램은 몇가지 옵션을 읽어서 그것에 맞는 명령행 인자를 리턴해주는 역할 밖에 하지 않는다. 단지 그 역할 뿐이다! 그런데, 이것이 gcc와 연계되면 정말 편리한 컴파일 환경이 만들어 진다.

예를들면 오우거의 헤더파일들은 /usr/local/include 에 있고 lib 파일들은 /usr/local/lib에 있다. 이것을 만일 gcc로 컴파일 하려면
-I/usr/local/include/OGRE -L/usr/local/lib -lOgreMain
을 처주어야 한다.
사실 이런것을 모두 기억하는 개발자는 없다. 그래서 만들어진것이 pkg-config 인것이다.

pkg-config를 실행시켜보자.
pok@localhost:~$ pkg-config --cflags OGRE --libs OGRE
-I/usr/local/include -I/usr/local/include/OGRE -L/usr/local/lib -lOgreMain

그래서 gcc를 이용할때는
gcc `pkg-config --cflags OGRE --libs OGRE` 어쩌고...
식으로 작성해주면 된다.

pkg-config 가 이용하는 파일은 .pc 파일이다. 어디에 위치하는 pc 파일인고 하니 PKG_CONFIG_PATH에 지정된 파일이고 이것이 없다면 기본값으로 /usr/lib/pkgconfig를 찾는다고 한다. (http://kldp.org/node/71409)
그런데, 링크된 글에서도 적었듯이 /usr/loca/lib/pkgconfig/ 에 있는 pc파일도 잡는다. 여전히 미스테리다.

.pc 파일은 autoconf가 이용하는 configure.in (혹은 configure.ac //KDevelop은 기본적으로 configure.in 파일을 이용한다) 에서 PKG_CHECK_MODULES 매크로에서도 이용된다. 예를들어 ogre 파일을 컴파일하기 위한 KDevelop의 configure.in파일을 보면
AC_INIT(configure.in)

AM_CONFIG_HEADER(config.h)
AM_INIT_AUTOMAKE(ogretest, 0.1)

AC_LANG_CPLUSPLUS
AC_PROG_CXX
AM_PROG_LIBTOOL

PKG_CHECK_MODULES(OGRE, [OGRE >= 0.15.0])
AM_CXXFLAGS="$AM_CXXFLAGS $OGRE_CFLAGS"
AM_LDFLAGS="$AM_LDFLAGS $OGRE_LIBS"
AC_SUBST(AM_CXXFLAGS, "$AM_CXXFLAGS")
AC_SUBST(AM_LDFLAGS, "$AM_LDFLAGS")

AC_OUTPUT(Makefile src/Makefile)
이다.

작은것은 아름답다. .pc 파일을 가지고 부리는 pkg-config 마법에서 다시한번 느끼게 된 진리이다.

리눅스/개발환경 Development, linux