【问题标题】:__libc_csu_fini and __libc_csu_init undefined while following instructions for build-webos__libc_csu_fini 和 __libc_csu_init 未定义,同时遵循 build-webos 的说明
【发布时间】:2013-03-07 17:19:21
【问题描述】:

我正在尝试构建 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'

在网上搜索会发现很多人在不构建 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=两者 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 -按需 -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 附带的内容时,共享和非共享版本都提到了它。嗯。

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

【问题讨论】:

    标签: gcc linker-errors glibc webos openembedded


    【解决方案1】:

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

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

    【讨论】:

    • 嘿马克西姆。感谢您的建议......当我有时间回去看看做 Rebol WebOS 移植并让你知道它是怎么回事时,我会试试这个。
    • 没问题 :-) 如果您有问题,请写信给我。目前webos有点不稳定,因为做了很多工作,有时没有足够的时间重新测试所有
    • 审查我没有检查答案的旧帖子。我担心 WebOS 大楼的优先级下降了,因为要求我为他调查的朋友很快就转向了其他稍纵即逝的兴趣。 :-) 但是谢谢你的回答;我会假设它是正确的!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-30
    • 2013-04-09
    • 1970-01-01
    • 1970-01-01
    • 2019-11-19
    相关资源
    最近更新 更多