首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >ld.so.1中ELDK gcc链接器错误

ld.so.1中ELDK gcc链接器错误
EN

Stack Overflow用户
提问于 2012-02-01 19:55:58
回答 1查看 2.1K关注 0票数 6

我在Ubuntu机器上安装了ELDK-3.1,运行良好。

在另一台运行64位OpenSuse 12.1的机器上,我克隆了ELDK安装,并在一段时间内工作得很好。

现在,当我尝试配置我的项目时,我看到:

代码语言:javascript
运行
复制
configure: error: C compiler cannot create executables
See `config.log' for more details

日志显示:

代码语言:javascript
运行
复制
configure:3411: ppc-linux-gcc    conftest.c  >&5
/opt/ELDK-3.1/usr/bin/../lib/gcc-lib/ppc-linux/3.3.3/../../../../ppc-linux/bin/ld: warning: ld.so.1, needed by /opt/ELDK-3.1//usr/../ppc_8xx/lib/libc.so.6, not found (try using -rpath or -rpath-link)
/opt/ELDK-3.1//usr/../ppc_8xx/lib/libc.so.6: undefined reference to `_dl_lookup_versioned_symbol_skip@GLIBC_PRIVATE'
...

文件ld.so.1libc.so.6位于同一目录中。

代码语言:javascript
运行
复制
s -l /opt/ELDK-3.1//usr/../ppc_8xx/lib/ld.so.1 
lrwxrwxrwx 1 root root 11 Jan 31 11:43 /opt/ELDK-3.1//usr/../ppc_8xx/lib/ld.so.1 -> ld-2.3.1.so

据我所知,我正确地定义了所有需要的环境,并尝试使用与Ubuntu box中完全相同的构建系统进行构建(该项目是“自动生成的”)。

所以我写了一个脚本,试图模仿我的自动configure所做的一切:

代码语言:javascript
运行
复制
#!/bin/bash


if [ ! -f confdefs.c ]; then
    cat > confdefs.c << EOF
/* confdefs.h */
#define PACKAGE_NAME "xyz"
#define PACKAGE_TARNAME "xyz"
#define PACKAGE_VERSION "1.00"
#define PACKAGE_STRING "xyz 1.00"
#define PACKAGE_BUGREPORT "<contact@company>"
#define PACKAGE_URL ""
#define PACKAGE "xyz"
#define VERSION "1.00"
/* end confdefs.h.  */

int
main ()
{

;
return 0;
}
EOF
fi

ARCH=powerpc
export CROSS_COMPILE=ppc_8xx
TOOLCHAIN=ppc-linux-
TOOLCHAIN_ROOT=/opt/ELDK
LD=`which ${TOOLCHAIN}ld`
CC=`which ${TOOLCHAIN}gcc`
GCC=$CC
export CFLAGS="-Wall -g -I${TOOLCHAIN_ROOT}/ppc_8xx/usr/include/"
export CPPFLAGS=$CFLAGS
# export LDFLAGS="-shared"

$CC $CFLAGS $LDFLAGS confdefs.c -o confdefs

这给了我与configure完全相同的错误。

另一方面,如果我取消对export LDFLAGS="-shared"行的注释,它将构建得非常完美!

代码语言:javascript
运行
复制
> ls -l confdefs
-rwxr-xr-x 1 myself users 16136 Fev  1 09:52 confdefs
> file confdefs
confdefs: ELF 32-bit MSB shared object, PowerPC or cisco 4500, version 1 (SYSV), dynamically linked, not stripped

在座的任何人能告诉我我遗漏了什么吗?这样我的项目就可以在一个盒子上很好地工作,而不是在另一个盒子里。

谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-02-26 08:03:16

我不能百分之百确定它能解决所有问题,但它对我们有效。

我们发现将"ld.so.1 -> ../ppc_8xx/lib/ld.so.1“符号链接到eldk-3.1/usr/ppc-linux/lib解决了链接错误。

我怀疑F15和F16之间的环境发生了一些变化。OpenSUSE (11->12)也是如此。此外,bug是针对Fedora提交的,而Fedora由于故意更改https://bugzilla.redhat.com/show_bug.cgi?id=754695而被终止。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9095349

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档