Chinaunix

标题: 编译arm工具链的glibc时出现"multiple definition of"错误 [打印本页]

作者: add358    时间: 2013-08-05 16:59
标题: 编译arm工具链的glibc时出现"multiple definition of"错误
本帖最后由 add358 于 2013-08-05 17:00 编辑

各位好!最近在做arm的工具链,做到gblic这一步,就遇到问题,问题具体如下:

编译工具:arm-linux-gcc (4.8.1 纯净)
源码包   :glibc-2.17
              glibc-ports-2.15
              glibc-linuxthreads-2.5

已经编译好binutils(2.23)和arm-linux-gcc(4.8.1 纯净);
glibc的配置如下
  1. --prefix=$(PREFIX_PATH) --host=$(TARGET) --with-header=$(PREFIX_PATH)/include --with_binutils=$(PREFIX_PATH)/bin --enable-add-ons --enable-kernel=2.6.15 --with--_thread CFLAGS="-O2 -pipe -DNDEBUG -DG_DISABLE_ASSER -fomit-frame-pointer" libc_cv_forced_unwind=yes libc_cv_c_cleanup=yes
复制代码
出错现象:
  1. arm-cortex_a8-linux-gnueabi-gcc   -nostdlib -nostartfiles -r -o /home/jake/project/toolchain/glibc/glibc-2.17-arm-cortex_a8-linux-gnueabi-build/elf/librtld.map.o '-Wl,-(' /home/jake/project/toolchain/glibc/glibc-2.17-arm-cortex_a8-linux-gnueabi-build/elf/dl-allobjs.os /home/jake/project/toolchain/glibc/glibc-2.17-arm-cortex_a8-linux-gnueabi-build/libc_pic.a -lgcc '-Wl,-)' -Wl,-Map,/home/jake/project/toolchain/glibc/glibc-2.17-arm-cortex_a8-linux-gnueabi-build/elf/librtld.mapT
  2. /home/jake/project/toolchain/glibc/glibc-2.17-arm-cortex_a8-linux-gnueabi-build/libc_pic.a(dl-addr.os): In function `_dl_addr_inside_object':
  3. dl-addr.c:(.text+0x0): multiple definition of `_dl_addr_inside_object'
  4. /home/jake/project/toolchain/glibc/glibc-2.17-arm-cortex_a8-linux-gnueabi-build/elf/dl-allobjs.os::(.text+0x11730): first defined here
  5. /home/jake/project/toolchain/glibc/glibc-2.17-arm-cortex_a8-linux-gnueabi-build/libc_pic.a(init-first.os):(.data+0x0): multiple definition of `__libc_multiple_libcs'
  6. /home/jake/project/toolchain/glibc/glibc-2.17-arm-cortex_a8-linux-gnueabi-build/elf/dl-allobjs.os:(.bss+0x90): first defined here
  7. /home/jake/project/toolchain/glibc/glibc-2.17-arm-cortex_a8-linux-gnueabi-build/libc_pic.a(_itoa.os): In function `_itoa':
  8. _itoa.c:(.text+0xf8): multiple definition of `_itoa'
  9. /home/jake/project/toolchain/glibc/glibc-2.17-arm-cortex_a8-linux-gnueabi-build/elf/dl-allobjs.os::(.text+0x1451c): first defined here
  10. collect2: error: ld returned 1 exit status
复制代码
对于这方面来说,我还是个新手,所以这个错误弄了好几天,一直没有起色!
希望这方面的高手能提供一下解决方法!
thanks.
作者: add358    时间: 2013-08-06 14:02
风平浪静。。。。。。
作者: add358    时间: 2013-08-07 11:08
看来只能自问自答了!

解决方法 编译时指定 "-march=armv7-a",另外glibc-2.17无需打补丁,且glibc-ports-2.15(or 16)和glibc-linuxthread-2.5 与 glibc-2.17是不兼容的。

还有不带“--with-tls"重新编译了下纯净的 arm-cortex_a8-linux-gnueabi 编译器,不知道跟这个有没有关系。
总之是编译通过了,大吉大利,可喜可贺。
作者: herodie    时间: 2013-08-22 19:24
可能大家没有遇到。不过你把答案贴在这里了,这个问题算是有个交待了。某天,别人从百度搜到你的提问和解答,也会感谢你的 。




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2