최근 수정 시각 : 2025-12-15 22:49:52

GCC

GNU Compiler Collection에서 넘어옴

파일:다른 뜻 아이콘.svg  
#!if 넘어옴1 != null
''''''{{{#!if 넘어옴2 == null
{{{#!if 넘어옴1[넘어옴1.length - 1] >= 0xAC00 && 넘어옴1[넘어옴1.length - 1] <= 0xD7A3
{{{#!if ((넘어옴1[넘어옴1.length - 1] - 0xAC00) % 28) == 0
는}}}{{{#!if ((넘어옴1[넘어옴1.length - 1] - 0xAC00) % 28) != 0
은}}}}}}{{{#!if 넘어옴1[넘어옴1.length - 1] < 0xAC00 || 넘어옴1[넘어옴1.length - 1] > 0xD7A3
은(는)}}}}}}{{{#!if 넘어옴2 != null
, ''''''{{{#!if 넘어옴3 == null
{{{#!if 넘어옴2[넘어옴2.length - 1] >= 0xAC00 && 넘어옴2[넘어옴2.length - 1] <= 0xD7A3
{{{#!if ((넘어옴2[넘어옴2.length - 1] - 0xAC00) % 28) == 0
는}}}{{{#!if ((넘어옴2[넘어옴2.length - 1] - 0xAC00) % 28) != 0
은}}}}}}{{{#!if 넘어옴2[넘어옴2.length - 1] < 0xAC00 || 넘어옴2[넘어옴2.length - 1] > 0xD7A3
은(는)}}}}}}}}}{{{#!if 넘어옴3 != null
, ''''''{{{#!if 넘어옴4 == null
{{{#!if 넘어옴3[넘어옴3.length - 1] >= 0xAC00 && 넘어옴3[넘어옴3.length - 1] <= 0xD7A3
{{{#!if ((넘어옴3[넘어옴3.length - 1] - 0xAC00) % 28) == 0
는}}}{{{#!if ((넘어옴3[넘어옴3.length - 1] - 0xAC00) % 28) != 0
은}}}}}}{{{#!if 넘어옴3[넘어옴3.length - 1] < 0xAC00 || 넘어옴3[넘어옴3.length - 1] > 0xD7A3
은(는)}}}}}}}}}{{{#!if 넘어옴4 != null
, ''''''{{{#!if 넘어옴5 == null
{{{#!if 넘어옴4[넘어옴4.length - 1] >= 0xAC00 && 넘어옴4[넘어옴4.length - 1] <= 0xD7A3
{{{#!if ((넘어옴4[넘어옴4.length - 1] - 0xAC00) % 28) == 0
는}}}{{{#!if ((넘어옴4[넘어옴4.length - 1] - 0xAC00) % 28) != 0
은}}}}}}{{{#!if 넘어옴4[넘어옴4.length - 1] < 0xAC00 || 넘어옴4[넘어옴4.length - 1] > 0xD7A3
은(는)}}}}}}}}}{{{#!if 넘어옴5 != null
, ''''''{{{#!if 넘어옴6 == null
{{{#!if 넘어옴5[넘어옴5.length - 1] >= 0xAC00 && 넘어옴5[넘어옴5.length - 1] <= 0xD7A3
{{{#!if ((넘어옴5[넘어옴5.length - 1] - 0xAC00) % 28) == 0
는}}}{{{#!if ((넘어옴5[넘어옴5.length - 1] - 0xAC00) % 28) != 0
은}}}}}}{{{#!if 넘어옴5[넘어옴5.length - 1] < 0xAC00 || 넘어옴5[넘어옴5.length - 1] > 0xD7A3
은(는)}}}}}}}}}{{{#!if 넘어옴6 != null
, ''''''{{{#!if 넘어옴7 == null
{{{#!if 넘어옴6[넘어옴6.length - 1] >= 0xAC00 && 넘어옴6[넘어옴6.length - 1] <= 0xD7A3
{{{#!if ((넘어옴6[넘어옴6.length - 1] - 0xAC00) % 28) == 0
는}}}{{{#!if ((넘어옴6[넘어옴6.length - 1] - 0xAC00) % 28) != 0
은}}}}}}{{{#!if 넘어옴6[넘어옴6.length - 1] < 0xAC00 || 넘어옴6[넘어옴6.length - 1] > 0xD7A3
은(는)}}}}}}}}}{{{#!if 넘어옴7 != null
, ''''''{{{#!if 넘어옴8 == null
{{{#!if 넘어옴7[넘어옴7.length - 1] >= 0xAC00 && 넘어옴7[넘어옴7.length - 1] <= 0xD7A3
{{{#!if ((넘어옴7[넘어옴7.length - 1] - 0xAC00) % 28) == 0
는}}}{{{#!if ((넘어옴7[넘어옴7.length - 1] - 0xAC00) % 28) != 0
은}}}}}}{{{#!if 넘어옴7[넘어옴7.length - 1] < 0xAC00 || 넘어옴7[넘어옴7.length - 1] > 0xD7A3
은(는)}}}}}}}}}{{{#!if 넘어옴8 != null
, ''''''{{{#!if 넘어옴9 == null
{{{#!if 넘어옴8[넘어옴8.length - 1] >= 0xAC00 && 넘어옴8[넘어옴8.length - 1] <= 0xD7A3
{{{#!if ((넘어옴8[넘어옴8.length - 1] - 0xAC00) % 28) == 0
는}}}{{{#!if ((넘어옴8[넘어옴8.length - 1] - 0xAC00) % 28) != 0
은}}}}}}{{{#!if 넘어옴8[넘어옴8.length - 1] < 0xAC00 || 넘어옴8[넘어옴8.length - 1] > 0xD7A3
은(는)}}}}}}}}}{{{#!if 넘어옴9 != null
, ''''''{{{#!if 넘어옴10 == null
{{{#!if 넘어옴9[넘어옴9.length - 1] >= 0xAC00 && 넘어옴9[넘어옴9.length - 1] <= 0xD7A3
{{{#!if ((넘어옴9[넘어옴9.length - 1] - 0xAC00) % 28) == 0
는}}}{{{#!if ((넘어옴9[넘어옴9.length - 1] - 0xAC00) % 28) != 0
은}}}}}}{{{#!if 넘어옴9[넘어옴9.length - 1] < 0xAC00 || 넘어옴9[넘어옴9.length - 1] > 0xD7A3
은(는)}}}}}}}}}{{{#!if 넘어옴10 != null
, ''''''{{{#!if 넘어옴10[넘어옴10.length - 1] >= 0xAC00 && 넘어옴10[넘어옴10.length - 1] <= 0xD7A3
{{{#!if ((넘어옴10[넘어옴10.length - 1] - 0xAC00) % 28) == 0
는}}}{{{#!if ((넘어옴10[넘어옴10.length - 1] - 0xAC00) % 28) != 0
은}}}}}}{{{#!if 넘어옴10[넘어옴10.length - 1] < 0xAC00 || 넘어옴10[넘어옴10.length - 1] > 0xD7A3
은(는)}}}}}} 여기로 연결됩니다. 
#!if 설명 == null && 리스트 == null
{{{#!if 설명1 == null
다른 뜻에 대한 내용은 아래 문서를}}}{{{#!if 설명1 != null
{{{#!html 아랍 국가들 간의 협력체}}}에 대한 내용은 [[걸프 협력회의]] 문서{{{#!if (문단1 == null) == (앵커1 == null)
를}}}{{{#!if 문단1 != null & 앵커1 == null
의 [[걸프 협력회의#s-|]]번 문단을}}}{{{#!if 문단1 == null & 앵커1 != null
의 [[걸프 협력회의#|]] 부분을}}}}}}{{{#!if 설명2 != null
, {{{#!html }}}에 대한 내용은 [[]] 문서{{{#!if (문단2 == null) == (앵커2 == null)
를}}}{{{#!if 문단2 != null & 앵커2 == null
의 [[#s-|]]번 문단을}}}{{{#!if 문단2 == null & 앵커2 != null
의 [[#|]] 부분을}}}}}}{{{#!if 설명3 != null
, {{{#!html }}}에 대한 내용은 [[]] 문서{{{#!if (문단3 == null) == (앵커3 == null)
를}}}{{{#!if 문단3 != null & 앵커3 == null
의 [[#s-|]]번 문단을}}}{{{#!if 문단3 == null & 앵커3 != null
의 [[#|]] 부분을}}}}}}{{{#!if 설명4 != null
, {{{#!html }}}에 대한 내용은 [[]] 문서{{{#!if (문단4 == null) == (앵커4 == null)
를}}}{{{#!if 문단4 != null & 앵커4 == null
의 [[#s-|]]번 문단을}}}{{{#!if 문단4 == null & 앵커4 != null
의 [[#|]] 부분을}}}}}}{{{#!if 설명5 != null
, {{{#!html }}}에 대한 내용은 [[]] 문서{{{#!if (문단5 == null) == (앵커5 == null)
를}}}{{{#!if 문단5 != null & 앵커5 == null
의 [[#s-|]]번 문단을}}}{{{#!if 문단5 == null & 앵커5 != null
의 [[#|]] 부분을}}}}}}{{{#!if 설명6 != null
, {{{#!html }}}에 대한 내용은 [[]] 문서{{{#!if (문단6 == null) == (앵커6 == null)
를}}}{{{#!if 문단6 != null & 앵커6 == null
의 [[#s-|]]번 문단을}}}{{{#!if 문단6 == null & 앵커6 != null
의 [[#|]] 부분을}}}}}}{{{#!if 설명7 != null
, {{{#!html }}}에 대한 내용은 [[]] 문서{{{#!if (문단7 == null) == (앵커7 == null)
를}}}{{{#!if 문단7 != null & 앵커7 == null
의 [[#s-|]]번 문단을}}}{{{#!if 문단7 == null & 앵커7 != null
의 [[#|]] 부분을}}}}}}{{{#!if 설명8 != null
, {{{#!html }}}에 대한 내용은 [[]] 문서{{{#!if (문단8 == null) == (앵커8 == null)
를}}}{{{#!if 문단8 != null & 앵커8 == null
의 [[#s-|]]번 문단을}}}{{{#!if 문단8 == null & 앵커8 != null
의 [[#|]] 부분을}}}}}}{{{#!if 설명9 != null
, {{{#!html }}}에 대한 내용은 [[]] 문서{{{#!if (문단9 == null) == (앵커9 == null)
를}}}{{{#!if 문단9 != null & 앵커9 == null
의 [[#s-|]]번 문단을}}}{{{#!if 문단9 == null & 앵커9 != null
의 [[#|]] 부분을}}}}}}{{{#!if 설명10 != null
, {{{#!html }}}에 대한 내용은 [[]] 문서{{{#!if (문단10 == null) == (앵커10 == null)
를}}}{{{#!if 문단10 != null & 앵커10 == null
의 [[#s-|]]번 문단을}}}{{{#!if 문단10 == null & 앵커10 != null
의 [[#|]] 부분을}}}}}}
#!if 설명 == null
{{{#!if 리스트 != null
다른 뜻에 대한 내용은 아래 문서를}}} 참고하십시오.

#!if 리스트 != null
{{{#!if 문서명1 != null
 * {{{#!if 설명1 != null
아랍 국가들 간의 협력체: }}}[[걸프 협력회의]] {{{#!if 문단1 != null & 앵커1 == null
문서의 [[걸프 협력회의#s-|]]번 문단}}}{{{#!if 문단1 == null & 앵커1 != null
문서의 [[걸프 협력회의#|]] 부분}}}}}}{{{#!if 문서명2 != null
 * {{{#!if 설명2 != null
: }}}[[]] {{{#!if 문단2 != null & 앵커2 == null
문서의 [[#s-|]]번 문단}}}{{{#!if 문단2 == null & 앵커2 != null
문서의 [[#|]] 부분}}}}}}{{{#!if 문서명3 != null
 * {{{#!if 설명3 != null
: }}}[[]] {{{#!if 문단3 != null & 앵커3 == null
문서의 [[#s-|]]번 문단}}}{{{#!if 문단3 == null & 앵커3 != null
문서의 [[#|]] 부분}}}}}}{{{#!if 문서명4 != null
 * {{{#!if 설명4 != null
: }}}[[]] {{{#!if 문단4 != null & 앵커4 == null
문서의 [[#s-|]]번 문단}}}{{{#!if 문단4 == null & 앵커4 != null
문서의 [[#|]] 부분}}}}}}{{{#!if 문서명5 != null
 * {{{#!if 설명5 != null
: }}}[[]] {{{#!if 문단5 != null & 앵커5 == null
문서의 [[#s-|]]번 문단}}}{{{#!if 문단5 == null & 앵커5 != null
문서의 [[#|]] 부분}}}}}}{{{#!if 문서명6 != null
 * {{{#!if 설명6 != null
: }}}[[]] {{{#!if 문단6 != null & 앵커6 == null
문서의 [[#s-|]]번 문단}}}{{{#!if 문단6 == null & 앵커6 != null
문서의 [[#|]] 부분}}}}}}{{{#!if 문서명7 != null
 * {{{#!if 설명7 != null
: }}}[[]] {{{#!if 문단7 != null & 앵커7 == null
문서의 [[#s-|]]번 문단}}}{{{#!if 문단7 == null & 앵커7 != null
문서의 [[#|]] 부분}}}}}}{{{#!if 문서명8 != null
 * {{{#!if 설명8 != null
: }}}[[]] {{{#!if 문단8 != null & 앵커8 == null
문서의 [[#s-|]]번 문단}}}{{{#!if 문단8 == null & 앵커8 != null
문서의 [[#|]] 부분}}}}}}{{{#!if 문서명9 != null
 * {{{#!if 설명9 != null
: }}}[[]] {{{#!if 문단9 != null & 앵커9 == null
문서의 [[#s-|]]번 문단}}}{{{#!if 문단9 == null & 앵커9 != null
문서의 [[#|]] 부분}}}}}}{{{#!if 문서명10 != null
 * {{{#!if 설명10 != null
: }}}[[]] {{{#!if 문단10 != null & 앵커10 == null
문서의 [[#s-|]]번 문단}}}{{{#!if 문단10 == null & 앵커10 != null
문서의 [[#|]] 부분}}}}}}

파일:다른 뜻 아이콘.svg  
#!if 넘어옴1 != null
''''''{{{#!if 넘어옴2 == null
{{{#!if 넘어옴1[넘어옴1.length - 1] >= 0xAC00 && 넘어옴1[넘어옴1.length - 1] <= 0xD7A3
{{{#!if ((넘어옴1[넘어옴1.length - 1] - 0xAC00) % 28) == 0
는}}}{{{#!if ((넘어옴1[넘어옴1.length - 1] - 0xAC00) % 28) != 0
은}}}}}}{{{#!if 넘어옴1[넘어옴1.length - 1] < 0xAC00 || 넘어옴1[넘어옴1.length - 1] > 0xD7A3
은(는)}}}}}}{{{#!if 넘어옴2 != null
, ''''''{{{#!if 넘어옴3 == null
{{{#!if 넘어옴2[넘어옴2.length - 1] >= 0xAC00 && 넘어옴2[넘어옴2.length - 1] <= 0xD7A3
{{{#!if ((넘어옴2[넘어옴2.length - 1] - 0xAC00) % 28) == 0
는}}}{{{#!if ((넘어옴2[넘어옴2.length - 1] - 0xAC00) % 28) != 0
은}}}}}}{{{#!if 넘어옴2[넘어옴2.length - 1] < 0xAC00 || 넘어옴2[넘어옴2.length - 1] > 0xD7A3
은(는)}}}}}}}}}{{{#!if 넘어옴3 != null
, ''''''{{{#!if 넘어옴4 == null
{{{#!if 넘어옴3[넘어옴3.length - 1] >= 0xAC00 && 넘어옴3[넘어옴3.length - 1] <= 0xD7A3
{{{#!if ((넘어옴3[넘어옴3.length - 1] - 0xAC00) % 28) == 0
는}}}{{{#!if ((넘어옴3[넘어옴3.length - 1] - 0xAC00) % 28) != 0
은}}}}}}{{{#!if 넘어옴3[넘어옴3.length - 1] < 0xAC00 || 넘어옴3[넘어옴3.length - 1] > 0xD7A3
은(는)}}}}}}}}}{{{#!if 넘어옴4 != null
, ''''''{{{#!if 넘어옴5 == null
{{{#!if 넘어옴4[넘어옴4.length - 1] >= 0xAC00 && 넘어옴4[넘어옴4.length - 1] <= 0xD7A3
{{{#!if ((넘어옴4[넘어옴4.length - 1] - 0xAC00) % 28) == 0
는}}}{{{#!if ((넘어옴4[넘어옴4.length - 1] - 0xAC00) % 28) != 0
은}}}}}}{{{#!if 넘어옴4[넘어옴4.length - 1] < 0xAC00 || 넘어옴4[넘어옴4.length - 1] > 0xD7A3
은(는)}}}}}}}}}{{{#!if 넘어옴5 != null
, ''''''{{{#!if 넘어옴6 == null
{{{#!if 넘어옴5[넘어옴5.length - 1] >= 0xAC00 && 넘어옴5[넘어옴5.length - 1] <= 0xD7A3
{{{#!if ((넘어옴5[넘어옴5.length - 1] - 0xAC00) % 28) == 0
는}}}{{{#!if ((넘어옴5[넘어옴5.length - 1] - 0xAC00) % 28) != 0
은}}}}}}{{{#!if 넘어옴5[넘어옴5.length - 1] < 0xAC00 || 넘어옴5[넘어옴5.length - 1] > 0xD7A3
은(는)}}}}}}}}}{{{#!if 넘어옴6 != null
, ''''''{{{#!if 넘어옴7 == null
{{{#!if 넘어옴6[넘어옴6.length - 1] >= 0xAC00 && 넘어옴6[넘어옴6.length - 1] <= 0xD7A3
{{{#!if ((넘어옴6[넘어옴6.length - 1] - 0xAC00) % 28) == 0
는}}}{{{#!if ((넘어옴6[넘어옴6.length - 1] - 0xAC00) % 28) != 0
은}}}}}}{{{#!if 넘어옴6[넘어옴6.length - 1] < 0xAC00 || 넘어옴6[넘어옴6.length - 1] > 0xD7A3
은(는)}}}}}}}}}{{{#!if 넘어옴7 != null
, ''''''{{{#!if 넘어옴8 == null
{{{#!if 넘어옴7[넘어옴7.length - 1] >= 0xAC00 && 넘어옴7[넘어옴7.length - 1] <= 0xD7A3
{{{#!if ((넘어옴7[넘어옴7.length - 1] - 0xAC00) % 28) == 0
는}}}{{{#!if ((넘어옴7[넘어옴7.length - 1] - 0xAC00) % 28) != 0
은}}}}}}{{{#!if 넘어옴7[넘어옴7.length - 1] < 0xAC00 || 넘어옴7[넘어옴7.length - 1] > 0xD7A3
은(는)}}}}}}}}}{{{#!if 넘어옴8 != null
, ''''''{{{#!if 넘어옴9 == null
{{{#!if 넘어옴8[넘어옴8.length - 1] >= 0xAC00 && 넘어옴8[넘어옴8.length - 1] <= 0xD7A3
{{{#!if ((넘어옴8[넘어옴8.length - 1] - 0xAC00) % 28) == 0
는}}}{{{#!if ((넘어옴8[넘어옴8.length - 1] - 0xAC00) % 28) != 0
은}}}}}}{{{#!if 넘어옴8[넘어옴8.length - 1] < 0xAC00 || 넘어옴8[넘어옴8.length - 1] > 0xD7A3
은(는)}}}}}}}}}{{{#!if 넘어옴9 != null
, ''''''{{{#!if 넘어옴10 == null
{{{#!if 넘어옴9[넘어옴9.length - 1] >= 0xAC00 && 넘어옴9[넘어옴9.length - 1] <= 0xD7A3
{{{#!if ((넘어옴9[넘어옴9.length - 1] - 0xAC00) % 28) == 0
는}}}{{{#!if ((넘어옴9[넘어옴9.length - 1] - 0xAC00) % 28) != 0
은}}}}}}{{{#!if 넘어옴9[넘어옴9.length - 1] < 0xAC00 || 넘어옴9[넘어옴9.length - 1] > 0xD7A3
은(는)}}}}}}}}}{{{#!if 넘어옴10 != null
, ''''''{{{#!if 넘어옴10[넘어옴10.length - 1] >= 0xAC00 && 넘어옴10[넘어옴10.length - 1] <= 0xD7A3
{{{#!if ((넘어옴10[넘어옴10.length - 1] - 0xAC00) % 28) == 0
는}}}{{{#!if ((넘어옴10[넘어옴10.length - 1] - 0xAC00) % 28) != 0
은}}}}}}{{{#!if 넘어옴10[넘어옴10.length - 1] < 0xAC00 || 넘어옴10[넘어옴10.length - 1] > 0xD7A3
은(는)}}}}}} 여기로 연결됩니다. 
#!if 설명 == null && 리스트 == null
{{{#!if 설명1 == null
다른 뜻에 대한 내용은 아래 문서를}}}{{{#!if 설명1 != null
{{{#!html GCC라는 약칭을 사용하는 발로란트의 국제 대회}}}에 대한 내용은 [[발로란트 게임 체인저스 챔피언십]] 문서{{{#!if (문단1 == null) == (앵커1 == null)
를}}}{{{#!if 문단1 != null & 앵커1 == null
의 [[발로란트 게임 체인저스 챔피언십#s-|]]번 문단을}}}{{{#!if 문단1 == null & 앵커1 != null
의 [[발로란트 게임 체인저스 챔피언십#|]] 부분을}}}}}}{{{#!if 설명2 != null
, {{{#!html }}}에 대한 내용은 [[]] 문서{{{#!if (문단2 == null) == (앵커2 == null)
를}}}{{{#!if 문단2 != null & 앵커2 == null
의 [[#s-|]]번 문단을}}}{{{#!if 문단2 == null & 앵커2 != null
의 [[#|]] 부분을}}}}}}{{{#!if 설명3 != null
, {{{#!html }}}에 대한 내용은 [[]] 문서{{{#!if (문단3 == null) == (앵커3 == null)
를}}}{{{#!if 문단3 != null & 앵커3 == null
의 [[#s-|]]번 문단을}}}{{{#!if 문단3 == null & 앵커3 != null
의 [[#|]] 부분을}}}}}}{{{#!if 설명4 != null
, {{{#!html }}}에 대한 내용은 [[]] 문서{{{#!if (문단4 == null) == (앵커4 == null)
를}}}{{{#!if 문단4 != null & 앵커4 == null
의 [[#s-|]]번 문단을}}}{{{#!if 문단4 == null & 앵커4 != null
의 [[#|]] 부분을}}}}}}{{{#!if 설명5 != null
, {{{#!html }}}에 대한 내용은 [[]] 문서{{{#!if (문단5 == null) == (앵커5 == null)
를}}}{{{#!if 문단5 != null & 앵커5 == null
의 [[#s-|]]번 문단을}}}{{{#!if 문단5 == null & 앵커5 != null
의 [[#|]] 부분을}}}}}}{{{#!if 설명6 != null
, {{{#!html }}}에 대한 내용은 [[]] 문서{{{#!if (문단6 == null) == (앵커6 == null)
를}}}{{{#!if 문단6 != null & 앵커6 == null
의 [[#s-|]]번 문단을}}}{{{#!if 문단6 == null & 앵커6 != null
의 [[#|]] 부분을}}}}}}{{{#!if 설명7 != null
, {{{#!html }}}에 대한 내용은 [[]] 문서{{{#!if (문단7 == null) == (앵커7 == null)
를}}}{{{#!if 문단7 != null & 앵커7 == null
의 [[#s-|]]번 문단을}}}{{{#!if 문단7 == null & 앵커7 != null
의 [[#|]] 부분을}}}}}}{{{#!if 설명8 != null
, {{{#!html }}}에 대한 내용은 [[]] 문서{{{#!if (문단8 == null) == (앵커8 == null)
를}}}{{{#!if 문단8 != null & 앵커8 == null
의 [[#s-|]]번 문단을}}}{{{#!if 문단8 == null & 앵커8 != null
의 [[#|]] 부분을}}}}}}{{{#!if 설명9 != null
, {{{#!html }}}에 대한 내용은 [[]] 문서{{{#!if (문단9 == null) == (앵커9 == null)
를}}}{{{#!if 문단9 != null & 앵커9 == null
의 [[#s-|]]번 문단을}}}{{{#!if 문단9 == null & 앵커9 != null
의 [[#|]] 부분을}}}}}}{{{#!if 설명10 != null
, {{{#!html }}}에 대한 내용은 [[]] 문서{{{#!if (문단10 == null) == (앵커10 == null)
를}}}{{{#!if 문단10 != null & 앵커10 == null
의 [[#s-|]]번 문단을}}}{{{#!if 문단10 == null & 앵커10 != null
의 [[#|]] 부분을}}}}}}
#!if 설명 == null
{{{#!if 리스트 != null
다른 뜻에 대한 내용은 아래 문서를}}} 참고하십시오.

#!if 리스트 != null
{{{#!if 문서명1 != null
 * {{{#!if 설명1 != null
GCC라는 약칭을 사용하는 발로란트의 국제 대회: }}}[[발로란트 게임 체인저스 챔피언십]] {{{#!if 문단1 != null & 앵커1 == null
문서의 [[발로란트 게임 체인저스 챔피언십#s-|]]번 문단}}}{{{#!if 문단1 == null & 앵커1 != null
문서의 [[발로란트 게임 체인저스 챔피언십#|]] 부분}}}}}}{{{#!if 문서명2 != null
 * {{{#!if 설명2 != null
: }}}[[]] {{{#!if 문단2 != null & 앵커2 == null
문서의 [[#s-|]]번 문단}}}{{{#!if 문단2 == null & 앵커2 != null
문서의 [[#|]] 부분}}}}}}{{{#!if 문서명3 != null
 * {{{#!if 설명3 != null
: }}}[[]] {{{#!if 문단3 != null & 앵커3 == null
문서의 [[#s-|]]번 문단}}}{{{#!if 문단3 == null & 앵커3 != null
문서의 [[#|]] 부분}}}}}}{{{#!if 문서명4 != null
 * {{{#!if 설명4 != null
: }}}[[]] {{{#!if 문단4 != null & 앵커4 == null
문서의 [[#s-|]]번 문단}}}{{{#!if 문단4 == null & 앵커4 != null
문서의 [[#|]] 부분}}}}}}{{{#!if 문서명5 != null
 * {{{#!if 설명5 != null
: }}}[[]] {{{#!if 문단5 != null & 앵커5 == null
문서의 [[#s-|]]번 문단}}}{{{#!if 문단5 == null & 앵커5 != null
문서의 [[#|]] 부분}}}}}}{{{#!if 문서명6 != null
 * {{{#!if 설명6 != null
: }}}[[]] {{{#!if 문단6 != null & 앵커6 == null
문서의 [[#s-|]]번 문단}}}{{{#!if 문단6 == null & 앵커6 != null
문서의 [[#|]] 부분}}}}}}{{{#!if 문서명7 != null
 * {{{#!if 설명7 != null
: }}}[[]] {{{#!if 문단7 != null & 앵커7 == null
문서의 [[#s-|]]번 문단}}}{{{#!if 문단7 == null & 앵커7 != null
문서의 [[#|]] 부분}}}}}}{{{#!if 문서명8 != null
 * {{{#!if 설명8 != null
: }}}[[]] {{{#!if 문단8 != null & 앵커8 == null
문서의 [[#s-|]]번 문단}}}{{{#!if 문단8 == null & 앵커8 != null
문서의 [[#|]] 부분}}}}}}{{{#!if 문서명9 != null
 * {{{#!if 설명9 != null
: }}}[[]] {{{#!if 문단9 != null & 앵커9 == null
문서의 [[#s-|]]번 문단}}}{{{#!if 문단9 == null & 앵커9 != null
문서의 [[#|]] 부분}}}}}}{{{#!if 문서명10 != null
 * {{{#!if 설명10 != null
: }}}[[]] {{{#!if 문단10 != null & 앵커10 == null
문서의 [[#s-|]]번 문단}}}{{{#!if 문단10 == null & 앵커10 != null
문서의 [[#|]] 부분}}}}}}

GNU Project
{{{#!wiki style="margin: 0 -10px -5px; min-height: calc(1.5em + 5px);"
{{{#!folding [ 펼치기 · 접기 ]
{{{#!wiki style="margin: -6px -1px -10px;"
<colbgcolor=#a32d2a><colcolor=#fff,#fff> 관련 문서 GNU · 자유 소프트웨어 재단 · 리처드 스톨먼
소프트웨어 Bash · GNOME · GNU Emacs · GNU IceCat · GNU/Linux · GNUnet · GNU Octave · GNU Screen · groff · GRUB · Midnight Commander · nano · R · Texinfo
<bgcolor=#a32d2a><color#fff> 유틸리티 coreutils(fileutils · textutils · shellutils) · GNU Grep · GnuPG · GNU Tar
<bgcolor=#a32d2a><color#fff> 개발자 도구 Autotools(autoconf · automake) · binutils(BFD · as · ld · gold · gdb) · GCC · glibc · GNU Make
라이선스 GNU 일반 공중 사용 허가서 · GNU 약소 일반 공중 사용 허가서 · GNU Affero 일반 공중 사용 허가서
기타 GNU Unifont
취소선: 독립한 프로젝트
}}}}}}}}} ||
<colkeepall> GNU Compiler Collection
GNU C Compiler
파일:GCC 로고.svg
<colbgcolor=#a32d2a> 종류 컴파일러
최초 개발자 리처드 스톨먼
개발 GNU Project
출시 1987년 3월 22일
안정 버전 v15.2 (2025년 8월 8일)
개발 언어 C, C++
라이선스 GNU GPLv3
링크 파일:홈페이지 아이콘.svg | 파일:GitHub 아이콘.svg파일:GitHub 아이콘 화이트.svg[1]
1. 개요2. 역사3. 지원 언어4. 실행 플랫폼
4.1. MinGW
5. 설치
5.1. Linux5.2. Windows
6. 기능
6.1. 컴파일6.2. 디버깅6.3. 최적화
7. 기타

1. 개요

GNU Compiler Collection / GNU C Compiler

GNU 프로젝트의 오픈 소스 컴파일러 툴체인. 유닉스/리눅스 계열 플랫폼의 사실상 표준 컴파일러다. 리처드 스톨먼1987년에 만들었다.

처음에는 C 컴파일러였으며 'GNU C Compiler'의 약어였다. 하지만 기능이 추가되면서 C++ 같은 다른 언어도 지원하게 되었고, 이를 나타내고자 GCC를 다시 역두문자화하여 'GNU Compiler Collection'이라는 이름으로 변경하였다. 물론 약어는 여전히 GCC이다. 공식적으로 지원하는 언어는 C(gcc), C++(g++), Objective-C(gobjc), Fortran(gfortran), Go(gccgo), Rust(gccrs), Ada(gnat), D(gdc)이다. Java(gcj)는 GCC 7.1 버전부터 지원이 중단되었다.

GNU 진영에서 일반적으로 GCC를 사용해 인간의 코드를 기계어로 번역한 오브젝트 파일을 각각 만들어준 후(주로 .o 확장자) 이를 링크하는 과정을 Make를 통해 자동화하여 커맨드 하나로 최종 실행파일을 빌드하는 것이 전통이다. 소스파일의 의존관계가 복잡하지만 않으면 GCC로 직접 최종 실행파일까지 만들 수도 있다.

원래는 C로 구현되었으나 2013년에 구현 언어를 C++로 모두 변경하였다.[2] 만들어진지 수십년 된 컴파일러라 최적화는 매우 잘 되어 있지만, 기존 코드의 구조가 시대적 한계로 인해 오늘날 관점에서는 상당히 더러워서 신규 인력이 거의 유입되지 않았기 때문이다.

2025년 12월 기준 최신 안정 버전은 15.2이며, 차기 버전인 GCC 16이 개발 중이다.

2. 역사

1983년 앤드루 타넨바움이 개발한 '자유 대학 컴파일러 킷(Free University Compiler Kit, VUCK)'이 존재했으나, 이는 대학 구성원에게만 무료였으며 일반 배포에는 상용 라이선스를 요구했기에 GNU의 철학과 부합하지 않았다. 이에 스톨먼은 독립적인 오픈 소스 컴파일러를 직접 개발하기로 결정한다.

초기의 시도는 '파스텔(Pastel)'이라는 Pascal의 확장 언어로 작성된 로렌스 리버모어 연구소의 컴파일러를 이식하는 것이었다. 스톨먼은 여기에 새로운 C 프론트엔드를 결합하여 모토로라 68000 기반 유닉스 시스템으로 포팅을 시도했다. 그러나 파스텔 언어 자체가 방대한 스택 메모리를 사용하는 구조였고, 컴파일 과정에서 수 메가바이트(MB)의 스택 공간을 요구했다. 당시 68000 유닉스 시스템의 가용 스택은 64KB 수준에 불과했기에, 파스텔 기반 컴파일러는 물리적으로 실행이 불가능했다.

결국 스톨먼은 파스텔 컴파일러의 소스 코드를 폐기하고, C 언어를 사용하여 바닥부터 재작성하는 결단을 내렸다.

1987년 3월 22일 공개된 GCC 1.0은 이러한 배경 속에서 탄생했다.

2007년 출시된 GCC 4.2.2 버전부터는 라이선스가 GPLv2에서 GPLv3로 변경되었다.

3. 지원 언어

최신 버전 기준으로 서술한다.
  • C 언어 (gcc)

    • - 버전 15부터 C23이 기본 설정이며, -std= 플래그를 통해 ANSI C부터 최신 표준인 C23까지 C언어 버전을 설정할 수 있다.
  • C++ (g++)

    • - 최신 C++ 버전의 경우 아직 일부 기능이 지원되지 않으며, 실험적인 단계이다. -std= 플래그를 통해 C++98부터 C++26까지 C언어 버전을 설정할 수 있다.
  • Go (gccgo)
  • Rust (gccrs): 15.1 버전부터 정식으로 지원한다.
  • Fortran (gfortran)

4. 실행 플랫폼

주로 GNU/Linux 환경에서 실행되지만, 크로스 플랫폼 컴파일을 지원한다.

4.1. MinGW

MinGW(Minimalist GNU for Windows)라는 윈도우포크도 존재하여 여러 오픈 소스 프로그램들을 윈도우에서 돌아가게 하는 데 일조하고 있다.

MinGW는 MSYS와의 결합으로 구동된다. MSYS는 Minimal SYStem의 약자로, 윈도우에서 유닉스의 터미널 환경을 제공해 주며 이를 통해 MinGW와 GCC를 설치하는 것이다. MSYS와 비슷한 형태를 가진 Cygwin은 단순 터미널이 아닌 일종의 가상머신으로, 윈도우 위에 POSIX 레이어를 새로 얹어 상당히 무거운 반면 MinGW는 POSIX 호환성을 포기한 대신 윈도우 환경과 네이티브로 연결되기 때문에 더 빠른 성능을 제공한다. 이런 이유로 유닉스에서 POSIX API를 이용하는 소스 코드를 작성했을 경우 MinGW로는 컴파일이 불가능하다. Windows 10 Anniversary Update에서는 WSL(Windows Subsystem for Linux)이라는 이름으로 리눅스 API가 윈도우 커널 내부에 직접 탑재되었으므로, 윈도우에서 POSIX 환경을 이용하고 싶다면 WSL을 이용하면 된다.

기존의 MSYS 1.0은 32비트 운영체제만 지원한다는 문제점이 있었는데, 이에 따라 MSYS2 기반의 MinGW-w64가 제작되어 64비트 윈도우 환경을 지원하게 되었다. 참고로 윈도우 환경에서의 GCC는 기존의 유닉스, 리눅스용 GCC와 동일하게 작동하지 않는 경우가 있다. 와이드바이트 관련 예약어나 함수(wchar_t, wprintf(), wcstok() 등)가 대표적인 예.

윈도우 파일 입출력 시 파일을 제대로 읽지 못하는 등의 문제가 있고, Visual Studio에서만 쓰이는 비표준 확장 함수도 제공하고 있기 때문에 C/C++ 입문자에게는 권장할 만한 것이 못 된다는 의견이 있으나, 이는 MS Windows의 로캘 문제에서 비롯된다. Windows의 경우 Windows 10 RS5에 표준 로캘을 UTF-8로 사용하는 옵션[3]이 베타로 추가되어 있으나 이 옵션은 기본값이 아니기에 전역 시스템 로캘은 별도로 설정된 로캘을 따르게 된다. Windows에서 유니코드 Aware한 프로그램을 작성하는 경우 기본적으로 wchar_t 와 같은 와이드바이트 형식 (Windows 에서는 UTF-16)을 사용하게 되며, 기본적으로는 시스템의 MBCS를 따르게 되어 일반적인 방법으로는 파일에 접근하는 방법이 전무하다. C의 fopen()의 프로토타입은 const char* 형식만 존재하고 이는 MBCS를 따르기 때문에 로캘에서 벗어나는 파일명은 접근할 수 없다. MSVC의 경우 비표준 함수인 const wchar_t 오버라이드를 제공하고 있으나, 표준이 아닌 관계로 libc를 사용하는 GCC의 경우 이러한 파일에 접근할 수 있는 방법이 CreateFileW()와 같은 OS 자체의 API를 사용하는 것 이외에는 방법이 존재하지 않는다. 또한 콘솔의 wprintf() 또한 콘솔의 기본값은 역시나 시스템 로캘을 따르며 이 또한 로캘을 벗어나는 문자열의 정상적인 출력을 위해서는 WriteConsoleW()를 사용하여야 하는 등, Windows가 사용하는 MBCS의 문제점이지 MSYS 환경의 문제점이 아니다.

Cygwin의 기능은 WSL로 확실히 대체되었지만, MinGW는 윈도우 환경을 그대로 유지하되 리눅스 명령어만 사용해야 할 경우[4] 유용하게 쓰일 수 있어 여전히 필요성이 있는 소프트웨어이다.

5. 설치

5.1. Linux

일반적으로 Linux 배포판에 기본 포함되어 있는 경우가 많으나 apt 등의 패키지 설치 매니저를 통해 설치할 수 있다.

5.2. Windows

  • MSYS2: GCC 설치 과정 #[5]
    • MSYS2(x86_64) 다운로드 후 MSYS2 셸에 pacman -Syu[6]를 입력하여 패키지 데이터베이스와 코어 시스템 업데이트[7]
    • 셸에 pacman -S mingw-w64-x86_64-toolchain을 입력
    • 셸에 pacman -S mingw-w64-x86_64-cmake mingw-w64-x86_64-extra-cmake-modules를 입력하여 CMake 설치
    • 환경변수 Path에 ~/mingw64/bin[8] 경로 추가
    • 윈도우 명령 프롬프트 창에서 gcc -v, g++ -v, mingw32-make -v[9], cmake -version, gdb -v를 각각 입력하여 정상 설치 여부 확인
  • MSYS2: GPGME error: Invalid crypto engine 에러 발생 시 #
    • 셸 종료 후 (MSYS2 폴더)/var/cache/pacman/pkg 경로에서 libgpgme, gnupg, pacman 패키지 파일(.pkg.tar) 삭제
    • (MSYS2 폴더)/etc 경로에서 텍스트 에디터로 pacman.conf 파일을 열고 SigLevel = Never의 주석 기호(#) 제거, SigLevel = Required DatabaseOptional 주석 처리
    • MSYS2 셸에 pacman -S libgpgme gnupg pacman 입력
    • 기타 필요한 파일 모두 재설치
  • MSYS 1.0: Couldn't reserve space for cygwin's heap 에러 발생 시 #
    • 이곳에서 rebase.exe 파일을 클릭하여 다운로드(다운로드 시 파일명을 bin-rebase.exe에서 rebase.exe로 변경)
    • rebase.exe 파일을 (MSYS 폴더)/MinGW/msys/1.0/bin 경로로 이동
    • bin 폴더에서 명령 프롬프트 창을 열고 rebase -b 0x30000000 msys-1.0.dll 입력
  • TDM-GCC: MSYS 등이 서브시스템에 상당수 의존하는 것과 달리 순수 Windows 환경에서 사용을 목적으로 한 MinGW. 한 패키지로 i686, AMD64 바이너리 생성이 가능하다.
    • MSYS 없이 바로 사용이 가능해서 가벼운 편이지만 셸 스크립트를 돌릴 방법이 없으므로 autotools와 같은 구식의 configurator와 사용하기는 어렵다. Visual Studio Code처럼 자체적인 빌드 환경이 없는 텍스트 에디터로 간단히 컴파일을 하고자 할 때 가장 권장된다. 2020년 3월, 무려 5년만에 새 업데이트가 등록되었다.

6. 기능

실행파일 gcc는 전처리, 컴파일, 링킹 등 각종 작업을 담당하는 여러 프로그램들에 자동으로 커맨드를 넣어주는 드라이버 역할을 한다.
  • --version: GCC 버전을 출력한다.
  • --help: 커맨드라인 옵션 목록을 출력한다. 아래와 같이 옵션의 종류를 지정해서 세부 옵션 목록을 출력할 수도 있다.
    • --help={common|optimizers|params|target|warnings|[^]{joined|separate|undocumented}}[,...]
  • -v: verbose 옵션
  • -v --help: 하위 프로세스의 도움말을 표시한다
  • -E: 전처리까지만 진행하는 옵션이다.
  • -S: 어셈블리를 생성하는 옵션이다.
  • -c: 컴파일 후 링킹 없이 object 파일을 생성하는 옵션이다.
  • -o <file>: 출력 파일명을 지정하는 옵션이다.
  • -g, -f, -m, -O, -W, --param 옵션은 하위 프로세스에 전달되므로, 관련 사용법을 확인하려면 -v --help를 사용하여야 한다.

6.1. 컴파일

  • -Werror: 경고가 발생하면 error로 취급하여 컴파일을 중단시킨다. 코드 품질을 엄격히 관리할 때 유용하다.
  • -Wall: 권장되는 모든 경고(warning)를 활성화한다.

6.2. 디버깅

  • --debug, -g: 디버그 정보를 포함하는 옵션이다.

6.3. 최적화

  • -O, -O1: 컴파일 시간을 크게 늘리지 않는 선에서 최적화를 시도한다.
  • -O2: 일반적으로 배포 빌드에 적용하는 최적화 옵션이다.
  • -O3: 공격적인 최적화 옵션으로 -O2만큼 안정적이지는 않다.
  • -Ofast: O3에 일부 표준 동작을 포기하여 성능을 최우선으로 최적화하는 옵션이다.
    • -ffast-math: 여러 프로세서에서 속도를 저하시키는 denormalized, rounding 등의 일부 부동소수점 표준 동작에 대한 처리를 생략함으로써 속도를 향상시키는 옵션이다.
  • -Os: 코드 크기를 줄이는 데 중점을 둔 옵션이다.
  • -Og: 디버깅을 고려하여 최적화하는 옵션이다. 단, -g 옵션은 자동으로 포함되지 않는다.

7. 기타

2025년 2월 기준, LLVM/Clang과의 성능 비교에서 큰 차이를 보이지 않고 있다.[10] 최근에는 Clang과 경쟁적으로 새로운 기능을 더하고 버전 번호도 높이고 있다. 코드를 분석해 문제가 될만한 부분을 진단해주는 기능 등이 크게 강화되었다.

임베디드 프로그래밍을 할 때도 무료로 배포되는 툴들은 크로스 컴파일을 GCC로 하는 경우가 많다.[11]

2007년에 출시된 4.2.2 버전부터 라이선스가 GPLv3로 바뀌었고, 이에 따라 BSD 라이선스와 호환이 불가능하게 되어 FreeBSD 진영과 애플은 대경실색하고 LLVM/Clang으로 갈아탔다.[12]

GCC 소스코드의 라이선스가 GPL로 변경되었어도 GCC를 이용하여 컴파일한 프로그램들까지 GPL의 영향이 미치지 않는다. 이는 GPL 라이선스가 적용된 소프트웨어의 출력물에 대해서는 GPL가 적용되지 않기 때문이다. stdio.h, iostream 등의 표준 헤더 파일과 GCC 런타임 라이브러리를 사용하는 소프트웨어를 위한 예외가 추가되어 있어 GPL이 적용되지 않는다.[13] 즉 GCC로 프로그램을 컴파일했다고 그 프로그램이 GPL에 따를 필요가 없다는 것이다.

원래는, GCC 15 에서 IA-64 지원을 중단하려 했으나, 연기되어 GCC 16에서 지원을 중단할지 말지 토론중이라고 한다.

GCC 16부터 C++ 20을 기본값으로 전환한다고 한다.
[1] https://gcc.gnu.org/git/gcc.git의 미러이다.[2] https://www.infoq.com/news/2013/03/gcc48_released[3] Beta: 세계 언어 지원을 위해 Unicode UTF-8 사용[4] 주로 오픈 소스 라이브러리를 빌드할 때.[5] MSYS2 폴더의 maintenancetool.exe 파일을 실행하면 MSYS2를 삭제할 수 있다.[6] 아치 리눅스의 패키지 관리자 명령어이다.[7] 마지막에 'error: target not found: update'라는 에러 메시지가 뜨지만 이건 업데이트가 모두 끝났다는 의미로 받아들이면 된다.[8] 에디터에서 컴파일러 툴체인 세팅을 요구할 경우 이 경로를 입력해 주면 된다.[9] 구 32비트 MinGW에 포함된 make는 유닉스 시스템의 명령어를 그대로 사용하는 반면, MinGW-w64에 포함된 make는 기존의 것을 네이티브 윈도우 환경에 맞춰 약간 변형한 것이기 때문에 이름이 mingw32-make로 바뀌었다.[10] https://www.phoronix.com/review/clang20-gcc15-amd-znver5/4[11] 오픈소스 빌드 툴들이나 STmicroelectronics 에서 제공하는 CubeIDE등이 대표적이며 ARM에서 직접 개발해 배포하는 KEIL이나 임베디드 개발툴의 최강자중 한명인 IAR, ATMEL AVR이나 PIC을 만드는 Microchip Technology등이 파는 개발툴은 자체 개발 컴파일러를 쓴다.[12] 심지어 애플은 터미널에 gcc 명령어를 입력하면 clang으로 연결되도록 바꿔버리기까지 했다.(...) 최신 macOS에서 'gcc -v'를 입력하여 나오는 출력 결과는 Apple LLVM과 clang의 버전이다.[13] GPL RT Exception 전문을 보면 알겠지만 소스코드와 바이너리를 런타임 목적 그 자체로 사용하는 경우에만 적용되는 라이선스이며, 해당 라이브러리등을 개작하는 경우는 GPL을 준수하여야 한다.