交叉编译为树莓派的glib

时间:2017-11-26 02:04:21

标签: c linux cross-compiling glib

我正在尝试使用glib编译程序。我设置了所有包含路径,因此编译没有错误,但链接器找不到glib。

Invoking: Cross GCC Linker
arm-linux-gnueabihf-gcc -L/home/ja/raspberrypi/rootfs/usr/local/lib -L/home/ja/raspberrypi/rootfs/lib/arm-linux-gnueabihf  -o "daemon_test"  ./src/gpio/gpio.o  ./src/can/can_stuff.o ./src/can/libsocketcan.o  ./src/daemon_test.o   -lglib-2.0 -lwiringPi
/home/ja/raspberrypi/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian/bin/../lib/gcc/arm-linux-gnueabihf/4.8.3/../../../../arm-linux-gnueabihf/bin/ld: cannot find -lglib-2.0
makefile:32: recipe for target 'daemon_test' failed
collect2: error: ld returned 1 exit status
make: *** [daemon_test] Error 1

我为我的覆盆子pi设置了交叉编译器。它由eclipse和在debian上运行的gcc编译器组成。

很明显链接器找不到合适的文件。 在我的目标覆盆子pi我安装了libglib2.0-dev并且测试程序构建正常。所以我用rsync来更新我的交叉编译器的rootfs

rsync -rl --delete-after --safe-links pi@192.168.2.160:/{lib,usr,opt} $HOME/raspberrypi/rootfs

我的包含路径设置为与我的rpi上的pkg-config相同的值(根据rootfs位置调整)

pkg-config --libs --cflags glib-2.0

当我写这篇文章时,我在rpi和我的交叉编译器上搜索了“libglib”。我的rpi上有一个libglib-2.0.so,但在我的交叉编译器中它是一个libglib-2.0.so.0,它们的大小都相同。

我删除了“.0”并收到了新错误

warning: libpcre.so.3, needed by /home/ja/raspberrypi/rootfs/lib/arm-linux-gnueabihf/libglib-2.0.so, not found (try using -rpath or -rpath-link)

和一堆未定义的引用。问题是,该文件与libglib-2.0.so位于同一位置(重命名为libglib-2.0.so.0)

-L/home/ja/raspberrypi/rootfs/lib/arm-linux-gnueabihf 

任何人都有任何想法该怎么办?我花了一整天的时间......

0 个答案:

没有答案