簡體   English   中英

為ARM平台編譯庫時出錯

[英]Error while compiling library for ARM platform

我正在使用工具鏈為ARM編譯gst-plugins-bad。 我編譯了構建它所需的所有內容,包括gstreamer,libmms等...,並將與pkg-config相關的標頭,庫和文件都放在了sysroot中。

當我配置everyhhing似乎還可以,但是嘗試編譯結果如下:

luca@luca-work-laptop:~/gstreamer/gst-plugins-bad-0.10.21$ make
make  all-recursive
make[1]: Entering directory `/home/luca/gstreamer/gst-plugins-bad-0.10.21'
Making all in gst-libs
make[2]: Entering directory `/home/luca/gstreamer/gst-plugins-bad-0.10.21/gst-libs'
Making all in gst
make[3]: Entering directory `/home/luca/gstreamer/gst-plugins-bad-0.10.21/gst-libs/gst'
Making all in interfaces
make[4]: Entering directory `/home/luca/gstreamer/gst-plugins-bad-0.10.21/gst-libs/gst/interfaces'
make  all-am
make[5]: Entering directory `/home/luca/gstreamer/gst-plugins-bad-0.10.21/gst-libs/gst/interfaces'
make[5]: Nothing to be done for `all-am'.
make[5]: Leaving directory `/home/luca/gstreamer/gst-plugins-bad-0.10.21/gst-libs/gst/interfaces'
make[4]: Leaving directory `/home/luca/gstreamer/gst-plugins-bad-0.10.21/gst-libs/gst/interfaces'
Making all in signalprocessor
make[4]: Entering directory `/home/luca/gstreamer/gst-plugins-bad-0.10.21/gst-libs/gst/signalprocessor'
make[4]: Nothing to be done for `all'.
make[4]: Leaving directory `/home/luca/gstreamer/gst-plugins-bad-0.10.21/gst-libs/gst/signalprocessor'
Making all in video
make[4]: Entering directory `/home/luca/gstreamer/gst-plugins-bad-0.10.21/gst-libs/gst/video'
  CC     libgstbasevideo_0.10_la-gstbasevideoutils.lo
  CC     libgstbasevideo_0.10_la-gstbasevideocodec.lo
  CC     libgstbasevideo_0.10_la-gstbasevideodecoder.lo
  CC     libgstbasevideo_0.10_la-gstbasevideoencoder.lo
  CC     libgstbasevideo_0.10_la-gstbasevideoparse.lo
  CCLD   libgstbasevideo-0.10.la
libtool: link: warning: library `/home/luca/.../arm-2010q1_vsync/arm-none-linux-gnueabi/libc/usr/lib/libgstbase-0.10.la' was moved.
libtool: link: warning: library `/home/luca/.../arm-2010q1_vsync/arm-none-linux-gnueabi/libc/usr/lib/libgstreamer-0.10.la' was moved.
libtool: link: warning: library `/home/luca/.../arm-2010q1_vsync/arm-none-linux-gnueabi/libc/usr/lib/libgobject-2.0.la' was moved.
libtool: link: warning: library `/home/luca/.../arm-2010q1_vsync/arm-none-linux-gnueabi/libc/usr/lib/libgmodule-2.0.la' was moved.
libtool: link: warning: library `/home/luca/.../arm-2010q1_vsync/arm-none-linux-gnueabi/libc/usr/lib/libgthread-2.0.la' was moved.
libtool: link: warning: library `/home/luca/.../arm-2010q1_vsync/arm-none-linux-gnueabi/libc/usr/lib/libglib-2.0.la' was moved.
libtool: link: warning: library `/home/luca/.../arm-2010q1_vsync/arm-none-linux-gnueabi/libc/usr/lib/libgstvideo-0.10.la' was moved.
/usr/lib/libxml2.so: could not read symbols: File in wrong format
collect2: ld returned 1 exit status
make[4]: *** [libgstbasevideo-0.10.la] Error 1
make[4]: Leaving directory `/home/luca/gstreamer/gst-plugins-bad-0.10.21/gst-libs/gst/video'
make[3]: *** [all-recursive] Error 1
make[3]: Leaving directory `/home/luca/gstreamer/gst-plugins-bad-0.10.21/gst-libs/gst'
make[2]: *** [all-recursive] Error 1
make[2]: Leaving directory `/home/luca/gstreamer/gst-plugins-bad-0.10.21/gst-libs'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/home/luca/gstreamer/gst-plugins-bad-0.10.21'
make: *** [all] Error 2

似乎它正在嘗試鏈接到我的桌面libxml2。 為什么它不與我的工具鏈中所有符號都鏈接在一起?

您確定您的工具鏈具有libxml2嗎? 或者,您的sysroot。

您可能需要導出PKG_CONFIG,因此,當您運行'pkg-config --libs libxml-2.0'時,您將獲得正確的路徑。 另外,您可以檢查生成的Makefile來查看使用的真正標志,或者在啟用verbose選項的情況下進行構建。

GStreamer的構建內容也有可能因交叉編譯而被破壞,這就是我使用暫存器2的原因之一; 它使交叉編譯變得透明。

您的配置腳本是否支持autoconf交叉編譯? 在configure.in中,調用AC_PROG_CC之后,shell變量cross_compiling的值是什么?

如果將其設置為no,那么是否將makefile設置為使用交叉編譯器?

要設置它們,您可以在手冊中覆蓋它們,也可以使用下面的示例中的環境變量

導出CC = arch-gcc導出CXX = arch-c ++導出arch-ld導出AR = arch-ar導出AS = arch-as導出NM = arch-nm導出STRIP = arch-strip

如果將其設置為yes,則檢查makefile中專門針對libxml的include路徑。

以下指南是在ARM上編譯gst-plugins-bad的另一種可能的資源:

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM