gcc – __libc_csu_fini和__libc_csu_init未定义,同时遵循build-webos的说明

我正在尝试构建OpenWebOS,并且只是遵循
build-webos GitHub自述文件中规定的计划.我正在使用全新的32位Ubuntu 12.10安装.事情有点坎坷.

但是,通过这里和那里的调整,我设法在出错之前从2500或(或其他)起步到350步.问题是构建glibc的依赖性,它正在抱怨

(...)/sysdeps/i386/start.S:107: undefined reference to `__libc_csu_fini'
(...)/sysdeps/i386/start.S:108: undefined reference to `__libc_csu_init'

搜索网络揭示了人们在不构建glibc时遇到这种情况的各种情况:

ld complains: in function “_start”, undefined reference to “__libc_csu_fini” & “__libc_csu_init”

Linking a C program directly with ld fails with undefined reference to `__libc_csu_fini`

但这是在构建自定义嵌入式LIBC期间:eglibc.所以它有点不同,我能找到的最接近的案例是2009 thread on an OpenEmbedded list.我不知道如何在令人困惑的WebOS构建结构的令人困惑的“bakefile”空间中将他们的补丁付诸行动,这令人眼花缭乱.

命令行的怪物失败我将“简化”一点到以下:

gcc -m32 -march=i586 –sysroot=/home/webos/build-webos/BUILD-qemux86/sysroots/qemux86-tcbootstrap -nostdlib -nostartfiles -o iconv/iconvconfig -Wl,-dynamic-linker=/lib/ld-linux.so.2 -Wl,-z,combreloc -Wl,-z,relro -Wl,–hash-style=both csu/crt1.o csu/crti.o `gcc -m32 -march=i586 –sysroot=/home/hostilefork/Projects/webos/build-webos/BUILD-qemux86/sysroots/qemux86-tcbootstrap –print-file-name=crtbegin.o` iconv/iconvconfig.o iconv/strtab.o iconv/xmalloc.o iconv/hash-string.o -Wl,-rpath-link=/home/webos/build-webos/BUILD-qemux86/work/i586-webos-linux/eglibc-2.16-r15+svnr20393/build-i586-webos-linux:math:elf:dlfcn:nss:nis:rt:resolv:crypt:nptl libc.so.6 libc_nonshared.a -Wl,–as-needed elf/ld.so -Wl,–no-as-needed -lgcc `gcc -m32 -march=i586 –sysroot=/home/webos/build-webos/BUILD-qemux86/sysroots/qemux86-tcbootstrap –print-file-name=crtend.o` csu/crtn.o

我在目录中有一个libc.a和一个libc_nonshared.a文件.在非共享版本中没有提到__libc_csu_init或__libc_csu_fini,但它们在普通的libc.a中.这似乎落后于人们似乎应该如此行事,虽然……当我在/usr/lib / i386-linux-gnu中查看Ubuntu附带的内容时,共享和非共享版本都提到了它.嗯.

如果有人读到这个并且“嘿,打赌我知道发生了什么!”那会很漂亮. 🙂

最佳答案 不幸的是,WebOS build-desktop仅支持Ubuntu 12.04.

安装Ubuntu 12.04并按照https://github.com/openwebos/build-webos的说明进行操作

点赞