2014-03-02 2 views
2

여기가 내 첫 번째 질문입니다. :) 내 Archlinux x86_64 시스템에서 VideoData을 컴파일해야합니다 (우분투 12.04 x86에서 컴파일 할 수 있지만 유용하지 않습니다).하지만 ld에서 오류가 발생합니다.x86_64 호스트에서 RTI DDS + GStreamer 응용 프로그램 x86을 교차 컴파일 (ld 실패)

Here

그러나 가장 중요한 부분은, 내 의견으로는,이 : 영어의

/usr/bin/ld: se salta el /usr/lib/libdl.so incompatible mientras se busca -ldl 
/usr/bin/ld: se salta el /usr/lib/libdl.a incompatible mientras se busca -ldl 
/usr/bin/ld: se salta el /usr/lib/libnsl.so incompatible mientras se busca -lnsl 
/usr/bin/ld: se salta el /usr/lib/libpthread.so incompatible mientras se busca -lpthread 
/usr/bin/ld: se salta el /usr/lib/libpthread.a incompatible mientras se busca -lpthread 
/usr/bin/ld: se salta el /usr/lib/librt.so incompatible mientras se busca -lrt 
/usr/bin/ld: se salta el /usr/lib/libglib-2.0.so incompatible mientras se busca -lglib-2.0 
/usr/bin/ld: se salta el /usr/lib/libgstreamer-0.10.so incompatible mientras se busca -lgstreamer-0.10 
/usr/bin/ld: se salta el /usr/lib/libgstapp-0.10.so incompatible mientras se busca -lgstapp-0.10 
/usr/bin/ld: se salta el /usr/lib/libstdc++.so incompatible mientras se busca -lstdc++ 
/usr/bin/ld: se salta el /usr/lib/libstdc++.a incompatible mientras se busca -lstdc++ 
/usr/bin/ld: se salta el /usr/lib/libm.so incompatible mientras se busca -lm 
/usr/bin/ld: se salta el /usr/lib/libm.a incompatible mientras se busca -lm 
/usr/bin/ld: se salta el /usr/lib/libc.so incompatible mientras se busca -lc 
/usr/bin/ld: se salta el /usr/lib/libc.a incompatible mientras se busca -lc 
/usr/bin/ld: objs/i86Linux3.xgcc4.6.3/Common/VideoSource.o: referencia sin definir al símbolo 'g_object_set' 
/usr/lib32/libgobject-2.0.so.0: error adding symbols: DSO missing from command line 
collect2: error: ld devolvió el estado de salida 1 
make/Makefile.common:135: recipe for target 'objs/i86Linux3.xgcc4.6.3/VideoPublisher/VideoPublisher.out' failed 
make: *** [objs/i86Linux3.xgcc4.6.3/VideoPublisher/VideoPublisher.out] Error 1 

이러한 오류는 내가 그 32 비트 라이브러리와 호환되지라고 생각

/usr/bin/ld: skipping incompatible /usr/lib/libdl.so when searching for -ldl 
... 
... 
... 

입니다 그러나 나는 그것을 해결할 수 없다. 이 모든 것을 설치했습니다.

[[email protected] ~]$ pacaur -Qs gstreamer0.10 
local/gstreamer0.10 0.10.36-3 
    GStreamer Multimedia Framework 
local/gstreamer0.10-bad 0.10.23-7 
    GStreamer Multimedia Framework Bad Plugin libraries (gst-plugins-bad) 
local/gstreamer0.10-bad-plugins 0.10.23-7 (gstreamer0.10-plugins) 
    GStreamer Multimedia Framework Bad Plugins (gst-plugins-bad) 
local/gstreamer0.10-base 0.10.36-2 
    GStreamer Multimedia Framework Base plugin libraries 
local/gstreamer0.10-base-plugins 0.10.36-2 (gstreamer0.10-plugins) 
    GStreamer Multimedia Framework Base Plugins (gst-plugins-base) 
local/gstreamer0.10-ffmpeg 0.10.13-2 (gstreamer0.10-plugins) 
    Gstreamer FFMpeg Plugin 
local/gstreamer0.10-good 0.10.31-4 
    GStreamer Multimedia Framework Good plugin libraries 
local/gstreamer0.10-good-plugins 0.10.31-4 (gstreamer0.10-plugins) 
    GStreamer Multimedia Framework Good Plugins (gst-plugins-good) 
local/gstreamer0.10-ugly 0.10.19-9 
    GStreamer Multimedia Framework Ugly plugin libraries 
local/gstreamer0.10-ugly-plugins 0.10.19-9 (gstreamer0.10-plugins) 
    GStreamer Multimedia Framework Ugly Plugins (gst-plugins-ugly) 
local/lib32-gstreamer0.10 0.10.36-2 
    GStreamer Multimedia Framework 
local/lib32-gstreamer0.10-base 0.10.36-5 
    GStreamer Multimedia Framework Base plugin libraries 
local/lib32-gstreamer0.10-base-plugins 0.10.36-5 
    GStreamer Multimedia Framework Base Plugins (gst-plugins-base) 

gcc-multilib도 있습니다. 내가 뭘 할 수 있는지 모르겠어. 어떤 도움이라도? :)

대단히 감사합니다! 그리고 내 영어에 대한 미안 해요 :)

감사합니다!

+0

그럼 어떤 대상으로 만드시겠습니까? 실제로 64 비트 아키텍처에서 32 비트로 크로스 컴파일하고 있습니까? 아니면 64 비트 아키텍처에서 빌드하려고 시도합니까? –

답변

1

나는 당신과 같은 문제가 있었지만, Makefile을 수정 한 후에 32 비트 용 x86_64 아치 리눅스에서 응용 프로그램을 크로스 컴파일 할 수있었습니다. Here은 메이크 파일입니다. 는/usr/lib32 대신은/usr/lib에

  • 이 라이브러리 -lgobject-2.0를 추가 가리 키도록

    1. 이 연결 단계에서 -L 플래그를 수정

      는 기본적으로 난 두 가지 변경을해야 LIBS 변수에 추가하십시오.

    이 두 가지 변경 사항을 적용하면 32 비트 용 VideoData 데모를 빌드 할 수 있습니다. 오류는 ArchLinux의 multilib 레이아웃이 CentOS와 다르므로 발생했습니다

    x86_64에서 32 비트 VideoData 데모를 실행하려면 32 버전의 Gstreamer 플러그인도 설치해야합니다. 이 플러그인 중 일부는 multilib 저장소에서 사용할 수 없으므로 직접 작성해야합니다. 또 다른 방법은 32 비트 chroot 환경을 만드는 것입니다.

  • +0

    고마워요! 그것은 위대한 컴파일합니다 :). lib32-gstreamer 플러그인도 설치해야했습니다. 다시 한 번 감사드립니다! – analca3

    0

    실제로, 32 비트로 크로스 컴파일해야한다고 설명했습니다. 그래서 제 대답은 당신의 질문에 정확하게 대답하지 못합니다. 64 비트 컴퓨터에서 예제를 빌드하는 데 유용한 정보가 포함되어 있으므로 여기에 그대로 두겠습니다.


    나는이 문제를 CentOS 6.5, 64 비트에서 빌드하려고 시도했습니다.

    이러한 문제를 해결하기 위해 새 메이크 파일 make\Makefile.x64Linux2.6gcc4.4.5을 만들었습니다. 이것은 기존 Makefile.i86Linux2.6gcc4.4.5에서 파생되었지만 -m32 플래그가 제거 된 경우 RTI_64BIT에 대한 정의가 추가되고 설치된 DDS 버전 (x64Linux2.6gcc4.4.5)의 64 비트 아키텍처 이름과 일치하는 아키텍처 이름이 정의됩니다.

    또한 make\Makefile.common이 작동하려면 조정해야했습니다. 그 파일에서 과 gstreamer-0.10에 대한 컴파일러와 링커 옵션을 수정하기 위해 관련성이있는 것으로 보이는 곳에서 pkg-config이 필요했습니다.

    정확히 어떤 것이 문제를 일으켰는지 확실하지 않습니다. 아마도 pastebin.com에 넣은 파일을 시도해 볼 수 있으며 실제로 작동하는지 확인할 수 있습니다.

    덧붙여서, pastebin에 붙여 넣은 메이크 파일은, 공백으로 바뀐 (처음부터) TAB입니다. 그렇게하면 프로세스가 망가질 것이므로 수동으로 수정해야합니다. 미안하지만, 나는 그 주위를 알지 못합니다.

    +0

    크로스 컴파일이 필요했지만 감사합니다! 깃발을 생성하는 Pkg-config 기술은 awsome입니다. 다음 번 문제 해결에 사용하겠습니다. :) – analca3

    +0

    죄송합니다. 그래도 문제가 해결되었다는 이야기를 듣고 반갑습니다. –

    관련 문제