【问题标题】:Trouble building gcc on 64bit RHEL5在 64 位 RHEL5 上构建 gcc 时遇到问题
【发布时间】:2010-12-14 13:50:32
【问题描述】:

生日,

在 64 位 RHEL5 机器上,我们需要安装 32 位应用程序。由于某些原因,我们需要为此使用 gcc 4.0.3,所以我尝试先在目标机器上安装该版本,就像我在 32 位目标平台上安装了一千次一样。

然而,这一次,我遇到了问题。我已经将 gcc 4.0.3 引导并安装到一个路径中,比如说 /foo。像往常一样,我将 LD_LIBRARY_PATH 设置为指向包含共享库的目录:

$ 回声 $LD_LIBRARY_PATH /foo/lib:/foo/lib/gcc/x86_64-unknown-linux-gnu/lib64:/foo/lib/gcc/x86_64-unknown-linux-gnu/4.0.3:/lib64

这些目录中确实有必要的库:

$ ls /foo/lib/gcc/x86_64-unknown-linux-gnu/lib64 libgcc_s.so libgcc_s.so.1 $ ls /foo/lib/gcc/x86_64-unknown-linux-gnu/4.0.3 32 crtendS.o libgcov.a libmudflap.so.0.0.0 libmudflapth.so.0.0.0 libstdc++.so.6.0.7 crtbegin.o 包括 libmudflap.a libmudflapth.a libstdc++.a libsupc++.a crtbeginS.o 安装工具 libmudflap.la libmudflapth.la libstdc++.la libsupc++.la crtbeginT.o libgcc.a libmudflap.so libmudflapth.so libstdc++.so crtend.o libgcc_eh.a libmudflap.so.0 libmudflapth.so.0 libstdc++.so.6

但是,如果我尝试创建一个简单的程序,ld 找不到 libgcc_s:

$ gcc-4.0吨.cc /foo/bin/../lib/gcc/x86_64-unknown-linux-gnu/4.0.3/../../../../x86_64-unknown-linux-gnu/bin/ld:找不到-lgcc_s collect2: ld 返回 1 个退出状态

为什么找不到 libgcc_s.so 库?

任何帮助表示赞赏!

斯蒂芬

【问题讨论】:

  • 成堆的行,不适合评论,所以我会添加一个后续答案:
  • 最后一行必须有 -Lfolder1 -Lfolder2。正确的?这些文件夹是什么?

标签: gcc


【解决方案1】:
$ gcc-4.0 -v t.cc 使用内置规范。 目标:x86_64-unknown-linux-gnu 配置:../gcc-4.0.3/configure --prefix=/foo --program-suffix=-4.0 --enable-version-specific-runtime-libs --enable-languages=c,c++ --with -gnu-as --with-gnu-ld 线程模型:posix gcc 版本 4.0.3 /foo/i686-pc-linux-gnu/bin/../libexec/gcc/x86_64-unknown-linux-gnu/4.0.3/cc1plus -quiet -v -iprefix /foo/i686-pc-linux-gnu/ bin/../lib/gcc/x86_64-unknown-linux-gnu/4.0.3/ -D_GNU_SOURCE t.cc -quiet -dumpbase t.cc -mtune=k8 -auxbase t -version -o /tmp/ccDiWiMk.s 忽略不存在的目录“/foo/i686-pc-linux-gnu/bin/../lib/gcc/x86_64-unknown-linux-gnu/4.0.3/../../../../x86_64-未知-linux-gnu/include" 忽略重复目录“/foo/lib/gcc/x86_64-unknown-linux-gnu/4.0.3/include/c++” 忽略重复目录“/foo/lib/gcc/x86_64-unknown-linux-gnu/4.0.3/include/c++/x86_64-unknown-linux-gnu” 忽略重复目录“/foo/lib/gcc/x86_64-unknown-linux-gnu/4.0.3/include/c++/backward” 忽略重复目录“/foo/lib/gcc/x86_64-unknown-linux-gnu/4.0.3/include” 忽略不存在的目录“/foo/lib/gcc/x86_64-unknown-linux-gnu/4.0.3/../../../../x86_64-unknown-linux-gnu/include” #include "..." 搜索从这里开始: #include 搜索从这里开始: /foo/i686-pc-linux-gnu/bin/../lib/gcc/x86_64-unknown-linux-gnu/4.0.3/include/c++ /foo/i686-pc-linux-gnu/bin/../lib/gcc/x86_64-unknown-linux-gnu/4.0.3/include/c++/x86_64-unknown-linux-gnu /foo/i686-pc-linux-gnu/bin/../lib/gcc/x86_64-unknown-linux-gnu/4.0.3/include/c++/backward /foo/i686-pc-linux-gnu/bin/../lib/gcc/x86_64-unknown-linux-gnu/4.0.3/include /usr/local/包括 /foo/包括 /usr/包括 搜索列表结束。 GNU C++ 版本 4.0.3 (x86_64-unknown-linux-gnu) 由 GNU C 版本 4.1.2 20080704 (Red Hat 4.1.2-46) 编译。 GGC 启发式:--param ggc-min-expand=100 --param ggc-min-heapsize=131072 /foo/i686-pc-linux-gnu/bin/../lib/gcc/x86_64-unknown-linux-gnu/4.0.3/../../../../x86_64-unknown-linux- gnu/bin/as -V -Qy -o /tmp/ccAemlDJ.o /tmp/ccDiWiMk.s 使用 BFD 版本 (GNU Binutils) 2.19.1 的 GNU 汇编器版本 2.19.1 (x86_64-unknown-linux-gnu) /foo/i686-pc-linux-gnu/bin/../libexec/gcc/x86_64-unknown-linux-gnu/4.0.3/collect2 --eh-frame-hdr -m elf_x86_64 -dynamic-linker /lib64/ ld-linux-x86-64.so.2 /usr/lib/../lib64/crt1.o /usr/lib/../lib64/crti.o /foo/i686-pc-linux-gnu/bin/ ../lib/gcc/x86_64-unknown-linux-gnu/4.0.3/crtbegin.o -L/foo/i686-pc-linux-gnu/bin/../lib/gcc/x86_64-unknown-linux- gnu/4.0.3 -L/foo/i686-pc-linux-gnu/bin/../lib/gcc -L/foo/lib/gcc/x86_64-unknown-linux-gnu/4.0.3 -L/foo /i686-pc-linux-gnu/bin/../lib/gcc/x86_64-unknown-linux-gnu/4.0.3/../../../../x86_64-unknown-linux-gnu/ lib -L/foo/lib/gcc/x86_64-unknown-linux-gnu/4.0.3/../../../../x86_64-unknown-linux-gnu/lib -L/foo/i686- pc-linux-gnu/bin/../lib/gcc/x86_64-unknown-linux-gnu/4.0.3/../../../../lib64 -L/foo/i686-pc-linux -gnu/bin/../lib/gcc/x86_64-unknown-linux-gnu/4.0.3/../../.. -L/foo/lib/gcc/x86_64-unknown-linux-gnu/4.0 .3/../../../../lib64 -L/foo/lib/gcc/x86_64-unknown-linux-gnu/4.0.3/../../.. -L/lib/ ../lib64 -L/usr/lib/../lib64 /tmp/ccAemlDJ.o -lgcc --as-needed - lgcc_s --no-as-needed -lc -lgcc --as-needed -lgcc_s --no-as-needed /foo/i686-pc-linux-gnu/bin/../lib/gcc/x86_64-unknown- linux-gnu/4.0.3/crtend.o /usr/lib/../lib64/crtn.o /foo/i686-pc-linux-gnu/bin/../lib/gcc/x86_64-unknown-linux-gnu/4.0.3/../../../../x86_64-unknown-linux- gnu/bin/ld: 找不到 -lgcc_s collect2: ld 返回 1 个退出状态

【讨论】:

    【解决方案2】:

    似乎您的文件夹 /foo/lib/gcc/x86_64-unknown-linux-gnu/lib64 不包括 libgcc_s.so。为了实验,这样做:

    gcc-4.0 -v t.cc -L/foo/lib/gcc/x86_64-unknown-linux-gnu/lib64

    【讨论】:

    • 是的,这行得通。非常感谢您为我指明了正确的方向!我现在在 ...x86_64-unknown-linux-gnu/4.0.3 中设置符号链接指向 ../lib64/libgcc_s.so 和 ../lib64/libgcc_s.so.1 ,现在它运行良好。可能是在 64 位环境下构建 gcc 4.0.3 的问题。
    猜你喜欢
    • 2018-04-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多