2010-03-09 3 views
3

최근 Linux 머신에 Qt 임베디드 데모 소스 코드를 다운로드했습니다. 다음은 프로그램 실행 중 결과입니다.공유 라이브러리로 컴파일 된 Qt 애플리케이션 패키징

  1. x86 시스템에서 정적으로 컴파일하고 x86 시스템에서 잘 실행되는 응용 프로그램을 실행합니다. 하지만 정적으로 컴파일 된 바이너리 파일을 Atom 플랫폼이있는 다른 컴퓨터에 가져 가면 일부 누락 된 위젯과 함께 실행됩니다. 나는 플러그인이 정적 컴파일로 이식 될 수 없다는 것을 발견했다. 아무도 그것이 사실이라고 말해 줄 수 있습니까? 아무도 나에게 그것을위한 단계를 말할 수 없다면?
  2. 공유 라이브러리를 사용하여 동적으로 컴파일했습니다. 그런 다음 리눅스에서 executalbe를 얻었습니다. 나는 "ldd MyAppName"을했다. 그것은 내가 사용하고있는 공유 라이브러리 파일을 보여줍니다. 그러나 나는 이것들을 포장하는 방법을 모른다. 아무도 그것을 포장 단계를 말해 줄 수 있습니까?

X11-Linux 플랫폼에서 qt 응용 프로그램을 배치하는 방법에 대한 기사를 확인했습니다. 그러나 그것은 완전하지 않습니다. 아무도 나에게 세부적인 단계를 줄 수 있습니까?

어떤 도움을 이해할 수있을 것이다 ......

답변

1

난 그냥 내 응용 프로그램을 동적으로 컴파일하고 원자 플랫폼으로 이식했습니다. 나는 종속물을 찾아서 그것들을 포팅하고 포팅 된 공유 라이브러리에 대상 머신의 환경 변수 LD_LIBRARY_PATH를 설정했다. 여러분의 제안에 감사드립니다.

2

당신이 중 하나가 배포판, 그것은을 지원하는 컴파일되지 않은 does'nt 지원 원자 또는 라이브러리. 어느 쪽이든 - 귀하의 시스템 어딘가에 원자가 컴파일되지 않았습니다.

+0

저는 배포판 우분투와 현재 원자 기계에서 실행 중입니다. 난 그냥 qt 응용 프로그램을 개발, 컴파일 및 링크를 누른 다음 우분투 리눅스를 실행하는 대상 원자 기계에 포트 싶어요 필요합니다. 하지만 동적으로 링크 된 응용 프로그램을 패키지하는 방법을 모릅니다. 그걸 도와 주실 수 있겠습니까? –

1

귀하의 앱을 컴파일하고 해당 라이브러리 (정적 또는 동적)가 Atom이 아닌 x86에서 작동한다는 것입니다. 어쩌면 당신은 일종의 뚱뚱한 바이너리 (lipo?)를 만들 수있어, 여러분의 응용 프로그램은 x86과 Atom에서 작동하지만, x86 전용 라이브러리를 사용하는 비트는 Atom에서 작동하지 않습니다. (맞습니까? 문제의 간결한 정의입니까?)

Atom에서 실행되지 않는 라이브러리의 소스 코드가 있고이 코드가 중요한 경우 코드를 Atom으로 이식하는 것을 고려해야합니다. 오픈 소스 코드라면 프로젝트에 기여할 수 있습니다. 여러분이 많은 세부 사항을 제시하지는 않았지만, 이것에 대한 (매우 일반적인) 접근법은 Atom 시스템에서 코드를 얻고, 라이브러리에 대한 매우 짧은 테스트 애플리케이션을 작성하고, 문제를 해결하는 것입니다.

Re : 2 : 앱을 컴파일하고 공유 라이브러리 또는 동적 라이브러리에 링크하는 데 약간의 차이가 있습니다. x86 시스템에서 동적 라이브러리로 컴파일 된이 코드 (이 "플러그인")를 사용하면 정적으로 해당 바이너리를 응용 프로그램에 연결하는 것과 거의 같습니다. 이 라이브러리는 동적 또는 정적으로 링크되어 있는지에 관계없이 x86에서 작동합니다.

그게 도움이되는지 잘 모르겠다. 바이너리 Qt 플러그인을 소스가없는 정적 또는 동적 라이브러리로 사용한다면 운이 없다. 버그 보고서를 제출하십시오. 소스 코드가 있다면 훨씬 더 많이 할 수 있습니다.

+0

실제로 내 대상 컴퓨터에는 원자 프로세서가 있고 정적으로 링크 된 실행 파일을 실행할 수 있기 때문에 프로세서가 문제가 아니라고 생각합니다 (주 GUI는 작동하지만 일부 위젯이 누락되었습니다). 플랫폼이 문제가된다면 전혀 움직이지 않을 것입니다. 동적으로 링크 된 Qt 애플리케이션을 패키지하는 방법을 알아야합니다. 내가 공유 라이브러리를 알고 있다면 그것을 구성합니다.동적으로 링크 된 QT 애플리케이션을 패키지하는 방법을 알려주십시오. 미안 해요? –

+0

그래서 공유 라이브러리는 Atom에서 작동합니까? 동적으로 링크 된 응용 프로그램을 배포 할 때의 문제점은 종속성입니다. 대상 컴퓨터에 해당 라이브러리의 올바른 버전이 설치되어 있어야합니다. 이것은 내 전문 지식 밖에서 조금 있지만 dylib를 설치하는 RPM 또는 deb (또는 무엇이든) 패키지를 만들거나 최소한 필요한 종속성으로 나열하는 것이 좋을 것 같습니다. 더러운 해킹을하고 배포판에 dylib를 포함시키고 설치 스크립트를 만들 수도 있습니다. (오류가 발생하기 쉬운, 등 ...) 당신의 경우에, 정적 연결 오른쪽 느낌. 나는 네가 어떻게하는지 모르겠다. 그래서 나는 정말로 도울 수 없다. 더? – jibberia