맥OSX(Mac OSX)에서 리브레오피스(LibreOffice)를 빌드 후, 디버깅을 하려면 gdb대신 lldb를 이용해야 합니다.

맥에서 리브레오피스(LibreOffice) 빌드후, 새로운 아이디어가 생각이 나서 소스 수정 후 디버깅을 해보았습니다.

make debugrun

빌드를 하고 gdb로 디버깅을 하려고 했더니 어 gdb명령어가 안먹네??

확인결과, MacOSX에서는 llvm으로 빌드하기 때문에 gdb대신 lldb를 사용해야합니다.

https://wiki.documentfoundation.org/Development/How_to_debug#Debugging_with_lldb

 

How to debug - The Document Foundation Wiki

The Document Foundation Wiki Debugging options You need to enable debugging support to do any practical interactive debugging. You can enable it for the entire build with: ./autogen.sh --enable-debug or ./autogen.sh --enable-dbgutil If you have done a non-

wiki.documentfoundation.org

 

저는 대학교때 배운 gdb명령어로 디버깅을 하려고 했더니, lldb가 손에 익지 않아 시행착오를 많이 겪게 되네요

아래는 llvm을 밀고 있는 Apple사에서 제공하는 gdb와 lldb의 비교 링크입니다.

https://developer.apple.com/library/archive/documentation/IDEs/Conceptual/gdb_to_lldb_transition_guide/document/lldb-command-examples.html#//apple_ref/doc/uid/TP40012917-CH3-SW1

 

GDB and LLDB Command Examples

GDB and LLDB Command Examples The tables in this chapter list commonly used GDB commands and present equivalent LLDB commands and alternative forms. Also listed are the built-in GDB compatibility aliases in LLDB. Notice that full LLDB command names can be

developer.apple.com

아래는 참고할만한 lldb디버깅 기술 소개 링크입니다. 

https://www.letmecompile.com/xcode-lldb-%EB%94%94%EB%B2%84%EA%B9%85-%ED%85%8C%ED%81%AC%EB%8B%89/

 

Xcode LLDB 디버깅 테크닉

Xcode에 기본으로 내장되어있는 디버거(debugger)인 LLDB는 기존에 가장 많이 사용되던 gdb보다 많은 유용한 기능들을 갖고있다. LLDB 명령어 분석기에는 파이썬(Python) 인터프리터가 내장되어있어서 scr

www.letmecompile.com

아래는 lldb로 디버깅(Debugging)중인 화면입니다. 

 

ps. Apple사에서 제공하는 LLDB와 Xcode에 대한 글 

https://developer.apple.com/library/archive/documentation/IDEs/Conceptual/gdb_to_lldb_transition_guide/document/Introduction.html#//apple_ref/doc/uid/TP40012917-CH1-SW1

 

About LLDB and Xcode

About LLDB and Xcode With the release of Xcode 5, the LLDB debugger becomes the foundation for the debugging experience on OS X. LLDB is Apple’s “from the ground up” replacement for GDB, developed in close coordination with the LLVM compilers to brin

developer.apple.com

 

Buy me a coffeeBuy me a coffee
  1. tky7068 2020.08.13 15:44

    참고가 되었습니다. 감사합니다. ^^

2020년 5월 30일 토요일, 리브레오피스(LibreOffice)의 저장소(Repository)를 다운로드 받아 빌드 설정을 하려니 Java 버전 오류가 아래와 같이 발생하였습니다.

./autogen.sh --with-locales="ko" --with-vendor="me" --disable-werror --with-build-version="Built by me" --with-lang="ko" --enable-dbgutil


위의 이미지 설명: 맥운영체제(MacOSX)빌드시 Java버전 최소9이상이어야 하여 빌드 설정 실패

그래서, MacOSX에 openJDK9이상을 설치하도록 진행을 해보았습니다. 이제는 Oracle이 Java JDK를 유료화해버려서, 혹시나 모를 라이선스 문제로 openJDK로 Java버전을 업그레이드 하려고 합니다.

Oracle이 Java를 유료화하면서, 자유오픈소스 프로젝트인 리브레오피스(LibreOffice)에 Java를 사용하기 위해 자유오픈소스로 된 Java구현인 openJDK를 Mac에서 설치해보겠습니다.

openJDK 홈페이지

맥운영체제(MacOSX)에서 openJDK를 쉽게 설치하려면 brew를 이용하여 설치하는 것이 쉽습니다.

AdoptOpenJDK는 JDK를 쉽게 설치할수 있게 사전에 미리 빌드한(prebuild) java binaries를 제공하는 커뮤니티 그룹입니다.

AdoptOpenJDK

이 그룹에서는 MacOSX, Linux, Windows용 JDK바이너리를 제공하고 있습니다.

여기서 제공하는 것을 직접 빌드하기엔 제가 시간이 없으므로 (주말에만 활동하는 자유오픈소스 개발자), brew에서 올라온 AdoptOpenJDK빌드를 사용하여 JDK를 설치했습니다.

아래는 AdoptOpenJDK의 homebrew패키지용 Github 링크입니다.
AdoptOpenJDK/homebrew-openjdk

위의 Github내용에 따라 brew로 'OpenJDK14 with OpenJ9 JVM'을 설치하였습니다.
brew tap AdoptOpenJDK/openjdk
brew cask install adoptopenjdk14-openj9

이후에 openJDK14가 설치가 제대로 되었는지 확인해봅니다

% java --version
openjdk 14.0.1 2020-04-14
OpenJDK Runtime Environment AdoptOpenJDK (build 14.0.1+7)
Eclipse OpenJ9 VM AdoptOpenJDK (build openj9-0.20.0, JRE 14 Mac OS X amd64-64-Bit Compressed References 20200427_53 (JIT enabled, AOT enabled)
OpenJ9   - 05fa2d361
OMR      - d4365f371
JCL      - 5757187cae based on jdk-14.0.1+7)

openJDK14설치후, 다시 빌드 설정을 하니 성공하였습니다.

Buy me a coffeeBuy me a coffee

오랜만에, Mac 업그레이드 후에 처음으로 MacOSX 10.15 Catalina 에서 LibreOffice(리브레오피스) 빌드를 진행하였습니다.

LibreOffice(리브레오피스) 빌드는 문서 재단의 위키 링크 Building LibreOffice on macOS를 보며 따라하였습니다.

빌드를 진행하다 보니, 아래의 오류로 빌드 진행이 안되는 것을 확인하였습니다.

In file included from /Applications/Xcode.app/Contents/Developer/Library/Frameworks/Python3.framework/Versions/3.7/Headers/Python.h:139:
/Applications/Xcode.app/Contents/Developer/Library/Frameworks/Python3.framework/Versions/3.7/Headers/pythonrun.h:142:5: error: 'TAPI' is not defined, evaluates to 0 [-Werror,-Wundef]
#if TAPI
    ^
[AIN] ooo_images
1 error generated.
/Users/****/dev/lode/dev/core/solenv/gbuild/LinkTarget.mk:239: recipe for target '/Users/****/dev/lode/dev/core/workdir/CObject/pyuno/source/module/pyuno_dlopenwrapper.o' failed
make[1]: *** [/Users/****/dev/lode/dev/core/workdir/CObject/pyuno/source/module/pyuno_dlopenwrapper.o] Error 1
make[1]: *** Waiting for unfinished jobs....
Makefile:282: recipe for target 'build' failed
make: *** [build] Error 2

해당 내용에서는 C언어 매크로 TAPI가 정의 안되어서 빌드 에러가 난다는 이야기가 나왔습니다.

해당 내용에 대하여 IRC의 #libreoffice-dev채널에 문의를 하였습니다.

9:28 PM I have a question about build on MacOSX (Catalina 10.15.2)
9:28 PM I get a LibreOffice source from git repository. and try to build, then failed.
9:29 PM message is In file included from ***/dev/core/pyuno/source/module/pyuno_dlopenwrapper.c:22:
9:29 PM In file included from /Applications/Xcode.app/Contents/Developer/Library/Frameworks/Python3.framework/Versions/3.7/Headers/Python.h:139:
9:29 PM /Applications/Xcode.app/Contents/Developer/Library/Frameworks/Python3.framework/Versions/3.7/Headers/pythonrun.h:142:5: error: 'TAPI' is not defined, evaluates to 0 [-Werror,-Wundef]
9:30 PM What is "#if TAPI" ? 
9:41 PM <mikekaganski> dhsung_: a coincidence: https://ask.libreoffice.org/en/question/223751
9:44 PM <ycao> https://ask.libreoffice.org/en/question/223751/error-tapi-is-not-defined-evaluates-to-0-werror-wundef-while-building-on-macos/
9:44 PM Any tips?
9:44 PM <_rene_>  yes, the obvious one
9:44 PM (don't build with -Werror)
9:45 PM and this undefined macro is inside python itself which is clear from the error message... (just that LO bundles python if you let it..)
9:45 PM <mikekaganski>  _rene_: the problem is that this looks like our default in LODE
9:46 PM <ycao>  How can I build without `-Werror`
9:46 PM Using `lode`
9:46 PM <_rene_> mikekaganski: yes, it's a problem. anywhere :)
9:46 PM $ ./configure --help | grep -i werror --enable-werror         Turn warnings to errors. (Has no effect in modules
9:47 PM so --disable-werror, of course ;)
9:48 PM <ycao>  So run `./configure --disable-werror` is ok?
9:48 PM <mikekaganski> ycao: essentially, add --disable-werror which _rene_ mentioned to autogen.input in your core directory

문의 결과

./configure --help | grep -i werror --enable-werror         Turn warnings to errors. 

빌드 '에러 error'를 에러 대신 '경고 warning'로 바꾸어서 빌드하라고 하더군요.

이유는 TAPI라는 정의되지 않은 매크로는 파이썬 자체에 있고, 이 매크로를 무시해도 빌드 후에 실행은 되니 '에러 error'로 빌드 안되는 것에 대하여 '에러 error'레벨을 '경고 warning'으로 바꾸어서 빌드 하면 된다고 하군요.

그래서, 저는 아래의 명령어로 빌드 진행을 하였습니다.

이후, 빌드 후 확인

****@**** core % ./autogen.sh --with-locales="ko"  --with-vendor="DaeHyun Sung, TDF Member"  --disable-werror           
********************************************************************
*
*   Using commandline arguments and ignoring autogen.input!
*
********************************************************************
Running ./configure with '--with-locales=ko --with-vendor=DaeHyun Sung, TDF Member --disable-werror --srcdir=/Users/sungdaehyun/dev/lode/dev/core --enable-option-checking=fatal'
********************************************************************
*
*   Running LibreOffice build configuration.
*
********************************************************************
To build, run:
/Users/****/lode/opt/bin/make

To view some help, run:
/Users/****/lode/opt/bin/make help

After the build of LibreOffice has finished successfully, you can immediately run LibreOffice using the command:
open instdir/LibreOfficeDev.app

If you want to run the smoketest, run:
/Users/****/lode/opt/bin/make check

****@**** core % make build-nocheck
make -j 4  -rs -f /Users/****/lode/dev/core/Makefile.gbuild  build  
[PAT] boost
[DEP] LNK:Library/libuno_salhelpergcc3.dylib.3
[LNK] Library/libuno_salhelpergcc3.dylib.3
[UPK] libgpg-error-1.27.tar.bz2
[PAT] icu
[PAT] nss
[PAT] liblangtag
[DEP] LNK:Executable/bestreversemap
[LNK] Executable/bestreversemap
[PAT] libjpeg-turbo
[PAT] lcms2

(생략)


[BIN] extras
[MOD] extras
[MOD] libreoffice
[BIN] top level modules: libreoffice
[ALL] top level modules: build-non-l10n-only build-l10n-only

빌드 완료 후 실행

****@**** core % open instdir/LibreOfficeDev.app

실행 후 화면

Buy me a coffeeBuy me a coffee

MacOSX mojave(10.14)에서 어플리케이션 빌드를 하기 위해 설정을 해야했음.

checking what macOS SDK to use... configure: error: Could not find an appropriate macOS SDK

Mac위의 메세지가 뜨면서 빌드 설정이 실패시 아래의 명령어를 입력하여 macOS SDK를 설치하면 된다.

이번에 나온 MacOSX mojave(10.14) 부터 헤더파일(headers)이 `/usr/include/`에 기본적으로 설치되지 않습니다.

그래서 헤더파일(header)파일을 설치하려면 아래의 명령어를 입력하여

$ open /Library/Developer/CommandLineTools/Packages/macOS\_SDK\_headers\_for\_macOS\_10.14.pkg

를 실행합니다.

실행이 완료되면 아래의 설치화면이 뜹니다.

설치가 완료되면 어플리케이션 빌드가 가능합니다.

Buy me a coffeeBuy me a coffee


Mac OSX에서 brew를 설치해서 사용하다 

2011/02/23 - [분류 전체보기] - Mac에서 homebrew를 사용해보기.

하드디스크 정리 겸 homebrew를 삭제하게 되었습니다.

cd `brew --prefix`
rm -rf Cellar
brew prune
rm -rf Library .git .gitignore bin/brew README.md share/man/man1/brew
rm -rf ~/Library/Caches/Homebrew


위와 같이 하면 Homebrew 제거 완료.

Buy me a coffeeBuy me a coffee

+ Recent posts