在我的工具链上构建Glibc。除了为构建默认glibc指定的那些库之外,库成功(并且测试正常)所有FLAGS都未设置。然后我开始在有和没有FLAGS的情况下在单独的新构建尝试中构建程序,并且每次iconv文件夹中的某些内容总是会中断...
我会分歧一下,呻吟着它总是为我打破GLibc的故事,并且只要我记得就一直这样做......尽管......继续前进......
当传递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 {{1} } /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的建造:/ glibc的建造/数学:/ glibc的建造/精灵:/ glibc的建造/ dlfcn:/ glibc的建造/ NSS:/ glibc的建造/ NIS:/ glibc的建造/ RT:/ glibc的-build / resolv:/ glibc-build / crypt:/ glibc-build / nptl /glibc-build/libc.so.6 /glibc-build/libc_nonshared.a -Wl, - as-needed / glibc-build / elf /ld.so -Wl, - no-as-needed -lgcc gcc --print-file-name=crtbeginS.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, - 致命警告/mnt/lfs/glibc-build/csu/Scrt1.o /glibc-build/csu/crti.o gcc --print-file-name=crtendS.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的建造/数学:/ glibc的建造/精灵:/ glibc的建造/ dlfcn:/ glibc的建造/ NSS:/ glibc的建造/ NIS:/ glibc的建造/ RT:/ glibc的建造/ resolv:/ glibc-build / crypt:/ glibc-build / nptl /glibc-build/libc.so.6 /glibc-build/libc_nonshared.a -Wl, - as-needed / glibc-build / elf / ld。所以-Wl, - no-as-needed -lgcc gcc --print-file-name=crtbeginS.o
/glibc-build/csu/crtn.o
我得到2页引用问题
/glibc-build/iconv/iconvconfig.o:在函数gcc --print-file-name=crtendS.o
__ tsan_func_entry'中
iconvconfig.c :(。text + 0x136):对more_help':
iconvconfig.c:(.text+0x12e): undefined reference to
__ tsan_func_exit'的未定义引用
iconvconfig.c :(。text + 0x1cc):对__tsan_write8'
iconvconfig.c:(.text+0x150): undefined reference to
alias_compare'的未定义引用:
iconvconfig.c :(。text + 0x226):对__tsan_read8'
/glibc-build/iconv/iconvconfig.o: In function
__ tsan_read1'的未定义引用
iconvconfig.c :(。text + 0x246):对__tsan_func_entry'
iconvconfig.c:(.text+0x233): undefined reference to
__ tsan_read1'的未定义引用
iconvconfig.c :(。text + 0x26e):对__tsan_read8'
iconvconfig.c:(.text+0x25d): undefined reference to
__ tsan_func_exit'的未定义引用
iconvconfig.c :(。text + 0x2b4):对__tsan_read8'
iconvconfig.c:(.text+0x282): undefined reference to
__ asan_report_load8'的未定义引用
/glibc-build/iconv/iconvconfig.o:在函数__asan_report_load8'
iconvconfig.c:(.text+0x2b9): undefined reference to
__ tsan_func_entry'中
iconvconfig.c :(。text + 0x308):对module_compare':
iconvconfig.c:(.text+0x2fb): undefined reference to
__ tsan_read8'的未定义引用
iconvconfig.c :(。text + 0x337):对__tsan_read1'
iconvconfig.c:(.text+0x326): undefined reference to
__ tsan_read8'的未定义引用
iconvconfig.c :(。text + 0x36f):对__tsan_read1'
iconvconfig.c:(.text+0x34a): undefined reference to
__ asan_report_load8'的未定义引用
iconvconfig.c :(。text + 0x3ab):对__tsan_func_exit'
iconvconfig.c:(.text+0x3a6): undefined reference to
name_compare'的未定义引用:
艾玛
答案 0 :(得分:1)
有点晚了,但希望有用。
名称中带有tsan和asan的符号与提供LLVM clang和gcc的address sanitizer项目相关,其中包含检测和报告与非法内存访问相关的一系列问题的工具。
要使用它们,您必须安装工具和库,在编译和链接期间使用正确版本的编译器和正确的标志组合,具体取决于您的版本。
根据我的经验,documentation只是非常有用,主题非常先进。在我完全控制的项目中,我最终禁用除了一个命令行参数-fsanitize=address
之外的所有命令以及编译和链接的推荐-fno-omit-frame-pointer
(x64 ubuntu 14.04LTS上的gcc 4.8)。 / p>
由于您正在尝试构建现有项目,因此您将受其设置的限制。我会查看该项目的文档,并尝试从那里确定推荐的编译器和消毒剂工具版本,或者如果您不在乎,可以使用一些配置选项来禁用它。