이번 2020년 NIPA에서 진행하는 컨트리뷰톤LibreOffice 한국어 사용성 향상 및 공헌자 양성 프로젝트 멘토링을 위해서, Windows 빌드를 어떻게 할까 고민을 하였습니다.

고민 끝에, 이전에 새로 분양을 받은 HP 랩탑을 Windows를 쓰는 걸로 결론을 내렸습니다.

그래서, 새로 받은 HP 랩탑에 Windows 10설정을 하였고 이제 리브레오피스(LibreOffice)를 빌드하도록 진행을 하였습니다.

저는 여태껏 리눅스(Linux)와 맥OSX(Mac OSX)에서만 리브레오피스(LibreOffice)빌드를 하였습니다.
주로 리눅스와 맥을 사용하는 사람이라 보니, 윈도우(Windows)에서 리브레오피스 빌드는 아주 생소하게 느껴집니다.

(저, 참고로 첫직장에서 사회생활할때 SI용역으로 MFC 어플리케이션 개발하고, Windows API로 삽질하고, C#, ASP.NET으로 밥벌이한 사람입니다. 그때 Python으로도 개발을 해보고 Java로도 개발을 해보고... 오픈소스 활동한다고 해도 닥치는대로 개발해보는 잡부인생은 사회생활 첫시작부터 ㅎㅎ )

각설하고, 문서재단(The Document Foundation)의 Building LibreOffice on Windows with Cygwin and MSVC: Tips and Tricks 를 보고 리브레오피스(LibreOffice)빌드를 따라해보았습니다.

문서 읽고, 우선 제일 먼저 해야할일

  • MS사의 Visual Studio 2019 설치 (이 글을 쓰는 당시에 최신이 Visual Studio 2019)
  • 빌드를 위한 Windows 10 SDK 설치하기
  • Visual Studio와 Windows 10 SDK 설치후, Visual Studio 언어설정을 무조건 영어(English)로 설정하기
  • 자바(Java)를 빌드할 openJDK버전 설치 AdoptOpenJDK 설치함
  • Cygwin 설치 및 빌드 툴 설치

위의 4가지만 하면 그래도 큰 난관은 돌파합니다.

Linux환경을 모른다면 Cygwin에서 빌드하는건 정말 엄청 어려울듯한?

실제로 윈도우(Windows)환경에서 리브레오피스(LibreOffice)를 빌드해보니, 엄청난 시행착오를 겪어보며, 구글링(Googling)과 IRC문의로 문제를 해결하였습니다.

Cygwin에서 빌드 스크립트 (Visual Studio 2019의 컴파일로로 빌드하도록 설정하였습니다.

 /cygdrive/c/sources/libo-core/autogen.sh \
               --with-external-tar=/cygdrive/c/sources/lo-externalsrc \
               --with-junit=/cygdrive/c/sources/junit-4.10.jar \
               --with-ant-home=/cygdrive/c/sources/apache-ant-1.9.5 \
               --enable-pch --disable-ccache \
               --with-locales=ko -
               -with-vendor=me \
               --with-lang=ko \
               --enable-dbgutil \
                --disable-skia \
               --with-jdk-home="/cygdrive/c/Program Files/AdoptOpenJDK/jdk-14.0.1.7-openj9/" \
               --enable-64-bit \
               --with-visual-studio=2019 \
               --disable-odk

빌드 중 에러, Skia는 Clang(llvm)이 필요하나 현재 cygwin에서 설치를 했으나 인식을 못하는듯
그래서 빌드시 skia 미지원으로 빌드하도록 변경

checking whether to build Skia... yes checking for clang-cl... no configure: error: Clang compiler not found. The Skia library needs to be built using Clang. Error running configure at /cygdrive/c/sources/libo-core/autogen.sh line 299.

안티바이러스 끄기를 해야 빌드 설정이 진행되더군요.

cat: 'C:/sources/libo-core/eicar': Permission denied configure: error: Exclude the build and source directories associated with LibreOffice in the following Antivirus software: *Windows Defender Error running configure at /cygdrive/c/sources/libo-core/autogen.sh line 299.
Windows10에서 안티바이러스 끄기는 업데이트 및 보안선택 -> Windows 보안선택 -> 바이러스 및 위협방지 클릭

실시간 감지를 끕니다. 그래야 빌드를 시도할 수 있습니다.

빌드 설정이 끝나면 아래와 같은 메세지를 확인할 수 있습니다.

To build, run:
C:/cygwin64/opt/lo/bin/make

To view some help, run:
C:/cygwin64/opt/lo/bin/make help

이제, 아래의 명령어로 빌드를 진행해봅니다

$ /opt/lo/bin/make clean gb_COLOR=1

이후, 빌드를 하려니 또 오류가 나오더군요.

아래 오류를 보니, 왜 빌드가 안되지 하며 이해가 안되어 머리가 아팠습니다.
msvcprtd.lib(MSVCP100D.dll) : fatal error LNK1112: module machine type 'X86' conflicts with target machine type 'x64'

구글링을 한 결과 아래의 글을 확인하였습니다.

MSVC 2015's broken static initializer_list causing build failure

http://document-foundation-mail-archive.969070.n3.nabble.com/MSVC-2015-s-broken-static-initializer-list-causing-build-failure-td4202928.html

 

Dev - MSVC 2015's broken static initializer_list causing build failure

On Sun, 2017-02-19 at 20:53 +0000, Luke Benes wrote: > config_host.mk: > export UCRTSDKDIR=C:/PROGRA~2/WI3CF2~1/10/ > export UCRTVERSION=10.0.10240.0 > > Looking at the creation date of that folder, it matches the creation >  date of C:\Program Files (x86

document-foundation-mail-archive.969070.n3.nabble.com

확인 결과, Windows10 OS에 Visual Studio 2019 설치 및 cygwin으로 빌드 설정만 하였지, 정작 빌드를 위한 Windows 10 SDK 가 설치가 되지 않아 생기던 버그더군요.

아래 링크로 Windows 10 SDK를 설치합니다

https://developer.microsoft.com/ko-kr/windows/downloads/windows-10-sdk/

 

Windows 10 SDK - Windows 앱 개발

Windows 10 SDK Windows 10, 버전 2004용 Windows 10 SDK(10.0.19041.0)는 Windows 10 앱을 빌드하는 데 필요한 최신 헤더, 라이브러리, 메타데이터 및 도구를 제공합니다. 이 SDK를 사용하여 Windows 10, 버전 2004 및 이�

developer.microsoft.com

설치가 완료되면 이제 제대로 빌드가 진행됩니다.

리브레오피스(LibreOffice)빌드하는데 꽤 시간 걸리니, 자기전에 돌리는 것이 속이 편합니다.

만약에, Visual Studio와 Windows 10 SDK 설치후, Visual Studio 언어설정을 무조건 영어(English)로 설정하기를 하지 않으면 nss 라이브러리 컴파일하다 오류가 납니다.

만약, cl.exe를 실행하여 한글이 나온다고 하면

C:\Users\****>"C:/Program Files (x86)/Microsoft Visual Studio/2019/Community/VC/Tools/MSVC/14.26.28801/bin/Hostx64/x64/cl.exe"
Microsoft (R) C/C++ 최적화 컴파일러 버전 19.26.28806(x64)
Copyright (c) Microsoft Corporation. All rights reserved.

사용법: cl [ option... ] filename... [ /link linkoption... ]

다음과 같이, Visual Studio의 언어설정을 영어(English)로 바꿔서, cl.exe가 영어로 나오도록 변경 한후에 LibreOffice빌드를 해야합니다. 

C:\Users\****>"C:/Program Files (x86)/Microsoft Visual Studio/2019/Community/VC/Tools/MSVC/14.26.28801/bin/Hostx64/x64/cl.exe"
Microsoft (R) C/C++ Optimizing Compiler Version 19.26.28806 for x64
Copyright (C) Microsoft Corporation.  All rights reserved.

usage: cl [ option... ] filename... [ /link linkoption... ]

 

참고로, Visual Studio의 언어설정을 영어(English)로 바꾸려면, Visual Studio Installer를 실행 후 "영어"언어팩을 설치해야합니다.

아래는 러시아어(Russian Language)에서 Visual Studio 언어팩 설정 화면입니다.

https://imgur.com/PnNB7Li

 

Imgur

 

imgur.com

 

위의 빌드 오류 이슈에 대해서 LibreOffice의 #libreoffice-dev채널에서 아래의 링크를 이용하여 문의를 하였습니다.

Friday, June 12th, 2020
Hello 12:30 AM I have a question for windows build. 12:31 AM Now, I build LibreOffice on Windows. After setting building environment (Cygwin). During building, It shows error message 12:31 AM [coreconf/rules.mk:44: lib] Error 2 12:31 AM out\nssutil3.lib □□□̺귯□□ □□ out\nssutil3.exp 12:32 AM [C:/sources/libo-core/external/nss/ExternalProject_nss.mk:21: C:/build/workdir/ExternalProject/nss/build] Error 1
mst___: please use pastebin

dhsung: https://pastebin.com/7s2GXkxL
https://pastebin.com/7s2GXkxL

 

[Bash] LibreOffice build error on Windows & Cygwin - Pastebin.com

Not a member of Pastebin yet? Sign Up, it unlocks many cool features! /cygdrive/c/build $   /cygdrive/c/sources/libo-core/autogen.sh --with-external-tar=/cygdrive/c/sources/lo-externalsrc  --with-junit=/cygdrive/c/sources/junit-4.10.jar  --with-ant-home

pastebin.com

mst___: it looks like when building nss, /FS parameter is missing in the command line for pkix_pl_pk11certstore.c
dhsung: Hmm, How to add the /FS parameter at autogen.sh?
mst___: can you pastebin the command line that invokes cl.exe on pkix_pl_pk11certstore.c ?
https://pastebin.com/nSx0sKkw

 

[Bash] LibreOffice compile error msg about nss build - Pastebin.com

 

pastebin.com

mst___: ah... probably the cause is the syntax error in /usr/bin/sh: -c: line 0: `expr Microsoft(R) \> 1600 \| Microsoft(R) = 1600 \& C/C++ \>= 40219'

dhsung: hmm, I checked the env, It shows LANG=ko_KR.UTF-8@cjknarrow

mikekaganski: out of interest: what does 'C:/Program Files (x86)/Microsoft Visual Studio/2019/Community/VC/Tools/MSVC/14.26.28801/bin/Hostx64/x64/cl.exe' output for you in the console? 1:21 AM you might want to file a bug against NSS with that information ;-) 1:21 AM — mikekaganski used his path to cl.exe, naturally dhsung_ might need to adjust

cl.exe (Korean)

https://pastebin.com/XNRVYfiy

 

cl.exe (Korean version) - Pastebin.com

Not a member of Pastebin yet? Sign Up, it unlocks many cool features! C:\Users\dhsung>"C:/Program Files (x86)/Microsoft Visual Studio/2019/Community/VC/Tools/MSVC/14.26.28801/bin/Hostx64/x64/cl.exe" Microsoft (R) C/C++ 최적화 컴파일러 버전 19.26.2

pastebin.com

— mikekaganski has "Microsoft (R) C/C++ Optimizing Compiler Version 19.26.28806 for x64" in the first line
mikekaganski: anyway, I'd suggest you to re-run VS installer, and only select en-US UI 1:42 AM no need to reinstall 1:42 AM just run its installer and modify install set 1:44 AM dhsung_: https://imgur.com/PnNB7Li
https://imgur.com/PnNB7Li

 

Imgur

 

imgur.com

참고: nss library

https://developer.mozilla.org/en-US/docs/Mozilla/Projects/NSS/Building

 

Building NSS

This page has detailed information on how to build NSS. Because NSS is a cross-platform library that builds on many different platforms and has many options, it may be complex to build. Please read these instructions carefully before attempting to build.

developer.mozilla.org

리브레오피스에서 윈도우(Windows)환경의 Visual Studio 2019에서 빌드 하기 

https://wiki.documentfoundation.org/Development/BuildingOnWindows#Visual_Studio_2019

 

Building LibreOffice on Windows with Cygwin and MSVC: Tips and Tricks - The Document Foundation Wiki

Build dependencies Before you can start hacking LibreOffice on Windows, you need to follow these instructions to set up a build environment. Do also read our generic building hints. Install Visual Studio You need the Microsoft compiler/development suite Vi

wiki.documentfoundation.org

아래 영어에 적힌 내용처럼, cygwin 쉘에서는 인코딩 집합과 맞지 않아 빌드 오류인 경우가 많으니, 리브레오피스를 윈도우환경의 cygwin에서 빌드시, Visual Studio설정을 영어로 된 UI로 설정을 해야 한다고 나와 있습니다.
Note: Visual Studio command-line tools use system OEM codepage to output messages to console, when corresponding UI language is installed as part of Visual Studio installation. The OEM codepage on Windows depends on system locale defined using "Language for non-Unicode programs" in intl.cpl applet (description of the setting), and is often incompatible with encoding set in cygwin shell (typically UTF-8). This garbles the output from the tools in the build log. You might want to make sure that you only install English UI when installing Visual Studio to avoid that problem.

빌드가 완료되면 아래와 같은 메세지가 뜹니다.

[RDB] services
[BIN] sc
[MOD] sc
[BIN] postprocess
[GAL] backgrounds
[GAL] sounds
[MOD] postprocess
[ULF] C:/build/workdir/Gallery/sounds/sounds.ulf
[STR] sounds/sounds
[PKG] Gallery/sounds
[ULF] C:/build/workdir/Gallery/backgrounds/backgrounds.ulf
[STR] backgrounds/backgrounds
[PKG] Gallery/backgrounds
[BIN] extras
[MOD] extras
[MOD] libreoffice
[BIN] top level modules: libreoffice
[ALL] top level modules: build-non-l10n-only build-l10n-only

리브레오피스(LibreOffice) 윈도우 빌드가 완료되었으니 실행을 해봐야겠지요?

아래의 명령어로 실행을 해봅니다!

$ ./instdir/program/soffice.exe

리브레오피스(LibreOffice) 실행을 하면 아래와 같은 시작 스플레쉬(Splash) 화면이 나오면서 프로그램이 로딩됩니다.

리브레오피스(LibreOffice) 로딩이 되며 시작 스플레시가 꺼지면 다음과 같이 시작화면이 나옵니다.

리브레오피스(LibreOffice)의 정보를 확인하면 아래와 같이 나타납니다.

그리고, 한글(HWP)와 MS워드 격인 리브레오피스(LibreOffice)의 라이터(Writer)를 실행해보았습니다.

글이 제대로 써지는지 확인하였습니다.

엄청난 시행착오를 겪은 후에, 결국은 빌드 및 실행을 해보았습니다.

이제부터, 소프트웨어 번역(飜譯, Translation)와 Wiki 번역 (飜譯, Translation)을 해봐야겠습니다.

Buy me a coffeeBuy me a coffee

+ Recent posts