c - ARM 交叉编译 GLib 2.33.10,链接器错误

标签 c linux arm cross-compiling glib

我是新手,正在研究 Raspberry Pi。我对 GLIB 2.33.10 交叉编译有疑问。 我已经从站点和所有依赖项(zlib、ffi)下载了源代码;已经为 ARM 很好地构建了依赖项(在 Raspberry 上测试)。我目前正在使用 arm-bcm2708hardfp-linux-gnueabi 工具链。

我的配置命令行如下:

$ ZLIB_CFLAGS=-I/home/myuser/cross_lib/include/libzlib \
ZLIB_LIBS="-L/home/myuser/cross_lib/lib/libzlib/raspberry -lz" \
LDFLAGS="-L/home/myuser/cross_lib/libffi/lib -lffi -L/home/myuser/cross_lib/lib/libzlib/raspberry -lz" 
LIBFFI_CFLAGS=-I/home/myuser/cross_lib/libffi/lib/libffi-3.0.11/include \
LIBFFI_LIBS="-L/home/myuser/cross_lib/libffi/lib -lffi" \
./configure --host=arm-bcm2708hardfp-linux-gnueabi glib_cv_stack_grows=yes \
glib_cv_uscore=yes ac_cv_func_posix_getpwuid_r=no \
ac_cv_func_posix_getgrgid_r=no --with-libiconv=no --without-pcre \
--enable-gtk-doc-html=no --enable-xattr=no --prefix=/home/cross_lib/glib23

如您所见,我已禁用 iconv 和 pcre(这只是一个测试版本);配置脚本没问题(好像没问题。。。)。当开始构建过程时,它会持续一段时间(编译大量代码)然后卡在链接阶段:

/opt/tools/arm-bcm2708/arm-bcm2708hardfp-linux-gnueabi/bin/../lib/gcc/arm-bcm2708hardfp-linux gnueabi/4.7.1/../../../../arm-bcm2708hardfp-linux-gnueabi/bin/ld: warning: libgthread-2.0.so.0, needed by ../gobject/.libs/libgobject-2.0.so, not found (try using -rpath or -rpath-link)
/opt/tools/arm-bcm2708/arm-bcm2708hardfp-linux-gnueabi/bin/../lib/gcc/arm-bcm2708hardfp-linux-gnueabi/4.7.1/../../../../arm-bcm2708hardfp-linux-gnueabi/bin/ld: warning: libgmodule-2.0.so.0, needed by ./.libs/libgio-2.0.so, not found (try using -rpath or -rpath-link)
./.libs/libgio-2.0.so: undefined reference to `g_module_close'
./.libs/libgio-2.0.so: undefined reference to `g_module_symbol'
./.libs/libgio-2.0.so: undefined reference to `g_module_supported'
./.libs/libgio-2.0.so: undefined reference to `g_module_open'
./.libs/libgio-2.0.so: undefined reference to `g_module_error'
collect2: error: ld returned 1 exit status
make[4]: *** [glib-compile-resources] Errore 1
make[4]: uscita dalla directory "/home/myuser/cross_lib/source/glib-2.33.10/gio"
make[3]: *** [all-recursive] Errore 1
make[3]: uscita dalla directory "/home/myuser/cross_lib/source/glib-2.33.10/gio"
make[2]: *** [all] Errore 2
make[2]: uscita dalla directory "/home/myuser/cross_lib/source/glib-2.33.10/gio"
make[1]: *** [all-recursive] Errore 1
make[1]: uscita dalla directory "/home/myuser/cross_lib/source/glib-2.33.10"
make: *** [all] Errore 2

这对我来说似乎是一个奇怪的错误,它找不到自己的库...但我不是专家...有人可以帮助我吗?谢谢你的建议,请原谅我的英语不好

最佳答案

只需在 LDFLAGS 末尾添加 -lgmodule-2.0

关于c - ARM 交叉编译 GLib 2.33.10,链接器错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12218076/

相关文章:

c++ - 多线程应用程序中的独立日志记录

c - 如何将格式数据添加到 c 程序的文本输出?

C:带有 printf 的代码与没有 printf 的代码的区别

c++ - QtCUrl post 不再有效(Linux 正常...windows 正常)

ubuntu - ARM 嵌入式的交叉编译

c - 有没有办法防止编译器搞乱内联汇编

c - 函数、结构、复合文字、不正确的输出

java - 安卓/Linux : Log (power) key usage on lower system level

c++ - 使用 gcc/g++/gdb/valgrind 调试时的魔数(Magic Number)?

linux - ARM内核内存布局