Development

QT ๋ฐ ์œˆ๋„์šฐ ๊ฐœ๋ฐœ(MSYS2) ํ™˜๊ฒฝ ์„ค์ •

JayKim๐Ÿ™‚ 2024. 3. 6. 09:31

QT ์„ค์น˜

  • ๋‹ค์šด๋กœ๋“œ : https://www.qt.io/download-open-source
    ์ด๊ณณ์—์„œ ํ™”๋ฉด ์•„๋ž˜ "Download the Qt Online Installer" ๋ฅผ ํด๋ฆญ ํ›„ OS ํ™˜๊ฒฝ์— ๋งž๋Š” ์˜จ๋ผ์ธ ์„ค์น˜ ํŒŒ์ผ์„ ๋‹ค์šด ๋ฐ›์•„ ์„ค์น˜ ํ•˜๋ฉด ๋œ๋‹ค.

QT ์„ค์น˜์‹œ ์˜ค๋ฅ˜๊ฐ€ ๋‚˜๋ฉด ๋ฏธ๋Ÿฌ๋ง ์ด์šฉ ์„ค์น˜

์ผ๋ฐ˜์ ์œผ๋กœ QT ์„ค์น˜ ํŒŒ์ผ์„ ์‹คํ–‰ํ•˜์—ฌ ๊ฐ€์ž… ํ›„ ์„ค์น˜๋ฅผ ํ•  ๋•Œ ๋„คํŠธ์›Œํฌ ์˜ค๋ฅ˜๊ฐ€ ๋‚˜ํƒ€๋‚˜๋Š” ๊ฒฝ์šฐ์—๋Š”
์•„๋ž˜ ์ฒ˜๋Ÿผ --mirror ์˜ต์…˜์„ ์ฃผ์–ด์„œ ๋‹ค์šด๋กœ๋“œ ์‚ฌ์ดํŠธ๋ฅผ ๋ณ€๊ฒฝ ํ•˜๋ฉด ๋œ๋‹ค.

QT ์˜จ๋ผ์ธ ์„ค์น˜ ์—๋Ÿฌ ํ™”๋ฉด

์œ„์™€ ๊ฐ™์€ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒ ํ•˜๋ฉด ์•„๋ž˜ ์ฒ˜๋Ÿผ --mirror ์˜ต์…˜์„ ํ†ตํ•ด ์„ค์น˜ ํ•˜๋ฉด ๋œ๋‹ค.

./qt-unified-linux-x64-4.5.1-online.exe --mirror https://qt.mirror.constant.com

QT ์ธ์Šคํ†จ ์ฐธ๊ณ  ๋งํฌ https://wiki.qt.io/Online_Installer_4.x

msys2 ์„ค์น˜ ํ›„ ๊ฐœ๋ฐœ ํ™˜๊ฒฝ ๊ตฌ์ถ•

์œˆ๋„์šฐ์—์„œ ๋ฆฌ๋ˆ…์Šค๋‚˜ ์œ ๋‹‰์Šค ํ™˜๊ฒฝ์ฒ˜๋Ÿผ shell ์„ ์‚ฌ์šฉํ•˜๊ณ  gcc ๋‚˜ make ๋ฅผ ์ด์šฉํ•ด ๊ฐœ๋ฐœ ํ•˜๊ธฐ ์œ„ํ•ด์„œ ํ•„์š”ํ•œ ํ”„๋กœ๊ทธ๋žจ์ด๋‹ค.
ํ•ด๋‹น ํ”„๋กœ๊ทธ๋žจ์„ ์„ค์น˜ ํ•œํ›„ ๊ฐœ๋ฐœ ํ™˜๊ฒฝ ๊ตฌ์ถ•์„ ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ์•„๋ž˜ ๋ช…๋ น์–ด๋ฅผ ์ถ”๊ฐ€ ํ•œ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ๋ฆฌ๋ˆ…์Šค๋‚˜ ๋งฅ์—์„œ gcc ์ปดํŒŒ์ผ๋Ÿฌ๋ฅผ ์‚ฌ์šฉํ•˜๋‹ค ๋ณด๋‹ˆ ์œˆ๋„์šฐ๋„ ์†Œ์Šค ๋ณ€๊ฒฝ์„ ์ตœ์†Œํ™” ํ•˜๊ธฐ ์œ„ํ•ด msys2 ๋ฅผ ์„ค์น˜ํ•ด gcc๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด์„œ ์ด๋‹ค.

์„ค์น˜ ํ›„ ์—ฌ๋Ÿฌ๊ฐ€์ง€ ์‹คํ–‰ ์•„์ด์ฝ˜ ๋‚˜์˜ค๋Š”๋ฐ ์ž๊ธฐ๊ฐ€ ์›ํ•˜๋Š” ์•„์ด์ฝ˜์„ ์„ ํƒ ํ•˜๋ฉด ๋œ๋‹ค.
๋‚˜๋Š” MSYS2 MINGW64 ํ™˜๊ฒฝ์„ ์‚ฌ์šฉํ•œ๋‹ค.

์ฐธ๊ณ ๋กœ ) libtool ๊ณผ openldap ์˜ ๊ฒฝ์šฐ๋Š” ํ•„์š” ํ•œ ๊ฒฝ์šฐ ์„ค์น˜ ํ•˜๋ฉด ๋œ๋‹ค.

pacman -Su
pacman -S base-devel 

# pacman -S mingw-w64-x86_64-toolchain
// ์ฐธ๊ณ ๋กœ ๊ฐœ๋ฐœ ํŒจํ‚ค์ง€๋Š” ํ˜ธํ™˜์„ฑ ์ถฉ๋Œ๋กœ ์œ„ ๋ช…๋ น์–ด ์‹คํ–‰ ํ•˜์ง€ ์•Š๊ฒŒ ํ•ด์•ผ ํ•จ

pacman -S libtool
pacman -S mingw-w64-x86_64-openldap
pacman -S cmake git vim
pacman -S make

// ํ˜น์‹œ๋‚˜ ์„ค์น˜์‹œ ์˜ค๋ฅ˜๊ฐ€ ๋‚˜๋ฉด ํ•˜๋‚˜์”ฉ ์„ค์น˜ ํ•ด๋ณด๋ฉด ๋จ

- msys2 ๋ฅผ ์ด์šฉํ•ด ์ปดํŒŒ์ผ ํ™˜๊ฒฝ์„ ์‚ฌ์šฉํ•˜๋ ค๋ฉด toolchain ์„ ์„ค์น˜๋ฅผ ํ•ด์ฃผ์–ด ํ•˜๋Š” ๊ฒฝ์šฐ ์•„๋ž˜ ์ฒ˜๋Ÿผ ๋ฌธ์ œ ์ฒ˜๋ฆฌ๋ฅด ํ•ด ์ฃผ๋ฉด ๋œ๋‹ค.

toolchain ์„ ์„ค์น˜ ํ•˜๋ฉด ์•„๋ž˜ ์ฒ˜๋Ÿผ ๋ ˆํผ๋Ÿฐ์Šค ์˜ค๋ฅ˜ ๊ฒฝ์šฐ

crtexe.c:-1: error: undefined reference to `__mingw_init_ehandler'
crtexe.c:-1: error: undefined reference to `__security_init_cookie'
crtexe.c:-1: error: undefined reference to `__security_init_cookie'
crtexe.c:-1: error: undefined reference to `mingw_app_type'
crtexe.c:-1: error: undefined reference to `mingw_initcharmax'
crtexe.c:-1: error: undefined reference to `mingw_initltssuo_force'
crtexe.c:-1: error: undefined reference to `mingw_initltsdyn_force'
crtexe.c:-1: error: undefined reference to `mingw_initltsdrot_force'
:-1: error: collect2.exe: error: ld returned 1 exit status
:-1: error: ninja: build stopped: subcommand failed.

์•„์ง ์ •ํ™•ํ•œ ์ด์œ ๋Š” ์•Œ ์ˆ˜ ์—†์ง€๋งŒ ์•„๋งˆ๋„ ์‚ฌ์šฉ๋œ ๋งํ‚น ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ„์— ํ˜ธํ™˜์„ฑ ๋ฌธ์ œ๋กœ ๋ณด์ธ๋‹ค.
์ฆ‰ QT ์—์„œ ์‚ฌ์šฉํ•˜๋Š” mingw ํ™˜๊ฒฝ๊ณผ msys2 ์„ค์น˜๋กœ ์‚ฌ์šฉํ•˜๋Š” mingw ๊ฐ„์— ํ˜ธํ™˜์„ฑ ๋ฌธ์ œ๋กœ ๋ณด์ธ๋‹ค.
ํ˜„์žฌ ์ด๋Ÿด ๊ฒฝ์šฐ msys2 ์—์„œ ์‚ฌ์šฉํ•˜๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ํŒŒ์ผ๋งŒ ๋ณ„๋„๋กœ ๋ณต์‚ฌ ํ•ด์„œ msys2 ์‹œ์Šคํ…œ ๊ฒฝ๋กœ๋ฅผ ์ œ๊ฑฐ ํ•ด ์ฃผ๋ฉด ๋ฐœ์ƒ ํ•˜์ง€ ์•Š์Œ

๋‚ด๋ถ€์ ์œผ๋กœ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๊ฒฝ๋กœ์— ์˜ฎ๊ฒจ์„œ ์„ค์ • ๊ฒฝ๋กœ๋ฅผ msys2 ๊ฒฝ๋กœ๋ฅผ ๋ณด์ง€ ์•Š๊ฒŒ ํ•ด์ฃผ๋ฉด ๋œ๋‹ค.
๋ฌผ๋ก  ํ—ค๋” ํŒŒ์ผ ๊ฒฝ๋กœ๋Š” ๋ฌธ์ œ๊ฐ€ ๋˜์ง€ ์•Š๋Š”๋‹ค.

../../lib/win64  <-- ์ด๋ ‡๊ฒŒ ๋ณ„๋„ ํด๋”๋ฅผ ๋งŒ๋“ค์–ด ๊ฒฝ๋กœ ์„ค์ • ํ•จ

#"C:/msys64/mingw64/lib"  <-- msys2 ์—์„œ ํ•ด๋‹น ๊ฒฝ๋กœ๋ฅผ ์ฃผ์„์œผ๋กœ ๋ง‰์•„ ์คŒ

# ์ฐธ๊ณ ๋กœ ๋ณ„๋„ ํด๋”์— .a ํŒŒ์ผ๊ณผ .dll.a ํŒŒ์ผ ๋ชจ๋‘ ๋ณต์‚ฌ ํ•ด์คŒ

๋ณต์‚ฌํ•œ ํด๋” ๋ช… ์˜ˆ์ œ

pacman ์‚ฌ์šฉ๋ฒ•


# ์‹œ์Šคํ…œ ์—…๋ฐ์ดํŠธ
$ pacman -Su

# ํŒจํ‚ค์ง€ ๊ฒ€์ƒ‰
$ pacman -Ss [๊ฒ€์ƒ‰๋‹จ์–ด]

# ์„ค์น˜๋œ ํŒจํ‚ค์ง€ ๊ฒ€์ƒ‰
$ pacman -Qs [๊ฐฌ์ƒ‰๋‹จ์–ด]

# ํŒจํ‚ค์ง€ ์ •๋ณด ํ™•์ธ
$ pacman -Qi [ํŒจํ‚ค์ง€๋ช…]

# ํŒจํ‚ค์ง€ ์„ค์น˜
$ pacman -S [ํŒจํ‚ค์ง€๋ช…]

# ํŒจํ‚ค์ง€ ์‚ญ์ œ
$ pacman -Rs [ํŒจํ‚ค์ง€๋ช…]

๋งˆ๋ฌด๋ฆฌ

PC์šฉ ํ”„๋กœ๊ทธ๋žจ์„ ์‚ฌ์šฉํ•˜๋Š” ์ฃผ์š” ํ™˜๊ฒฝ์€ ๋ฆฌ๋ˆ…์Šค, ๋งฅ ๊ทธ๋ฆฌ๊ณ  ์œˆ๋„์šฐ ์ด๋‹ค.
์‚ฌ์‹ค ๋ฆฌ๋ˆ…์Šค๋‚˜ ๋งฅ์€ ๊ธฐ๋ณธ์ ์œผ๋กœ gcc ์ปดํŒŒ์ผ ํ™˜๊ฒฝ์ด ์‰ฝ๊ฒŒ ๊ตฌ์ถ•์ด ๋˜๊ตฌ ์ผ๋ฐ˜์ ์œผ๋กœ ์‚ฌ์šฉ์ด ๋œ๋‹ค.

ํ•˜์ง€๋งŒ ์œˆ๋„์šฐ์—์„œ gcc ์ง€์›๊ณผ make ๋˜๋Š” cmake ๊ฐ™์€ ํ™˜๊ฒฝ์„ ์‰˜๋กœ ์ง€์›ํ•˜๊ธฐ ์œ„ํ•ด msys2๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.
์ด๋ ‡๊ฒŒ ์œˆ๋„์šฐ๋„ msys2๋ฅผ ์ด์šฉํ•ด ๊ฐœ๋ฐœ ํ™˜๊ฒฝ์„ ๊ฐ€์ ธ๊ฐ€๊ฒŒ ๋˜๋ฉด ์ด 3๊ฐ€์ง€ ํ”Œ๋žซํผ์„ ์ง€์›ํ•˜๊ธฐ๊ธฐ ์šฉ์ด ํ•˜๋‹ค.
QT์˜ ๊ฒฝ์šฐ 3๊ฐ€์ง€ ํ”Œ๋žซํผ ๋ชจ๋‘ ์ง€์›ํ•œ๋‹ค.
์ด๋Ÿฌ๋‹ค ๋ณด๋‹ˆ ๋”์ด์ƒ Visual Studio ๋”์ด์ƒ ์‚ฌ์šฉ ํ•˜์ง€ ์•Š๊ณ  gcc ๋ž‘ QT๋ฅผ ์ด์šฉํ•˜์—ฌ ๊ฐœ๋ฐœ ํ•˜๊ฒŒ ๋˜์—ˆ๋‹ค.