3

在我的工具链上构建 Glibc 。除了为构建默认 glibc 指定的那些之外,这些库成功地(并且测试正常)所有 FLAGS 未设置。然后我开始在单独的新构建尝试中构建带有和不带有 FLAGS 的程序,并且每次 iconv 文件夹中的某些内容总是中断......

我会发散一秒钟来抱怨它总是在 GLibc 中为我打破的 iconv 是如何在我记事时一直这样做的......尽管继续......

当 gcc-4.8.0 通过 gcc -nostdlib -nostartfiles -o /glibc-build/iconv/iconvconfig -Wl,-dynamic-linker=/tools/lib/ld-linux-x86-64.so.2 -Wl, --hash-style=both -Wl,--warn-shared-textrel,--fatal-warnings /glibc-build/csu/Scrt1.o /glibc-build/csu/crti.o gcc --print-file-name=crtbeginS.o/glibc-build/iconv/ iconvconfig.o /glibc-build/iconv/strtab.o /glibc-build/iconv/xmalloc.o /glibc-build/iconv/hash-string.o -Wl,-rpath-link=/glibc-build:/glibc -build/math:/glibc-build/elf:/glibc-build/dlfcn:/glibc-build/nss:/glibc-build/nis:/glibc-build/rt:/glibc-build/resolv:/glibc- build/crypt:/glibc-build/nptl /glibc-build/libc.so.6 /glibc-build/libc_nonshared.a -Wl,--根据需要 /glibc-build/elf/ld.so -Wl,- -不需要 -lgcc gcc --print-file-name=crtendS.o/glibc-build/csu/crtn.o gcc -nostdlib -nostartfiles -o /glibc-build/iconv/iconv_prog -Wl,-dynamic-linker=/tools/lib/ld-linux-x86-64.so.2 - wl,--hash-style=both -Wl,--warn-shared-textrel,--fatal-warnings /mnt/lfs/glibc-build/csu/Scrt1.o /glibc-build/csu/crti.ogcc --print-file-name=crtbeginS.o/glibc-build/iconv/iconv_prog.o /glibc-build/iconv/iconv_charmap.o /glibc-build/iconv/charmap.o /glibc-build/iconv/charmap-dir.o /glibc-build/iconv/linereader .o /glibc-build/iconv/dummy-repertoire.o /glibc-build/iconv/simple-hash.o /glibc-build/iconv/xstrdup.o /glibc-build/iconv/xmalloc.o -Wl,- rpath-link=/glibc-build:/glibc-build/math:/glibc-build/elf:/glibc-build/dlfcn:/glibc-build/nss:/glibc-build/nis:/glibc-build/rt :/glibc-build/resolv:/glibc-build/crypt:/glibc-build/nptl /glibc-build/libc.so.6 /glibc-build/libc_nonshared.a -Wl,--根据需要 /glibc- build/elf/ld.so -Wl,--no-as-needed -lgcc gcc --print-file-name=crtendS.o/glibc-build/csu/crtn.o

我得到 2 页的参考问题

/glibc-build/iconv/iconvconfig.o: 在函数more_help': iconvconfig.c:(.text+0x12e): undefined reference to__tsan_func_entry' iconvconfig.c:(.text+0x136): 未定义引用__tsan_write8' iconvconfig.c:(.text+0x150): undefined reference to__tsan_func_exit' iconvconfig.c:(.text+0x1cc): 未定义引用__tsan_read8' /glibc-build/iconv/iconvconfig.o: In functionalias_compare': iconvconfig。 c:(.text+0x226): 未定义引用__tsan_func_entry' iconvconfig.c:(.text+0x233): undefined reference to__tsan_read1' iconvconfig.c:(.text+0x246): 未定义引用__tsan_read8' iconvconfig.c:(.text+0x25d): undefined reference to__tsan_read1' iconvconfig.c:(.text+0x26e): 未定义引用__tsan_read8' iconvconfig.c:(.text+0x282): undefined reference to__tsan_func_exit' iconvconfig.c: (.text+0x2b4): 未定义引用__asan_report_load8' iconvconfig.c:(.text+0x2b9): undefined reference to__asan_report_load8' /glibc-build/iconv/iconvconfig.o: 在函数module_compare': iconvconfig.c:(.text+0x2fb): undefined reference to__tsan_func_entry' iconvconfig.c:(.text+0x308): 未定义引用__tsan_read1' iconvconfig.c:(.text+0x326): undefined reference to__tsan_read8' iconvconfig.c:(.text +0x337): 未定义的引用__tsan_read1' iconvconfig.c:(.text+0x34a): undefined reference to__tsan_read8' iconvconfig.c:(.text+0x36f): undefined reference to __tsan_func_exit' iconvconfig.c:(.text+0x3a6): undefined reference to__asan_report_load8' iconvconfig.c:(.text+0x3ab): undefined reference to __asan_report_load8' /glibc-build/iconv/iconvconfig.o: In functionname_compare':

经过 2 周的尝试让它以各种可能的方式编译后,我有点厌倦了。请问有什么想法吗?

艾玛

4

1 回答 1

1

有点晚了,但希望有用。

名称中带有 tsan 和 asan 的符号与地址清理项目有关,该项目为 LLVM clang 和 gcc 提供了检测和报告与非法内存访问相关的一系列问题的工具。

要使用它们,您必须安装工具和库,根据您的版本在编译和链接期间使用正确版本的编译器和正确的标志组合。

以我的经验,文档非常有用,而且主题非常先进。在我完全控制的项目中,我最终禁用了除一个命令行参数之外的所有命令行参数-fsanitize=address以及编译和链接的推荐参数-fno-omit-frame-pointer(x64 ubuntu 14.04LTS 上的 gcc 4.8)。

由于您正在尝试构建现有项目,因此您将受制于他们的设置。我会查看该项目的文档并尝试从那里确定推荐的编译器和清理工具版本,或者如果您不在乎,可能会使用一些配置选项来禁用它。

于 2014-10-08T02:50:30.737 回答