按照build-webos的说明进行__libc_csu_fini和__libc_csu_init未定义

时间:2013-03-07 17:19:22

标签: gcc linker-errors glibc webos openembedded

我正在尝试构建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附带的内容时,共享和非共享版本都提到了它。嗯。

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

1 个答案:

答案 0 :(得分:2)

不幸的是,WebOS build-desktop仅支持Ubuntu 12.04。

安装Ubuntu 12.04并按照https://github.com/openwebos/build-webos

上的说明操作