[질문]qt에서 make하는데..

crom0406의 이미지

qt 초보입니다.
소스 코드 명이 hello.c라면
progen -o hello.pro hello.c <- 프로젝트 파일이 생기고
tmake -o Makefile hello.pro <- Makefile을 생성
make <- 이 단계에서 에러가 납니다.

cannot find -lqt 라고 ld에서 찾을 수 없다고 나오는데..

ld라는게 라이브러리의 위치를 가지고 있는 것 같기도..
예전에도 ld에 대해서는 물은 적이 있는데..
아직도 잘 이해가 안가네요..

제가 장황하게 설명한게 아닌가 싶습니다.
크게 두 가지 질문입니다.

    *cannot find -lqt라고 뜨는 에러를 어떻게 해결할 수 있는지..
    *ld는게 뭘 말하는건지..그리고 어떻게 써야 하는건지..
[/]
코너리의 이미지

Makefile을 열어서 -lqt 라고 되어 있는 부분을 -lqt-mt 로 바꿔보세염.

아마도 될 듯 싶은데...

-l 옵션은 라이브러리를 링크하라는 옵션인데 레뎃과 한컴의 경우 /usr/lib/qt?/lib 밑에 qt가 설치되어 있을 겁니다.

라이브러리 명이 libqt-mt.so 일경우 -lqt-mt, libqt.so 가 있으면 -lqt 로 하시면 됩니다.

-lqt-mt 가 귀찮으시면 qt 라이브러리 디렉토리에 가셔서

# ln -s libqt-mt.so libqt.so

로 링크를 거셔도 됩니다.

만약 qt가 /lib 나 /usr/lib 하위 디렉토리에 설치되어 있지 않을 경우는 /etc/ld.so.conf 에 해당 디렉토리를 명기하신 후에 # ldconfig 를 한번 실행해주셔야 합니다.

====

제가 보기에 qt 2.x 대를 사용하시는 것 같은데 qt 3.x 부터는

progen 과 tmake를 사용하시지 않아도 쉽게 됩니다.

프로젝트 디렉토리에 가서

# qmake -project
# qmake -makefile

만 해주시면 별다른 작업없이 자동으로 Makefile이 생성되죠.

업글을 해보심이...^^

The difficulty in life is the choice.

ddoman의 이미지

-lqt가 없다는건 환경변수가 잘못설정되었거나 tmake혹은 qt가 잘못된 설치혹은
설정이되었다는 것입니다.

-lqt-mt의 mt는 multi thread를 뜻하는것입니다.
-lqt-mt는 QThread나 QMutex등 Qt의 Thread관련 class를 사용할때 붙여주는
것으로서 -lqt와는 별개로 붙여줘야합니다.
가령 QThread를 사용하는 프로그램은 -lqt -lqt-mt를 붙여줘야겠지요
tmake를 사용한다면 config += thread
를 해주면 Makefile에 자동 기입됩니다.

질문하신님의 경우에는 간단한 Hello예제라고 했으니 -lqt-mt랑은 상관이없겠죠
결국은 설정문제라고 보여집니다.

qt관련 커뮤니티인 www.qtcenter.co.kr이있습니다.
비슷한 질문이 있으니 가서 참고하시길..

코너리의 이미지

그랬군요... 하지만 일부 패키지에서 libqt.so가 없는 경우도 있더군요.

The difficulty in life is the choice.