【问题标题】:TOC overflow when building git on AIX在 AIX 上构建 git 时 TOC 溢出
【发布时间】:2015-10-28 10:55:21
【问题描述】:

尝试在 AIX 6.1 上以 64 位编译 git 时出现以下链接错误:

$ ./configure "CFLAGS=-maix64" "CXXFLAGS=-maix64" "LDFLAGS=-maix64" && /usr/opt/freeware/bin/make

<compilation/linking output>

ld: 0711-781 ERROR: TOC overflow. TOC size: 90720       Maximum size: 65536
collect2: error: ld returned 12 exit status
make: *** [git] Error 1

【问题讨论】:

  • 注意:这不是任何人的错,这是 CPU 指令集的限制。让我们提到一个事实,虽然 -bbigtoc 解决了它,但链接器必须修改某些对象模块中的代码:在那些假设 toc 将是“小”的情况下编译的那些。在编译选项 -qpic=large (xlC) 或 -fPIC/-fPIE (gcc) 可用于强制假设大目录。 ibm.com/developerworks/rational/library/overview-toc-aix

标签: git makefile 64-bit aix configure


【解决方案1】:

您必须根据ld: 0711-781 ERROR: TOC overflow指定-bbigtoc链接器选项以避免此问题

正确的编译行是:

$ ./configure "CFLAGS=-maix64" "CXXFLAGS=-maix64" "LDFLAGS=-maix64 -Wl,-bbigtoc" && /usr/opt/freeware/bin/make

其他解决方案包括:

  • 将大段代码分解成更小的编译单元
  • 减少编译单元中的变量数量

【讨论】:

    猜你喜欢
    • 2018-11-22
    • 2018-12-23
    • 2018-01-15
    • 1970-01-01
    • 2010-10-11
    • 2017-09-08
    • 2010-12-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多