2016-06-16 7 views
2

저는 Visual Studio Community에 익숙한 Windows 개발자입니다. 이제는 임베디드 장치 (Raspberry Pi, C.H.I.P)와 PC 모두에서 Linux 용으로 개발하기 시작했습니다.Windows 용 QtCreator를 사용하여 Linux 용 응용 프로그램을 빌드하고 디버깅하는 방법은 무엇입니까?

나는 비주얼 스튜디오는 리눅스 용 개발하는 두 가지 옵션이 있습니다 것으로 나타났습니다 :

  • VisualGDB - 크로스 컴파일 및 원격 디버깅을위한 Visual Studio를 확장하지만, 내 현재 예산

  • 을 위해 너무 많은 비용
  • 새로운 마이크로 소프트 익스텐션 : Visual C++ for IoT Development와 Visual C++ for Linux Development는 버그가 있지만, 모든 빌드마다 모든 파일을 복사하기 때문에 "Linux 방식"으로 구성하기가 어렵습니다 (전체 make/cmake 지원, 원격 컴퓨터에서 절대 포함 경로를 사용해야 함) 또한 Intellisense는 작동하지 않습니다. 어.

그래서 저는 Visual Studio보다 덜 제한적인 것을 시도하지만 다소 비슷한 품질과 워크 플로우로 시도하고 있습니다. 현재 가장 좋은 옵션은 QtCreator 인 것 같습니다. 나는 윈도우 머신 접근 방식은 지원 또는 더 나은 작동합니다

을 실행 QtCreator에서 Linux 용 건물을 달성하려면 어떻게

는 QtCreator와 함께 (자동 완성 및 디버깅 편의를 제공합니다) - & 복사 바이너리를 크로스 컴파일 GDB를 시작하거나 프로젝트를 원격으로 빌드 할 수 있습니다 (하지만 Samba 공유 폴더에 구축 할 경우 파일을 복사하지 않을 수있는 옵션 포함)? 접근 방식은 지원 또는 더 나은 작동합니다

+0

저는 Qt 작성자를 사용해 봤는데 좋은 경험이었습니다. x86v6 Linux를 armv7 Linux에 사용 했습니까? 그러나 실제 툴체인을 얻는 것은 꽤 쉬웠습니다. ARM 용으로 크로스 컴파일 할 수있는 크로스 툴 체인을 Windows에 사용할 수 있습니까? IDE와 관련이 없습니다. – TheMeaningfulEngineer

+1

[이 게시물은 도움이 될 수 있습니다] (http://stackoverflow.com/questions/11420984/qtcreator-on-windows-to-cross-compile-for-linux-arm-with-codesourcery-toolchain). SDK, 툴체인 및 크로스 컴파일러가있는 한, QTCreator 킷을 구성하여 필요한 작업을 수행 할 수 있습니다. – LPs

+0

@Alan - 툴체인은 문제가되지 않아야합니다 - 거기에는 많은 옵션이 있지만 QtCreator로 어떤 옵션이 더 잘 작동하는지 모르기 때문에 크로스 컴파일 또는 원격 컴파일해야하는지 잘 모르겠습니다. IDE에서 자동 완성, 오류 강조 표시, 디버깅을 고려합니다. – JustAMartin

답변

1

는 크로스 툴체인은, 선택에 대한 내 가장 큰 매개 변수 문제가되지 않습니다 말을 감안할 때 QtCreator

와 함께 (자동 완성 및 디버깅 편의를 제공) 프로젝트의 크기와 컴파일 시간이 될 것입니다. 몇 분 안에 빌드를 교차 구축 할 수있는 프로젝트라면 로컬 옵션으로 갈 것입니다.

크로스 컴파일시 전제 조건에 대한 몇 가지 참고 사항 : 장치의 sysroot가 있어야합니다. 크로스 컴파일 링을 사용하면 링커에서 동적으로 링크되지 않은 모든 적절한 라이브러리를 얻을 수 있습니다.

원격 디버깅 할 때 다음과 같은 유용한 정보를 발견했습니다. gdb 및 gdbserver라는 두 가지 디버깅 응용 프로그램이 있어야합니다. Gdbserver는 호스트 컴퓨터에서 gdb를 실행하는 동안 임베디드 장치에서 실행됩니다. 런타임에 코드를 단계별로 실행하려면 디버깅 기호로 교차 컴파일해야합니다. 장치에 충분한 메모리가 있으면 디버깅 기호가있는 전체 바이너리를 장치에 배포 할 수 있습니다.

이것은 큰 주제입니다. 나는 답을 단계별로 구성 할 수 있도록 하위 질문을하는 것이 좋습니다.