2017-04-22 2 views
0

cygwin에서 cairo 그래픽 라이브러리를위한 간단한 C 예제를 컴파일하려고합니다. cygwin 용으로 컴파일 할 때 모든 것이 예상대로 작동하지만 컴파일 할 때 창을 실행하지만 실행하려고하면 작동하지 않습니다. cygwin/mingw에서 windows 컴파일하기

내 메이크입니다 :

CFLAGS= -lcairo 

#WIN32HEADERS= /usr/i686-w64-mingw32/sys-root/mingw/include/cairo 
WIN32HEADERS= /usr/i686-w64-mingw32/sys-root/mingw/include/cairo -I/usr/i686-w64-mingw32/sys-root/mingw/include/glib-2.0 -I/usr/i686-w64-mingw32/sys-root/minclude/glib-2.0 -I/usr/i686-w64-mingw32/sys-root/mlib/glib-2.0/include -I/usr/i686-w64-mingw32/sys-root/minclude/pixman-1 -I/usr/i686-w64-mingw32/sys-root/minclude/freetype2 -I/usr/i686-w64-mingw32/sys-root/minclude/libpng16 -I/usr/i686-w64-mingw32/sys-root/minclude/freetype2 -I/usr/i686-w64-mingw32/sys-root/minclude/libpng16 

#WIN32LIBS= ./lib32 
WIN32LIBS= ./usr/i686-w64-mingw32/sys-root/mingw/bin 

#WIN64HEADERS= /usr/x86_64-w64-mingw32/sys-root/mingw/include/cairo 
WIN64HEADERS= /usr/x86_64-w64-mingw32/sys-root/mingw/include/cairo -I/usr/x86_64-w64-mingw32/sys-root/mingw/include/glib-2.0 -I/usr/x86_64-w64-mingw32/sys-root/minclude/glib-2.0 -I/usr/x86_64-w64-mingw32/sys-root/mlib/glib-2.0/include -I/usr/x86_64-w64-mingw32/sys-root/minclude/pixman-1 -I/usr/x86_64-w64-mingw32/sys-root/minclude/freetype2 -I/usr/x86_64-w64-mingw32/sys-root/minclude/libpng16 -I/usr/x86_64-w64-mingw32/sys-root/minclude/freetype2 -I/usr/x86_64-w64-mingw32/sys-root/minclude/libpng16 

WIN64LIBS= ./lib64 
#WIN64LIBS= ./usr/x86_64-w64-mingw64/sys-root/mingw/bin 

CYGWINHEADERS= /usr/include/cairo 
CYGWINLIBS= /usr/bin 


all: 
    i686-w64-mingw32-gcc kairo.c -o kairo_32.exe -I $(WIN32HEADERS) -L $(WIN32LIBS) $(CFLAGS) 
    x86_64-w64-mingw32-gcc kairo.c -o kairo_64.exe -I $(WIN64HEADERS) -L $(WIN64LIBS) $(CFLAGS) 
    gcc kairo.c -o kairo.o -I $(CYGWINHEADERS) -L $(CYGWINLIBS) $(CFLAGS) 

#Build for Windows 32 Bit 
win32: 
    i686-w64-mingw32-gcc kairo.c -o kairo_32.exe -I $(WIN32HEADERS) -L $(WIN32LIBS) $(CFLAGS) 

#Build for Windows 64 Bit 
win64: 
    x86_64-w64-mingw32-gcc kairo.c -o kairo_64.exe -I $(WIN64HEADERS) -L $(WIN64LIBS) $(CFLAGS) 

#Build for Cygwin - maybe linux in general? 
cygwin: 
    gcc kairo.c -o kairo.o -I $(CYGWINHEADERS) -L $(CYGWINLIBS) $(CFLAGS) 

#delete everything but the source files 
clean: 
    rm *.exe 
    rm *.o 

I했습니다 주석 처리 된 부분뿐만 아니라, 현재 활성화 된 부분,하지만 행운을 시도했다. 결과 .exe를 실행하려고하면 libcairo-2.dll이 누락되었다는 오류가 발생하지만 링크 되었기 때문에 찾을 수 없어야합니까? 그리고 시스템 폴더가 아닌 폴더에 필요한 dll 파일을 링크 할 수있는 방법이 있습니까? 나는 그 일을 어떻게하는지 알 수 없다.

+0

lib 디렉토리/m libcairo-2.dll 찾을 수 없습니다. 예를 들어 같은 폴더에 놓으십시오. 여기서 exe. '연결 되었기 때문에 그것을 찾을 수 있을까요? '- 물론 아니오 – RbMm

+0

좋아요,이 사실은이 특정 DLL에 대한 오류를 해결했습니다 - 나는 그저 나머지를 반복 할 것입니다. 더 이상 오류가 발생합니다. 하지만 DLL을 프로젝트의 하위 폴더에 넣을 수 있도록 컴파일러를 전달해야하는 이유는 무엇입니까? – Bananicorn

+0

@RbMm 이제 모든 필요한 dll이 exe와 같은 디렉토리에 있습니다 - 당신이 대답 할 수 있도록 내 의견을 게시 할 수 있습니까? – Bananicorn

답변

0

는 가져 오기 lib가 그래서 당신은

를 정의 할 필요가

/usr/i686-w64-mingw32/sys-root/mingw/lib/libcairo.dll.a에 위치 정기적 복용하기 -

WIN32LIBS =는/usr/i686으로-W64-mingw32/SYS-루트 /와 Mingw 모두 매우 간단

관련 문제