我在交叉編譯與gstreamer相關的項目時遇到了極大的麻煩。我想鏈接到我的交叉編譯機器上的庫/usr/lib
指定要在Automake中鏈接的精確庫
如果我做標準鏈接器標記-L{FILESYS_DIR}/usr/lib -lGLESv2
我從我的交叉編譯工具鏈中得到pthread投訴。因此,我試圖鏈接到這個庫,而不使用-L
標誌。
無論我做什麼,我得到undefined symbol glFramebuffer2D.
然而,快速readelf -Wc $FILESYS_DIR/usr/lib/libGLESv2.so | glFrame
顯示我glFramebuffer2D符號。
我拉我的頭髮,因爲不管我指定的autoconf什麼旗,除非我用的是-L -l
方法叫做libtool的扔掉我的鏈接請求......
編輯:我有另外的想法,我嘗試了-Wl, $FILESYS_DIR/usr/lib/libGLESv2.so
,它在編譯和鏈接過程中工作,但不在運行時期間......對我來說很明顯(現在),因爲主機根目錄是$ FILESYS_DIR。無論如何,這是正確的方法,但我想我需要相對名稱。
libtool: link: arm-none-linux-gnueabi-gcc -shared .libs/libgstbla_la-gstblaoverlay.o
.libs/libgstbla_la-gstblastabilize.o .libs/libgstbla_la-gles2_utilities.o -Wl,-
rpath -Wl,/home/z3/z3-netra/filesys/fs//opt/gstreamer-0.4/lib -Wl,-rpath -
Wl,/home/z3/z3-netra/filesys/fs//opt/gstreamer-0.4/lib -L/home/z3/z3-
netra/filesys/fs/opt/gstreamer/lib /home/z3/z3-netra/filesys/fs//opt/gstreamer-
0.4/lib/libgstbase-0.10.so /home/z3/z3-netra/filesys/fs//opt/gstreamer-
0.4/lib/libgstreamer-0.10.so /home/z3/z3-netra/filesys/fs//opt/gstreamer-
0.4/lib/libgstvideo-0.10.so /home/z3/z3-netra/filesys/fs//opt/gstreamer-
0.4/lib/libgobject-2.0.so /home/z3/z3-netra/filesys/fs//opt/gstreamer-
0.4/lib/libgmodule-2.0.so /home/z3/z3-netra/filesys/fs//opt/gstreamer-
0.4/lib/libgthread-2.0.so -lrt /home/z3/z3-netra/filesys/fs//opt/gstreamer-
0.4/lib/libglib-2.0.so -pthread -Wl,-soname -Wl,libgstbla.so -Wl,-version-script -
Wl,.libs/libgstbla.ver -o .libs/libgstbla.so
如果需要的話,在一個行,以及:
libtool: link: arm-none-linux-gnueabi-gcc -shared .libs/libgstbla_la-gstblaoverlay.o .libs/libgstbla_la-gstblastabilize.o .libs/libgstbla_la-gles2_utilities.o -Wl,-rpath -Wl,/home/z3/z3-netra/filesys/fs//opt/gstreamer-0.4/lib -Wl,-rpath -Wl,/home/z3/z3-netra/filesys/fs//opt/gstreamer-0.4/lib -L/home/z3/z3-netra/filesys/fs/opt/gstreamer/lib /home/z3/z3-netra/filesys/fs//opt/gstreamer-0.4/lib/libgstbase-0.10.so /home/z3/z3-netra/filesys/fs//opt/gstreamer-0.4/lib/libgstreamer-0.10.so /home/z3/z3-netra/filesys/fs//opt/gstreamer-0.4/lib/libgstvideo-0.10.so /home/z3/z3-netra/filesys/fs//opt/gstreamer-0.4/lib/libgobject-2.0.so /home/z3/z3-netra/filesys/fs//opt/gstreamer-0.4/lib/libgmodule-2.0.so /home/z3/z3-netra/filesys/fs//opt/gstreamer-0.4/lib/libgthread-2.0.so -lrt /home/z3/z3-netra/filesys/fs//opt/gstreamer-0.4/lib/libglib-2.0.so -pthread -Wl,-soname -Wl,libgstbla.so -Wl,-version-script -Wl,.libs/libgstbla.ver -o .libs/libgstbla.so
您可以使用'-Wl,-rpath'兩次,而無需實際設置運行時路徑。將它們設置爲目標系統上的有效庫路徑,並且希望它可以更好地工作。 –
有趣的是,請注意,鏈接調用是由Automake爲我生成的。我會環顧四周,看看我能否解決這個具體問題。 – Constantin
當你說「不管我指定給autoconf的標誌是什麼」,你指的是你指定給configure腳本的標誌嗎? –