Hos*_*ork 5 gcc glibc linker-errors webos openembedded
我正在尝试构建 OpenWebOS,并遵循build-webos GitHub README中列出的计划。我正在使用全新的 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'
Run Code Online (Sandbox Code Playgroud)
在网上搜索发现,人们在不构建 glibc 本身时发生这种情况的各种情况:
ld 抱怨:在函数“_start”中,对“__libc_csu_fini”和“__libc_csu_init”的未定义引用
直接使用 ld 链接 C 程序失败,未定义对“__libc_csu_fini”的引用
但这是在构建自定义嵌入式 LIBC 期间:eglibc。所以有点不同,我能找到的最接近的案例是OpenEmbedded 列表上的这个 2009 年线程。我不知道如何在 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=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,--按需 elf/ld.so -Wl,--no-as-需要 -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.a 中。__libc_csu_fini这似乎与人们似乎应该做的事情相反,尽管......当我查看/usr/lib/i386-linux-gnuUbuntu 附带的内容时,共享版本和非共享版本都提到了它。嗯。
如果有人读到这篇文章并说“嘿,我打赌我知道发生了什么事!” 那太好了。:-)
不幸的是,WebOS 构建桌面仅支持 Ubuntu 12.04。
安装 Ubuntu 12.04 并按照https://github.com/openwebos/build-webos上的说明进行操作