[Dovecot] : error while loading shared libraries: libdovecot.so.0 (arm cross compile)
Stephen Feyrer
steve at toth.org.uk
Tue Aug 30 19:46:57 EEST 2011
Hi.
Having just removed a number of configure options from the cross compilers
recipe to simplify the problem I think one of those I took away overrode
--without-shared-libs. Now it seems to install and run cleanly. Even so,
while building the ipackage I spotted some warnings. Could these because
by my build environment? After some testing I'll let you know if the
current dovecot build works. I really appreciate your support and
patience, thank you.
*** Warning: Linking the shared library lib02_imap_acl_plugin.la against
the loadable module
*** lib01_acl_plugin.so is not portable!
*** Warning: Linking the shared library lib21_fts_squat_plugin.la against
the loadable module
*** lib20_fts_plugin.so is not portable!
*** Warning: Linking the shared library lib20_mail_log_plugin.la against
the loadable module
*** lib15_notify_plugin.so is not portable!
*** Warning: Linking the shared library lib11_imap_quota_plugin.la against
the loadable module
*** lib10_quota_plugin.so is not portable!
*** Warning: Linking the shared library lib30_imap_zlib_plugin.la against
the loadable module
*** lib20_zlib_plugin.so is not portable!
The current cross compile ./configure:
i_cv_epoll_works=no \
i_cv_inotify_works=no \
i_cv_posix_fallocate_works=no \
i_cv_signed_size_t=no \
i_cv_gmtime_max_time_t=32 \
i_cv_signed_time_t=yes \
i_cv_mmap_plays_with_write=yes \
i_cv_fd_passing=yes \
i_cv_c99_vsnprintf=yes \
lib_cv_va_copy=yes lib_cv___va_copy=yes \
lib_cv_va_val_copy=yes \
./configure \
$(DOVECOT_CONFIGURE) \
--build=$(GNU_HOST_NAME) \
--host=$(GNU_TARGET_NAME) \
--target=$(GNU_TARGET_NAME) \
--prefix=/opt \
--without-shared-libs \
--with-notify=dnotify \
--localstatedir=/opt/var \
--with-ioloop=poll; \
old ./configure:
i_cv_epoll_works=no i_cv_inotify_works=no i_cv_posix_fallocate_works=no
i_cv_signed_size_t=no i_cv_gmtime_max_time_t=32 i_cv_signed_time_t=yes
i_cv_mmap_plays_with_write=yes i_cv_fd_passing=yes i_cv_c99_vsnprintf=yes
lib_cv_va_copy=yes lib_cv___va_copy=yes lib_cv_va_val_copy=yes ./configure
--enable-devel-checks --without-shared-libs\
$(DOVECOT_CONFIGURE) \
--build=$(GNU_HOST_NAME) \
--host=$(GNU_TARGET_NAME) \
--target=$(GNU_TARGET_NAME) \
--prefix=/opt \
--disable-static \
--without-gssapi \
--without-pam \
--with-notify=dnotify \
--sysconfdir=/opt/etc/dovecot \
--localstatedir=/opt/var \
--with-ssldir=/opt/etc/dovecot \
--without-sql-drivers \
--with-ioloop=poll; \
/opt/dovecoti] # ipkg install dovecot_2.0.14-2_arm.ipk
Installing dovecot (2.0.14-2) to root...
Configuration file '/opt/etc/dovecot/dovecot.conf'
==> File on system created by you or by a script.
==> File also in package provided by package maintainer.
What would you like to do about it ? Your options are:
Y or I : install the package maintainer's version
N or O : keep your currently-installed version
D : show the differences between the versions (if diff is
installed)
The default action is to keep your current version.
*** dovecot.conf (Y/I/N/O/D) [default=N] ?n
Configuring dovecot
/opt/sbin/dovecot: error while loading shared libraries: libdovecot.so.0:
cannot open shared object file: No such file or directory
postinst script returned status 127
ERROR: dovecot.postinst returned 127
Successfully terminated.
[/opt/dovecoti] # strace dovecot -F
execve("/opt/sbin/dovecot", ["dovecot", "-F"], [/* 23 vars */]) = 0
uname({sys="Linux", node="nas2", ...}) = 0
brk(0) = 0x1c000
access("/etc/ld.so.preload", R_OK) = -1 ENOENT (No such file or
directory)
open("/opt/lib/v5l/fast-mult/half/libdovecot.so.0", O_RDONLY) = -1 ENOENT
(No such file or directory)
stat64("/opt/lib/v5l/fast-mult/half", 0xbe920fa8) = -1 ENOENT (No such
file or directory)
open("/opt/lib/v5l/fast-mult/libdovecot.so.0", O_RDONLY) = -1 ENOENT (No
such file or directory)
stat64("/opt/lib/v5l/fast-mult", 0xbe920fa8) = -1 ENOENT (No such file or
directory)
open("/opt/lib/v5l/half/libdovecot.so.0", O_RDONLY) = -1 ENOENT (No such
file or directory)
stat64("/opt/lib/v5l/half", 0xbe920fa8) = -1 ENOENT (No such file or
directory)
open("/opt/lib/v5l/libdovecot.so.0", O_RDONLY) = -1 ENOENT (No such file
or directory)
stat64("/opt/lib/v5l", 0xbe920fa8) = -1 ENOENT (No such file or
directory)
open("/opt/lib/fast-mult/half/libdovecot.so.0", O_RDONLY) = -1 ENOENT (No
such file or directory)
stat64("/opt/lib/fast-mult/half", 0xbe920fa8) = -1 ENOENT (No such file or
directory)
open("/opt/lib/fast-mult/libdovecot.so.0", O_RDONLY) = -1 ENOENT (No such
file or directory)
stat64("/opt/lib/fast-mult", 0xbe920fa8) = -1 ENOENT (No such file or
directory)
open("/opt/lib/half/libdovecot.so.0", O_RDONLY) = -1 ENOENT (No such file
or directory)
stat64("/opt/lib/half", 0xbe920fa8) = -1 ENOENT (No such file or
directory)
open("/opt/lib/libdovecot.so.0", O_RDONLY) = -1 ENOENT (No such file or
directory)
stat64("/opt/lib", {st_mode=S_IFDIR|0755, st_size=17592186044416, ...}) = 0
open("/etc/ld.so.cache", O_RDONLY) = 3
fstat64(3, {st_mode=S_IFREG|0644, st_size=17592186044416, ...}) = 0
mmap2(NULL, 10345, PROT_READ, MAP_PRIVATE, 3, 0) = 0x40015000
close(3) = 0
open("/lib/v5l/fast-mult/half/libdovecot.so.0", O_RDONLY) = -1 ENOENT (No
such file or directory)
stat64("/lib/v5l/fast-mult/half", 0xbe920fa8) = -1 ENOENT (No such file or
directory)
open("/lib/v5l/fast-mult/libdovecot.so.0", O_RDONLY) = -1 ENOENT (No such
file or directory)
stat64("/lib/v5l/fast-mult", 0xbe920fa8) = -1 ENOENT (No such file or
directory)
open("/lib/v5l/half/libdovecot.so.0", O_RDONLY) = -1 ENOENT (No such file
or directory)
stat64("/lib/v5l/half", 0xbe920fa8) = -1 ENOENT (No such file or
directory)
open("/lib/v5l/libdovecot.so.0", O_RDONLY) = -1 ENOENT (No such file or
directory)
stat64("/lib/v5l", 0xbe920fa8) = -1 ENOENT (No such file or
directory)
open("/lib/fast-mult/half/libdovecot.so.0", O_RDONLY) = -1 ENOENT (No such
file or directory)
stat64("/lib/fast-mult/half", 0xbe920fa8) = -1 ENOENT (No such file or
directory)
open("/lib/fast-mult/libdovecot.so.0", O_RDONLY) = -1 ENOENT (No such file
or directory)
stat64("/lib/fast-mult", 0xbe920fa8) = -1 ENOENT (No such file or
directory)
open("/lib/half/libdovecot.so.0", O_RDONLY) = -1 ENOENT (No such file or
directory)
stat64("/lib/half", 0xbe920fa8) = -1 ENOENT (No such file or
directory)
open("/lib/libdovecot.so.0", O_RDONLY) = -1 ENOENT (No such file or
directory)
stat64("/lib", {st_mode=S_IFDIR|0755, st_size=17592186044416, ...}) = 0
open("/usr/lib/v5l/fast-mult/half/libdovecot.so.0", O_RDONLY) = -1 ENOENT
(No such file or directory)
stat64("/usr/lib/v5l/fast-mult/half", 0xbe920fa8) = -1 ENOENT (No such
file or directory)
open("/usr/lib/v5l/fast-mult/libdovecot.so.0", O_RDONLY) = -1 ENOENT (No
such file or directory)
stat64("/usr/lib/v5l/fast-mult", 0xbe920fa8) = -1 ENOENT (No such file or
directory)
open("/usr/lib/v5l/half/libdovecot.so.0", O_RDONLY) = -1 ENOENT (No such
file or directory)
stat64("/usr/lib/v5l/half", 0xbe920fa8) = -1 ENOENT (No such file or
directory)
open("/usr/lib/v5l/libdovecot.so.0", O_RDONLY) = -1 ENOENT (No such file
or directory)
stat64("/usr/lib/v5l", 0xbe920fa8) = -1 ENOENT (No such file or
directory)
open("/usr/lib/fast-mult/half/libdovecot.so.0", O_RDONLY) = -1 ENOENT (No
such file or directory)
stat64("/usr/lib/fast-mult/half", 0xbe920fa8) = -1 ENOENT (No such file or
directory)
open("/usr/lib/fast-mult/libdovecot.so.0", O_RDONLY) = -1 ENOENT (No such
file or directory)
stat64("/usr/lib/fast-mult", 0xbe920fa8) = -1 ENOENT (No such file or
directory)
open("/usr/lib/half/libdovecot.so.0", O_RDONLY) = -1 ENOENT (No such file
or directory)
stat64("/usr/lib/half", 0xbe920fa8) = -1 ENOENT (No such file or
directory)
open("/usr/lib/libdovecot.so.0", O_RDONLY) = -1 ENOENT (No such file or
directory)
stat64("/usr/lib", {st_mode=S_IFDIR|0755, st_size=17592186044416, ...}) = 0
writev(2, [{"dovecot", 7}, {": ", 2}, {"error while loading shared
libra"..., 36}, {": ", 2}, {"libdovecot.so.0", 15}, {": ", 2}, {"cannot
open shared object file", 30}, {": ", 2}, {"No such file or directory",
25}, {"\n", 1}], 10dovecot: error while loading shared libraries:
libdovecot.so.0: cannot open shared object file: No such file or directory
) = 122
exit_group(127) = ?
The outcome of the native compile:
[/opt/dovecoti] # ./configure --prefix=/opt --enable-devel-checks
--enable-maintainer-mode
[/opt/etc/dovecot] # gdb --args dovecot -F
[snip]
This GDB was configured as "arm-none-linux-gnueabi"...
(gdb) run
Starting program: /share/MD0_DATA/optware/opt/sbin/dovecot -F
Panic: Leaked file fd 3: dev 9.0 inode 53040060
Program received signal SIGABRT, Aborted.
0x400c2374 in kill () from /lib/libc.so.6
(gdb) bt full
#0 0x400c2374 in kill () from /lib/libc.so.6
No symbol table info available.
#1 0x400c21a8 in raise () from /lib/libc.so.6
No symbol table info available.
#2 0x400c3328 in abort () from /lib/libc.so.6
No symbol table info available.
Backtrace stopped: frame did not save the PC
(gdb) quit
The program is running. Exit anyway? (y or n) y
On Tue, 30 Aug 2011 00:15:09 +0100, Stephen Feyrer <steve at toth.org.uk>
wrote:
> Hi.
>
> Thanks, I'll give that a try.
>
>
> --
> Kind regards
>
> Stephen Feyrer.
>
>
>
> On Mon, 29 Aug 2011 09:04:01 +0100, Joseph Tam <jtam.home at gmail.com>
> wrote:
>
>> "Stephen Feyrer" <stephen.feyrer at btinternet.com> writes:
>>
>>> I've made a new attempt at build Dovecot. The build and then install
>>> processes appeared to work find. Then when I try to run Dovecot it
>>> reports the error:
>>>
>>> /share/MD0_DATA/optware/opt/sbin/dovecot: error while loading shared
>>> libraries: libdovecot.so.0: cannot open shared object file: No such
>>> file
>>> or directory
>>
>> In cases like this where I have no clue where an executable is trying to
>> load a library from, run a process trace tool (strace, truss, etc.) and
>> you
>> can see all the library run paths it's trying before failing.
>>
>> Joseph Tam <jtam.home at gmail.com>
More information about the dovecot
mailing list