저는 최근 여름 프로젝트로 데스크탑 PC에 Arch Linux를 설치했고, 소스에서 프로그램을 설치하는 방법을 알아보려고 합니다. 내가 수집한 것에서 tarball 파일을 가져와서 압축을 풀고 ./configure를 실행한 다음 make와 make-install을 수행해야 합니다. ./configure를 통해 진행할 수 있지만 코드 블록을 설치하기 위해 make 명령을 실행하려고 하면 컴파일러 오류처럼 보이는 내용이 많이 나타납니다.
codeblocks wiki의 가이드에 따르면, codeblocks 자체를 설치하기 전에 wxGTK2-2.8.12를 설치해야 합니다.
../configure --prefix=/opt/wx/2.8 --enable-xrc --enable-monolithic --enable-unicode
이거 나한테는 괜찮은 것 같은데,여기터미널 출력입니다.
그런 다음 동일한 폴더에서 make를 실행해 보았더니 출력이 매우 광범위했습니다. 읽기가 힘들었지만 죄송합니다. 오류는 끝에 있습니다. 이전 출력을 확인해야 하는지 확실하지 않습니다.여기전체 make 출력입니다.
답변1
빌드 로그의 모든 컴파일 오류는 다음 형식을 따릅니다.
error: narrowing conversion of ‘ddd’ from ‘int’ to ‘char’ inside { } [-Wnarrowing]
다른 많은 컴파일러 진단이 있지만 이는 오류가 아닌 경고이므로 그대로 사용할 수 있습니다.
이러한 오류는 2011년 3월 릴리스됨 이 현재 2017-7 달인 wxGTK2-2.8.12
컴파일러의 기본 표준이 아닌 이전 C++ 표준(C++98, 즉 C++ 1998)으로 컴파일되도록 작성되었기 때문에 발생합니다 . g++
컴파일러는 g++
버전 6 이상이며 기본값은 C++14(C++ 2014)라고 가정합니다. C++11 표준 이후로 빌드를 중단시키는 축소 변환은 잘못된 형식으로 판단되었지만 이전에는 그렇지 않았습니다.
g++
options 를 전달하여 선택한 C++ 표준에 대해 직접 컴파일 할 수 있으며 -std={c++98|c++03|c++11|c++14|c++17}
for 매개변수 값에 선택 사항을 포함하여 wxGTK2-2.8.12
configure
선택 사항을 스크립트에 전달할 수 있습니다. 또는 축소 변환 오류를 제거합니다.CXXFLAGS
./configure
-std=c++98
-std=c++03
../configure CXXFLAGS=-std=c++03 --prefix=/opt/wx/2.8 --enable-xrc --enable-monolithic --enable-unicode
또는 다음 g++
으로 표시되는 진단을 직접 억제 할 수 있습니다 -Wnarrowing
.
../configure CXXFLAGS=-Wno-narrowing --prefix=/opt/wx/2.8 --enable-xrc --enable-monolithic --enable-unicode
GNU autotools 패키지의 모든 스크립트 ./configure
(예: 빌드하려는 패키지)에는 다음을 포함한 매개변수가 있습니다.
CC C compiler command
CFLAGS C compiler flags
LDFLAGS linker flags, e.g. -L<lib dir> if you have libraries in a
nonstandard directory <lib dir>
CPPFLAGS C/C++ preprocessor flags, e.g. -I<include dir> if you have
headers in a nonstandard directory <include dir>
CPP C preprocessor
CXX C++ compiler command
CXXFLAGS C++ compiler flags
이는 도구 체인과 패키지를 릴리스할 때 패키지 관리자가 예상하는 기본값 간의 편차를 수정하는 데 도움이 됩니다. 바라보다 ./configure --help
.