프로그램이 설치된 디렉토리 컴파일시에 설정하는 법
글쓴이: jongsuknim / 작성시간: 목, 2005/08/18 - 6:36오후
제가 작성하고 있는 프로그램내에 img 라는 디렉토리가 있습니다.
제가 작성한 프로그램을 실행시키면 그 img 디렉토리(프로그램이 설치된 디렉토리)의 파일들을 실행시킨 디렉토리(현재 디렉토리)내로 카피시켜야 합니다.
그러기 위해 프로그램이 설치된 디렉토리를 알아야 하는데 이것을
컴파일시에 설정하는 법을 알고 싶습니다.
아마도 configure를 써야 할것 같은데, 어떤 식으로 해야 할지 모르겠습니다.
아니면 이것 보다 더 좋은 방법이 있을까요?
환경변수로 설치된 디렉토리를 지정하는 방법도 있겠네요.. 환경변수로 지정하려면 make install 로 하면 되는 건가요?
이때 Makefile 을 어떻게 작성해야 하나요?(install 부분..)
Forums:
프로그램을 실행시킬때 디렉토리를 알고자 하면 런타임시에 알아야 겠네요..
프로그램을 실행시킬때 디렉토리를 알고자 하면 런타임시에 알아야 겠네요....
그럼 makefile에 넣을것이 아니라 소스파일에서 현재 디렉토리를 읽어와서
처리해야 합니다. 소스파일에서 getcwd() 와 같은 함수를 이용해서
처리하면 됩니다. 자세한 내용이 필요하시면 질문을 좀더 정확하게 해주시면 정확한 해답을 드리도록 하겠습니다.
자세히 설명 드리겠습니다.
프로그램이 설치된 디렉토리가 /usr/share/asd 이고
여기에 path가 걸려있어서 어디서든지 프로그램을 실행 할수 있습니다.
예를들어 /home 에서 프로그램을 실행하면
/home/img 라는 디렉토리를 만들어서 /usr/share/asd/img의
내용을 모두 복사하는 것입니다.
/home라는 것은 프로그램 실행 시에 알수 있지만
/usr/share/asd는 사용자가 어디에든지 프로그램을 설치 할 수 있기 때문에 프로그램 제작시에는 결정할수 없습니다.
때문에 make 속에 gcc의 -D 옵션으로 설정하면 될듯 하여 질문을 한 것이었습니다. 이것은 configure로 결정하고요...
이런 문제를 보통 어떤 식으로 해결하는지 알고 싶습니다.
보통은 $...HOME 이라는 env 를 쓰지 않을까요?예를들자면,
보통은 $...HOME 이라는 env 를 쓰지 않을까요?
예를들자면, $JAVA_HOME
그리고 현재 위치는 위에분이 말씀하신 getcwd() 정도면 되지 않을까요?
삽질의 대마왕...
답변이 좀 늦었네요!제가 질문의 내용을 잘못 이해하고 답변을 해드
답변이 좀 늦었네요!
제가 질문의 내용을 잘못 이해하고 답변을 해드린 모양이네요!
님께서 하시고자 하는 작업을 하고자 하신다면 바로 위의분 답변처럼
환경변수에 해당 프로그램이 설치되는 디렉토리를 저장하도록 한
후 소스파일에서 getenv() 함수를 이용해서 하시는게 가장
무난할 것으로 보입니다.
예를 들어, 님께서 /bin 밑에 해당 프로그램을 설치하셨다면
.bashrc 와 같은 파일에
export ASD_HOME_PATH=/bin
과 같이 정의가 되었다고 하면 님의 소스파일에서는
다음과 같이 하면 됩니다.
대충 이렇게 하시면 됩니다.
그리고 gcc 옵션에 -D를 주신다는건 헤더파일에서 #define
하는 것과 동일한 겁니다. 따라서 프로그램이 어디에 설치될지도
모르는 상황에서 프로그램이 설치되는 디렉토리를 미리 정의하는건
좀 모순이 있는듯 하네요!
답변이 되었는지 모르겠네요!
댓글 달기