- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我在 Ubuntu 机器上安装了 ELDK-3.1,运行良好。
在另一台运行 64 位 OpenSuse 12.1 的机器上,我克隆了 ELDK 安装,有一段时间它运行良好。
现在,当我尝试配置我的项目时,我看到:
configure: error: C compiler cannot create executables
See `config.log' for more details
日志显示:
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.1
与 libc.so.6
位于同一目录中。
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 框中完全相同的构建系统进行构建(该项目是“自动生成的”)。
所以我写了一个脚本试图模仿我自动生成的 configure
所做的一切:
#!/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"
,另一方面,它构建完美!
> 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
这里的任何人都可以给我任何线索,让我知道我遗漏了什么,以便我的项目在一个盒子上运行良好,而不是在另一个盒子上运行吗?
谢谢!
最佳答案
我不是 100% 确定它能解决所有问题,但它对我们有用。
我们发现符号链接(symbolic link)“ld.so.1 -> ../../../ppc_8xx/lib/ld.so.1”到 eldk-3.1/usr/ppc-linux/lib 解决了链接错误。
我怀疑 F15 和 F16 之间的环境发生了变化。与 OpenSUSE (11->12) 相同。还针对 Fedora 提交了错误 https://bugzilla.redhat.com/show_bug.cgi?id=754695由于有意的 ABI 更改而终止。
关于c - ld.so.1 中的 ELDK gcc 链接器错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9095349/
While executing make it shows openssl/crypto.h not found, does eldk-5.3 have openssl support. I foun
我在 Ubuntu 机器上安装了 ELDK-3.1,运行良好。 在另一台运行 64 位 OpenSuse 12.1 的机器上,我克隆了 ELDK 安装,有一段时间它运行良好。 现在,当我尝试配置我的项
我正在尝试在 CentOS 6.3 上使用 ELDK 5.3 为 ARM 交叉编译 freeswitch。 在 make 上发现这个错误: ./include/apr.h:347:2: error:
我是一名优秀的程序员,十分优秀!