LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 897|回复: 4

"锁定(Locking in)" Glibc 中的问题

[复制链接]
发表于 2004-7-7 07:14:37 | 显示全部楼层 |阅读模式
下面要做的是修正我们的 GCC specs 文件,使它指向新的动态连接器。一个简单的 sed 命令就能做到:

SPECFILE=/tools/lib/gcc-lib/*/*/specs &&
sed -e 's@ /lib/ld-linux.so.2@ /tools/lib/ld-linux.so.2@g' \
    $SPECFILE > tempspecfile
mv tempspecfile $SPECFILE &&
unset SPECFILE


我们推荐你拷贝和粘贴上面的命令,而不是手动输入命令。你也可以手动编辑specs文件,只要把 "/lib/ld-linux.so.2" 替换成 "/tools/lib/ld-linux.so.2" 就行了。

重要: 如果你的系统平台上,动态连接器的名字不是ld-linux.so.2,你必须 把上面命令里ld-linux.so.2换成你的系统平台上动态连接器的名字。参见 工具链技术说明。

最后,有些主系统里的头文件会跑到gcc的头文件目录里,这可能是因为GCC的"fixincludes"脚本在编译GCC的过程中运行了。我们将在本章随后一点,详细的解释这个脚本。现在,执行下面的命令,以避免头文件混淆:


上面的sed命令是怎么输入的?
“我们推荐你拷贝和粘贴上面的命令,而不是手动输入命令。你也可以手动编辑specs文件,只要把 "/lib/ld-linux.so.2" 替换成 "/tools/lib/ld-linux.so.2" 就行了。”是指不用改specs文件, 替换文件就行了吗?
 楼主| 发表于 2004-7-7 07:32:49 | 显示全部楼层

gcc dummy.c出现如下错误:

/tools/lib/libc.so.6: undefined reference to `_dl_lookup_versioned_symbol_skip@GLIBC_PRIVATE'
/tools/lib/libc.so.6: undefined reference to `_rtld_global@GLIBC_PRIVATE'
/tools/lib/libc.so.6: undefined reference to `_dl_lookup_versioned_symbol@GLIBC_PRIVATE'
/tools/lib/libc.so.6: undefined reference to `_dl_start_profile@GLIBC_PRIVATE'
/tools/lib/libc.so.6: undefined reference to `_dl_check_map_versions@GLIBC_PRIVATE'
/tools/lib/libc.so.6: undefined reference to `__libc_enable_secure@GLIBC_PRIVATE'
/tools/lib/libc.so.6: undefined reference to `_dl_get_origin@GLIBC_PRIVATE'
/tools/lib/libc.so.6: undefined reference to `_dl_dst_substitute@GLIBC_PRIVATE'
/tools/lib/libc.so.6: undefined reference to `_dl_debug_state@GLIBC_PRIVATE'
/tools/lib/libc.so.6: undefined reference to `_dl_init@GLIBC_PRIVATE'
/tools/lib/libc.so.6: undefined reference to `_dl_dst_count@GLIBC_PRIVATE'
/tools/lib/libc.so.6: undefined reference to `_dl_out_of_memory@GLIBC_PRIVATE'
/tools/lib/libc.so.6: undefined reference to `_dl_signal_error@GLIBC_PRIVATE'
/tools/lib/libc.so.6: undefined reference to `_dl_debug_printf@GLIBC_PRIVATE'
/tools/lib/libc.so.6: undefined reference to `_dl_map_object_deps@GLIBC_PRIVATE'
/tools/lib/libc.so.6: undefined reference to `_dl_unload_cache@GLIBC_PRIVATE'
/tools/lib/libc.so.6: undefined reference to `_dl_relocate_object@GLIBC_PRIVATE'
/tools/lib/libc.so.6: undefined reference to `__libc_stack_end@GLIBC_PRIVATE'
/tools/lib/libc.so.6: undefined reference to `_dl_argv@GLIBC_PRIVATE'
/tools/lib/libc.so.6: undefined reference to `_dl_catch_error@GLIBC_PRIVATE'
/tools/lib/libc.so.6: undefined reference to `_dl_lookup_symbol_skip@GLIBC_PRIVATE'
/tools/lib/libc.so.6: undefined reference to `_dl_lookup_symbol@GLIBC_PRIVATE'
/tools/lib/libc.so.6: undefined reference to `_dl_map_object@GLIBC_PRIVATE'
collect2: ld returned 1 exit status
 楼主| 发表于 2004-7-7 07:34:16 | 显示全部楼层

请各位给我把把脉问题出在哪里?

请各位给我把把脉问题出在哪里?
谢谢!
发表于 2004-7-8 02:38:40 | 显示全部楼层
SPECFILE=/tools/lib/gcc-lib/*/*/specs &&
sed -e 's@ /lib/ld-linux.so.2@ /tools/lib/ld-linux.so.2@g' \
$SPECFILE > tempspecfile
mv tempspecfile $SPECFILE &&
unset SPECFILE

是说如果不执行以上命令, 也可以通过将specs文件中的"/lib/ld-linux.so.2"手动替换成"/tools/lib/ld-linux.so.2". 效果是一样的
 楼主| 发表于 2004-7-8 14:34:01 | 显示全部楼层
谢谢!
出现gcc dummy.c出现错误,又是怎么回事?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表