GTK의 D언어 바인딩 라이브러리인 GtkD에는 아주 짜증나는 문제가 하나 있습니다.
바로 DUB과 링커 문제인데요...
패키지: http://code.dlang.org/packages/gtk-d
*최신버전 GTK-D 런타임 다운로드&설치는 필수입니다: https://gtkd.org/download.html
DUB의 패키지정보 파일인 dub.json/dub.sdl에 해당 패키지 명을 명시하고 빌드 시 아래같은 링커 충돌이 발생합니다.
dub build
Performing "debug" build using C:\D\dmd2\windows\bin\dmd.exe for x86.
gtk-d:gtkd 3.8.4: target for configuration "library" is up to date.
gtk-d:gstreamer 3.8.4: target for configuration "library" is up to date.
gtk-d:peas 3.8.4: target for configuration "library" is up to date.
gtk-d:sv 3.8.4: target for configuration "library" is up to date.
gtk-d:vte 3.8.4: target for configuration "library" is up to date.
gtkd-test ~master: building configuration "application"...
Linking...
OPTLINK (R) for Win32 Release 8.00.17
Copyright (C) Digital Mars 1989-2013 All rights reserved.
http://www.digitalmars.com/ctg/optlink.html
..\..\AppData\Local\dub\packages\gtk-d-3.8.4\gtk-d\.dub\build\library-debug-windows-x86-dmd_2083-76D10F58A514CFD1D5FA1241585663D7\gtkd-3.lib
Warning 178: .LIB pagesize exceeds 512
Error: linker exited with status 1
C:\D\dmd2\windows\bin\dmd.exe failed with exit code 1.
Warning 178: .LIB pagesize exceeds 512... 이것만 봐도 깝깝합니다...
그와 함께 에러 메세지도 같이 보시죠.

대체 뭐라는 거니.. 해당 문제는 gtk-d github issue에 등재 되었습니다.
원인은 'dub'이 build시 디버그 정보를 포함시킬 때 발생하는 문제로 추정하고 있습니다.
어쨌거나 opt 링커문제로 15년에 이슈등록까지 되어있네요#(https://issues.dlang.org/show_bug.cgi?id=15418)
이 디버그 정보를 빼서 빌드하되 x86 타깃으로 빌드해야하는데 되는데, --arch=x86_64 --build=plain을 명시해주는 것입니다.
dub build --arch=x86_64 --build=plain
Performing "plain" build using C:\D\dmd2\windows\bin\dmd.exe for x86.
gtk-d:gtkd 3.8.4: target for configuration "library" is up to date.
gtk-d:gstreamer 3.8.4: target for configuration "library" is up to date.
gtk-d:peas 3.8.4: target for configuration "library" is up to date.
gtk-d:sv 3.8.4: target for configuration "library" is up to date.
gtk-d:vte 3.8.4: target for configuration "library" is up to date.
gtkd-test ~master: target for configuration "application" is up to date.
To force a rebuild of up-to-date targets, run again with --force.
깔끔하게 빌드됩니다... 18.11.26기준으로 아직까지 저 링커 이슈는 별 다른 의견이 없습니다.
D언어.. 아직 멀었네요..


덧글