我正试图为我的嵌入式Linux设备交叉编译忙碌盒V1.27.2.我将共享库构建和交叉编译器前缀以及Sysroot设置为我的编译器目标。编译器在尝试编译大多数库文件后无法链接它们。我收到了这个:
Trying libraries: crypt m
Failed: -Wl,--start-group -lcrypt -lm -Wl,--end-group
Output of:
/home/bluebird/brcm-armtools-64bit/tools/le_arm11_external_20090306/bin/arm-brcm-linux-gnueabi-gcc -Wall -Wshadow -Wwrite-strings -Wundef -Wstrict-prototypes -Wunused -Wunused-parameter -Wunused-function -Wunused-value -Wmissing-prototypes -Wmissing-declarations -Wno-format-security -Wdeclaration-after-statement -Wold-style-definition -fno-builtin-strlen -finline-limit=0 -fomit-frame-pointer -ffunction-sections -fdata-sections -fno-guess-branch-probability -funsigned-char -static-libgcc -falign-functions=1 -falign-jumps=1 -falign-labels=1 -falign-loops=1 -fno-unwind-tables -fno-asynchronous-unwind-tables -fno-builtin-printf -Os -fpic -fvisibility=hidden --sysroot=/home/bluebird/brcm-armtools-64bit/tools/le_arm11_external_20090306/sysroot -o busybox_unstripped -Wl,--sort-common -Wl,--sort-section,alignment -Wl,--gc-sections -Wl,--start-group applets/built-in.o archival/lib.a archival/libarchive/lib.a console-tools/lib.a coreutils/lib.a coreutils/libcoreutils/lib.a debianutils/lib.a e2fsprogs/lib.a editors/lib.a findutils/lib.a init/lib.a libbb/lib.a libpwdgrp/lib.a loginutils/lib.a mailutils/lib.a miscutils/lib.a modutils/lib.a networking/lib.a networking/libiproute/lib.a networking/udhcp/lib.a printutils/lib.a procps/lib.a runit/lib.a selinux/lib.a shell/lib.a sysklogd/lib.a util-linux/lib.a util-linux/volume_id/lib.a archival/built-in.o archival/libarchive/built-in.o console-tools/built-in.o coreutils/built-in.o coreutils/libcoreutils/built-in.o debianutils/built-in.o e2fsprogs/built-in.o editors/built-in.o findutils/built-in.o init/built-in.o libbb/built-in.o libpwdgrp/built-in.o loginutils/built-in.o mailutils/built-in.o miscutils/built-in.o modutils/built-in.o networking/built-in.o networking/libiproute/built-in.o networking/udhcp/built-in.o printutils/built-in.o procps/built-in.o runit/built-in.o selinux/built-in.o shell/built-in.o sysklogd/built-in.o util-linux/built-in.o util-linux/volume_id/built-in.o -Wl,--end-group -Wl,--start-group -lcrypt -lm -Wl,--end-group
==========
coreutils/lib.a(mktemp.o): In function `mktemp_main':
mktemp.c:(.text.mktemp_main+0xbc): warning: the use of `mktemp' is dangerous, better use `mkstemp'
coreutils/lib.a(touch.o): In function `touch_main':
touch.c:(.text.touch_main+0x1f4): warning: warning: lutimes is not implemented and will always fail
util-linux/lib.a(nsenter.o): In function `nsenter_main':
nsenter.c:(.text.nsenter_main+0x1b4): undefined reference to `setns'
coreutils/lib.a(sync.o): In function `sync_main':
sync.c:(.text.sync_main+0x9c): undefined reference to `syncfs'
collect2: ld returned 1 exit status
Note: if build needs additional libraries, put them in CONFIG_EXTRA_LDLIBS.
Example: CONFIG_EXTRA_LDLIBS="pthread dl tirpc audit pam"
make: *** [busybox_unstripped] Error 1
我libm.so的sysroot目录中也有www.example.com。
**编辑:**我也尝试buildroot,但它需要一些关于处理器的信息(例如:endian,详细版本等),我不知道,这是一个黑盒设备,我只在它上开发应用程序,总的信息,我有它运行在BCM 5892,从www.example.com的ARM 11安全处理器broadcom.it运行kenel V 2.6和arm-brcm-linux-gnueabi V4.4.2编译器,我也正确地设置sysroot和交叉编译器前缀,但我怎么知道我使用的libc的版本?
3条答案
按热度按时间niwlg2el1#
打开busybox menuconfig并禁用“启用-d和-f标志”
使用较新版本的uclibc(> 0.9.33)可以允许启用该选项。
h4cxqtbf2#
如果您不介意错过busybox的这些特性,那么需要禁用两个功能来解决编译问题。
1.同步的“启用-d和-f标志”
1.恩森特
sync
设置可通过menuconfig访问(busybox 1.36):nsenter
可通过menuconfig访问(busybox 1.36):6gpjuf903#
您可以通过检查此链接目标的名称来检测您的glibc版本:
这表示glibc版本为2.10.2。但为了确保你也可以这样做:
当我在为SH 4内核www.example.com编译busybox-1.30.1时遇到类似的问题2.6.32.59,我不得不防止nsenter.c和sync.c被Makefile编译。
因此,在您的情况下,您可以尝试更改您的.config文件。
以下是您可以遵循的步骤:
希望这能帮上忙。