为 arm 交叉编译 glibc,得到对一些展开函数的 undefined reference

标签 c linux arm cross-compiling glibc

现在我需要为我们的 armv7 soc 平台构建 glic-2.15。我按照以下步骤来构建它:

http://ftp.gnu.org/gnu/libc/ 下载并提取 glibc-2.15 和 glibc-ports

mkdir build-glibc
cd build-glibc
echo "CFLAGS += -D__ARM_ARCH_7__ -D__LINUX_ARM_ARCH__=7 -march=armv7 -U_FORTIFY_SOURCE -fno-stack-protector" > configparms
PATH={toolchain}/bin
BUILD_CC={build}/bin/gcc
CC={toolchain}/bin/arm-linux-gnueabihf-gcc
AR={toolchain}/bin/arm-linux-gnueabihf-ar
RANLIB={toolchain}/bin/arm-linux-gnueabihf-ranlib
../glibc-2.15/configure --prefix=/linaro-toolchain/ \
                        --exec-prefix=/linaro-toolchain/ \
                        --host=arm-linux-gnueabihf \
                        --build=i686-pc-linux-gnu \
                        --disable-profile --enable-add-ons=ports,nptl \
                        --enable-kernel=2.4.0 --with-tls --with-__thread \
                        --without-gd --without-cvs \
                        --with-headers=/linaro-toolchain/arm-linux-gnueabihf/libc/usr/include \
                        --disable-multilib --enable-shared \
                        libc_cv_forced_unwind=yes \
                        libc_cv_c_cleanup=yes \
                        lic_cv_gnu89_inline=yes lic_cv_ssp=no \
                        libc_cv_ctors_header=yes
make all

我遇到了很多问题并被这个问题困住了:

chmod 555 {glibc}/build-glibc/elf/sotruss.new
mv -f {glibc}/build-glibc/elf/sotruss.new {glibc}/build-glibc/elf/sotruss
gcc -nostdlib -nostartfiles -static -o {glibc}/build-glibc/elf/sln    {glibc}/build-glibc/csu/crt1.o {glibc}/build-glibc/csu/crti.o `gcc  --print-file-name=crtbegin.o` {glibc}/build-glibc/elf/sln.o  -Wl,--start-group {glibc}/build-glibc/libc.a -lgcc   -Wl,--end-group `gcc  --print-file-name=crtend.o` {glibc}/build-glibc/csu/crtn.o
{glibc}/build-glibc/libc.a(vfprintf.o):(.ARM.exidx+0x0): undefined reference to `__aeabi_unwind_cpp_pr0'
{glibc}/build-glibc/libc.a(vfprintf.o):(.ARM.exidx+0x8): undefined reference to `__aeabi_unwind_cpp_pr1'
{glibc}/build-glibc/libc.a(vfprintf.o):(.ARM.exidx.text.unlikely+0x8): undefined reference to `__aeabi_unwind_cpp_pr0'
{glibc}/build-glibc/libc.a(vfwprintf.o):(.ARM.exidx+0x0): undefined reference to `__aeabi_unwind_cpp_pr0'
{glibc}/build-glibc/libc.a(vfwprintf.o):(.ARM.exidx+0x8): undefined reference to `__aeabi_unwind_cpp_pr1'
{glibc}/build-glibc/libc.a(vfwprintf.o):(.ARM.exidx.text.unlikely+0x8): undefined reference to `__aeabi_unwind_cpp_pr0'
{glibc}/build-glibc/libc.a(libc-start.o):(.ARM.exidx+0x0): undefined reference to `__aeabi_unwind_cpp_pr0'
{glibc}/build-glibc/libc.a(libc-do-syscall.o):(.ARM.exidx+0x0): undefined reference to `__aeabi_unwind_cpp_pr0'
{glibc}/build-glibc/libc.a(bsearch.o):(.ARM.exidx+0x0): undefined reference to `__aeabi_unwind_cpp_pr0'
{glibc}/build-glibc/libc.a(msort.o):(.ARM.exidx+0x0): undefined reference to `__aeabi_unwind_cpp_pr0'
{glibc}/build-glibc/libc.a(fprintf.o):(.ARM.exidx+0x0): undefined reference to `__aeabi_unwind_cpp_pr1'
{glibc}/build-glibc/libc.a(printf.o):(.ARM.exidx+0x0): undefined reference to `__aeabi_unwind_cpp_pr1'
{glibc}/build-glibc/libc.a(iofclose.o): In function `_IO_acquire_lock_fct':
{glibc}/glibc-2.15/libio/libioP.h:969: undefined reference to `_Unwind_Resume'
{glibc}/build-glibc/libc.a(iofclose.o):(.ARM.extab+0x0): undefined reference to `__gcc_personality_v0'
{glibc}/build-glibc/libc.a(iofflush.o): In function `_IO_acquire_lock_fct':
{glibc}/glibc-2.15/libio/libioP.h:969: undefined reference to `_Unwind_Resume'
{glibc}/build-glibc/libc.a(iofflush.o):(.ARM.extab+0x0): undefined reference to `__gcc_personality_v0'
{glibc}/build-glibc/libc.a(iofopen.o):(.ARM.exidx+0x8): undefined reference to `__aeabi_unwind_cpp_pr0'
{glibc}/build-glibc/libc.a(iofputs.o): In function `_IO_acquire_lock_fct':
{glibc}/glibc-2.15/libio/libioP.h:969: undefined reference to `_Unwind_Resume'
{glibc}/build-glibc/libc.a(iofputs.o):(.ARM.extab+0x0): undefined reference to `__gcc_personality_v0'
{glibc}/build-glibc/libc.a(iogetdelim.o): In function `_IO_acquire_lock_fct':
{glibc}/glibc-2.15/libio/libioP.h:969: undefined reference to `_Unwind_Resume'
{glibc}/build-glibc/libc.a(iogetdelim.o):(.ARM.extab+0x0): undefined reference to `__gcc_personality_v0'
{glibc}/build-glibc/libc.a(wfileops.o): In function `_IO_acquire_lock_fct':
{glibc}/glibc-2.15/libio/../libio/libioP.h:969: undefined reference to `_Unwind_Resume'
{glibc}/build-glibc/libc.a(wfileops.o):(.ARM.extab+0x0): undefined reference to `__gcc_personality_v0'
{glibc}/build-glibc/libc.a(wfileops.o):(.ARM.exidx+0x0): undefined reference to `__aeabi_unwind_cpp_pr0'
{glibc}/build-glibc/libc.a(fileops.o): In function `_IO_acquire_lock_fct':
{glibc}/glibc-2.15/libio/libioP.h:969: undefined reference to `_Unwind_Resume'
{glibc}/build-glibc/libc.a(fileops.o):(.ARM.extab+0x0): undefined reference to `__gcc_personality_v0'
{glibc}/build-glibc/libc.a(fileops.o):(.ARM.exidx+0x0): undefined reference to `__aeabi_unwind_cpp_pr0'
{glibc}/build-glibc/libc.a(genops.o):(.ARM.exidx__libc_freeres_fn+0x0): undefined reference to `__aeabi_unwind_cpp_pr0'
{glibc}/build-glibc/libc.a(genops.o):(.ARM.exidx+0x38): undefined reference to `__aeabi_unwind_cpp_pr0'
{glibc}/build-glibc/libc.a(genops.o):(.ARM.exidx+0x48): undefined reference to `__aeabi_unwind_cpp_pr1'
{glibc}/build-glibc/libc.a(sysconf.o):(.ARM.exidx+0x0): undefined reference to `__aeabi_unwind_cpp_pr0'
{glibc}/build-glibc/libc.a(sched_yield.o):(.ARM.exidx+0x0): undefined reference to `__aeabi_unwind_cpp_pr0'
{glibc}/build-glibc/libc.a(exit-thread.o):(.ARM.exidx+0x0): undefined reference to `__aeabi_unwind_cpp_pr0'
{glibc}/build-glibc/libc.a(open.o):(.ARM.exidx+0x0): undefined reference to `__aeabi_unwind_cpp_pr0'
{glibc}/build-glibc/libc.a(open.o):(.ARM.exidx+0x10): undefined reference to `__aeabi_unwind_cpp_pr1'
{glibc}/build-glibc/libc.a(read.o):(.ARM.exidx+0x0): undefined reference to `__aeabi_unwind_cpp_pr0'
{glibc}/build-glibc/libc.a(read.o):(.ARM.exidx+0x10): undefined reference to `__aeabi_unwind_cpp_pr1'
{glibc}/build-glibc/libc.a(write.o):(.ARM.exidx+0x0): undefined reference to `__aeabi_unwind_cpp_pr0'
{glibc}/build-glibc/libc.a(write.o):(.ARM.exidx+0x10): undefined reference to `__aeabi_unwind_cpp_pr1'
{glibc}/build-glibc/libc.a(access.o):(.ARM.exidx+0x0): undefined reference to `__aeabi_unwind_cpp_pr0'
{glibc}/build-glibc/libc.a(fcntl.o):(.ARM.exidx+0x0): undefined reference to `__aeabi_unwind_cpp_pr1'
{glibc}/build-glibc/libc.a(symlink.o):(.ARM.exidx+0x0): undefined reference to `__aeabi_unwind_cpp_pr0'
{glibc}/build-glibc/libc.a(unlink.o):(.ARM.exidx+0x0): undefined reference to `__aeabi_unwind_cpp_pr0'
{glibc}/build-glibc/libc.a(syslog.o): In function `__libc_cleanup_routine':
{glibc}/glibc-2.15/misc/../nptl/sysdeps/pthread/bits/libc-lock.h:432: undefined reference to `_Unwind_Resume'
{glibc}/glibc-2.15/misc/../nptl/sysdeps/pthread/bits/libc-lock.h:432: undefined reference to `_Unwind_Resume'
{glibc}/glibc-2.15/misc/../nptl/sysdeps/pthread/bits/libc-lock.h:432: undefined reference to `_Unwind_Resume'
{glibc}/glibc-2.15/misc/../nptl/sysdeps/pthread/bits/libc-lock.h:432: undefined reference to `_Unwind_Resume'
{glibc}/build-glibc/libc.a(syslog.o):(.ARM.extab+0x0): undefined reference to `__gcc_personality_v0'
{glibc}/build-glibc/libc.a(syslog.o):(.ARM.extab+0x54): undefined reference to `__gcc_personality_v0'
{glibc}/build-glibc/libc.a(syslog.o):(.ARM.extab+0x68): undefined reference to `__gcc_personality_v0'
{glibc}/build-glibc/libc.a(syslog.o):(.ARM.exidx+0x0): undefined reference to `__aeabi_unwind_cpp_pr0'
{glibc}/build-glibc/libc.a(syslog.o):(.ARM.exidx+0x20): undefined reference to `__aeabi_unwind_cpp_pr1'
{glibc}/build-glibc/libc.a(mmap.o):(.ARM.exidx+0x0): undefined reference to `__aeabi_unwind_cpp_pr0'
{glibc}/build-glibc/libc.a(mmap64.o):(.ARM.exidx+0x0): undefined reference to `__aeabi_unwind_cpp_pr0'
{glibc}/build-glibc/libc.a(munmap.o):(.ARM.exidx+0x0): undefined reference to `__aeabi_unwind_cpp_pr0'
{glibc}/build-glibc/libc.a(mprotect.o):(.ARM.exidx+0x0): undefined reference to `__aeabi_unwind_cpp_pr0'
{glibc}/build-glibc/libc.a(madvise.o):(.ARM.exidx+0x0): undefined reference to `__aeabi_unwind_cpp_pr0'
{glibc}/build-glibc/libc.a(tsearch.o):(.ARM.exidx+0x0): more undefined references to `__aeabi_unwind_cpp_pr0' follow
{glibc}/build-glibc/libc.a(getsysstats.o):(.ARM.exidx+0x0): undefined reference to `__aeabi_unwind_cpp_pr1'
{glibc}/build-glibc/libc.a(getsysstats.o):(.ARM.exidx+0x10): undefined reference to `__aeabi_unwind_cpp_pr0'
{glibc}/build-glibc/libc.a(mremap.o):(.ARM.exidx+0x0): undefined reference to `__aeabi_unwind_cpp_pr0'
{glibc}/build-glibc/libc.a(connect.o):(.ARM.exidx+0x0): undefined reference to `__aeabi_unwind_cpp_pr0'
{glibc}/build-glibc/libc.a(connect.o):(.ARM.exidx+0x10): undefined reference to `__aeabi_unwind_cpp_pr1'
{glibc}/build-glibc/libc.a(send.o):(.ARM.exidx+0x0): undefined reference to `__aeabi_unwind_cpp_pr0'
{glibc}/build-glibc/libc.a(send.o):(.ARM.exidx+0x10): undefined reference to `__aeabi_unwind_cpp_pr1'
{glibc}/build-glibc/libc.a(socket.o):(.ARM.exidx+0x0): undefined reference to `__aeabi_unwind_cpp_pr0'
{glibc}/build-glibc/libc.a(libc-cancellation.o):(.ARM.exidx+0x0): undefined reference to `__aeabi_unwind_cpp_pr0'
{glibc}/build-glibc/libc.a(backtrace.o): In function `_Unwind_GetGR':
{glibc}/glibc-2.15/debug/../ports/sysdeps/unix/sysv/linux/arm/eabi/nptl/unwind.h:251: undefined reference to `_Unwind_VRS_Get'
{glibc}/build-glibc/libc.a(backtrace.o): In function `__backtrace':
{glibc}/glibc-2.15/debug/../ports/sysdeps/arm/eabi/backtrace.c:105: undefined reference to `_Unwind_Backtrace'
{glibc}/build-glibc/libc.a(backtrace.o):(.ARM.exidx+0x0): undefined reference to `__aeabi_unwind_cpp_pr0'
{glibc}/build-glibc/libc.a(backtrace.o):(.ARM.exidx+0x8): undefined reference to `__aeabi_unwind_cpp_pr1'
{glibc}/build-glibc/libc.a(vfprintf_chk.o): In function `_IO_acquire_lock_clear_flags2_fct':
{glibc}/glibc-2.15/debug/../libio/libioP.h:979: undefined reference to `_Unwind_Resume'
{glibc}/build-glibc/libc.a(vfprintf_chk.o):(.ARM.extab+0x0): undefined reference to `__gcc_personality_v0'
{glibc}/build-glibc/libc.a(sigrestorer.o):(.ARM.exidx+0x0): undefined reference to `__aeabi_unwind_cpp_pr1'
{glibc}/build-glibc/libc.a(qsort.o):(.ARM.exidx+0x0): undefined reference to `__aeabi_unwind_cpp_pr0'
{glibc}/build-glibc/libc.a(ioftell.o): In function `_IO_acquire_lock_fct':
{glibc}/glibc-2.15/libio/libioP.h:969: undefined reference to `_Unwind_Resume'
{glibc}/build-glibc/libc.a(ioftell.o):(.ARM.extab+0x0): undefined reference to `__gcc_personality_v0'
{glibc}/build-glibc/libc.a(iofwrite.o): In function `_IO_acquire_lock_fct':
{glibc}/glibc-2.15/libio/libioP.h:969: undefined reference to `_Unwind_Resume'
{glibc}/build-glibc/libc.a(iofwrite.o):(.ARM.extab+0x0): undefined reference to `__gcc_personality_v0'
{glibc}/build-glibc/libc.a(iogetline.o):(.ARM.exidx+0x0): undefined reference to `__aeabi_unwind_cpp_pr0'
{glibc}/build-glibc/libc.a(ioseekoff.o): In function `_IO_acquire_lock_fct':
{glibc}/glibc-2.15/libio/../libio/libioP.h:969: undefined reference to `_Unwind_Resume'
{glibc}/build-glibc/libc.a(ioseekoff.o):(.ARM.extab+0x0): undefined reference to `__gcc_personality_v0'
{glibc}/build-glibc/libc.a(ioseekoff.o):(.ARM.exidx+0x0): undefined reference to `__aeabi_unwind_cpp_pr0'
{glibc}/build-glibc/libc.a(wgenops.o):(.ARM.exidx+0x38): undefined reference to `__aeabi_unwind_cpp_pr0'
{glibc}/build-glibc/libc.a(gettimeofday.o):(.ARM.exidx+0x0): undefined reference to `__aeabi_unwind_cpp_pr0'
{glibc}/build-glibc/libc.a(uname.o):(.ARM.exidx+0x0): undefined reference to `__aeabi_unwind_cpp_pr0'
{glibc}/build-glibc/libc.a(close.o):(.ARM.exidx+0x0): undefined reference to `__aeabi_unwind_cpp_pr0'
{glibc}/build-glibc/libc.a(close.o):(.ARM.exidx+0x10): undefined reference to `__aeabi_unwind_cpp_pr1'
{glibc}/build-glibc/libc.a(lseek.o):(.ARM.exidx+0x0): undefined reference to `__aeabi_unwind_cpp_pr0'
{glibc}/build-glibc/libc.a(writev.o): In function `ifree':
{glibc}/glibc-2.15/misc/../sysdeps/posix/writev.c:32: undefined reference to `_Unwind_Resume'
{glibc}/build-glibc/libc.a(writev.o):(.ARM.extab+0x0): undefined reference to `__gcc_personality_v0'
{glibc}/build-glibc/libc.a(writev.o):(.ARM.exidx+0x8): undefined reference to `__aeabi_unwind_cpp_pr0'
{glibc}/build-glibc/libc.a(dl-lookup.o):(.ARM.exidx+0x0): undefined reference to `__aeabi_unwind_cpp_pr0'
{glibc}/build-glibc/libc.a(dl-tlsdesc.o):(.ARM.exidx+0x0): undefined reference to `__aeabi_unwind_cpp_pr0'
{glibc}/build-glibc/libc.a(dl-tlsdesc.o):(.ARM.exidx+0x10): undefined reference to `__aeabi_unwind_cpp_pr1'
{glibc}/build-glibc/libc.a(vfscanf.o):(.ARM.exidx+0x0): undefined reference to `__aeabi_unwind_cpp_pr1'
{glibc}/build-glibc/libc.a(fseek.o): In function `_IO_acquire_lock_fct':
{glibc}/glibc-2.15/libio/libioP.h:969: undefined reference to `_Unwind_Resume'
{glibc}/build-glibc/libc.a(fseek.o):(.ARM.extab+0x0): undefined reference to `__gcc_personality_v0'
{glibc}/build-glibc/libc.a(ftello.o): In function `_IO_acquire_lock_fct':
{glibc}/glibc-2.15/libio/../libio/libioP.h:969: undefined reference to `_Unwind_Resume'
{glibc}/build-glibc/libc.a(ftello.o):(.ARM.extab+0x0): undefined reference to `__gcc_personality_v0'
{glibc}/build-glibc/libc.a(dl-runtime.o):(.ARM.exidx+0x0): undefined reference to `__aeabi_unwind_cpp_pr0'
{glibc}/build-glibc/libc.a(setitimer.o):(.ARM.exidx+0x0): undefined reference to `__aeabi_unwind_cpp_pr0'
collect2: error: ld returned 1 exit status
make[2]: *** [{glibc}/build-glibc/elf/sln] Error 1
make[2]: Leaving directory `{glibc}/glibc-2.15/elf'
make[1]: *** [elf/others] Error 2
make[1]: Leaving directory `{glibc}/glibc-2.15'
make: *** [all] Error 2

有人对此有什么想法吗?

最佳答案

最后我发现是因为我的 Makeconfig 缺少 -lgcc_eh。我们必须在 GCC 为动态构建时添加它。

如果您的 GCC 仅构建静态,您似乎可以删除此标志。

关于为 arm 交叉编译 glibc,得到对一些展开函数的 undefined reference ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27831735/

相关文章:

c - 是否有适用于 *.elf 和 *.axf 的代码大小分析工具?

c - 按钮中断和按钮按下时间超过 3 秒

c - jni 中 dll 加载异常

C 函数打开文件并传输数据

linux - TZ 变量,自定义文件

mysql - 无法在远程Linux服务器上的Dreamweaver CS6和MySQL之间建立链接

python : Selenium - Message: unknown error: Chrome failed to start: exited abnormally

java - ARM 上 Java 8u6 的内存丢失 (BeagleBoneBllack)

c - HDF5 : create 1 dimension attribute

arm - 使用 AXI4Lite 读写的最小时钟周期数是多少