交叉编译的ARM可执行文件无法打开现有的libpthread.so库文件

时间:2013-08-06 16:01:50

标签: pthreads arm cross-compiling mysql

我是在一个非常精简的Linux内核版本2.4.26下交叉编译在ARM处理器上运行的程序。一个程序使用已经工作多年的libmysqlclient。但是,我过去使用的版本(libmysqlclient.so.10)似乎不适用于我的新远程Mysql服务器(5.5.31)。

我有一个较新版本的libmysqlclient(版本15)。我的程序现在生成运行时错误:

error while loading shared libraries: libpthread.so.0: cannot open shared object file: No such file or directory

我认为这意味着新的libmysqlclient需要libpthreads。我已将最近的ARM libpthread.so文件复制到/ lib目录中:

$ ls -l /lib/libpthread* 
-rwxrwxrwx    1 root     root       111324 Aug  6 08:46 /lib/libpthread-2.7.so
lrwxrwxrwx    1 root     root           17 Aug  6 08:47 /lib/libpthread.so.0 -> libpthread-2.7.so

仍然得到同样的错误。目标系统被剥离到没有ldconfig或ldd或其他的程度。 ldd在另一个更强大的系统上运行,对可执行文件显示没有任何意外:

ts7500:# ldd vecsSqlLogger
libmysqlclient.so.15 => /usr/lib/libmysqlclient.so.15 (0x40026000)
libc.so.6 => /lib/libc.so.6 (0x401f9000)
libpthread.so.0 => /lib/libpthread.so.0 (0x40322000)
libcrypt.so.1 => /lib/libcrypt.so.1 (0x40340000)
libnsl.so.1 => /lib/libnsl.so.1 (0x40379000)
libm.so.6 => /lib/libm.so.6 (0x40396000)
libz.so.1 => /usr/lib/libz.so.1 (0x4040e000)
/lib/ld-linux.so.2 (0x40000000)

ts7500:# file /lib/libpthread-2.7.so
/lib/libpthread-2.7.so: ELF 32-bit LSB shared object, ARM, version 1, dynamically linked (uses shared libs), for GNU/Linux 2.6.12, not stripped

为什么我收到此错误?库文件显然位于预期的目录中。难道问题是libpthread.so是为了比我的内核版本编译的吗?

0 个答案:

没有答案