I'd guess that the 2nd file not found error is a library that gneural
depends on.

Also, you may want to build your library with -module, as that seems
consistent with your use case.

Hth,

Robert
On May 1, 2016 5:11 PM, "Aljosha Papsch" <li...@rpapsch.de> wrote:

On 01.05.2016 21:00, Mike Frysinger wrote:

> On 01 May 2016 09:18, Robert Boehne wrote:
>
>> Run it under gdb and see why it doesn't find the library.
>>
> or use strace -- that'll show quickly all the files/paths that the
> program is trying to use
> -mike
>
thanks, I underestimated strace until now. I executed following commands:

* Library name "gneural" and command LD_LIBRARY_PATH=/opt/gneural/lib
strace ./dlopen

access("/opt/gneural/lib/gneural", R_OK) = -1 ENOENT (No such file or
directory)
access("/usr/lib/gneural", R_OK)        = -1 ENOENT (No such file or
directory)
access("/usr/lib32/gneural", R_OK)      = -1 ENOENT (No such file or
directory)
open("/opt/gneural/lib/gneural", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such
file or directory)
open("/etc/ld.so.cache", O_RDONLY|O_CLOEXEC) = 3
fstat(3, {st_mode=S_IFREG|0644, st_size=259355, ...}) = 0
mmap(NULL, 259355, PROT_READ, MAP_PRIVATE, 3, 0) = 0x7fc386998000
close(3)                                = 0
open("/usr/lib/tls/x86_64/gneural", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No
such file or directory)
[...]
open("/usr/lib/gneural", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or
directory)
stat("/usr/lib", {st_mode=S_IFDIR|0755, st_size=169152, ...}) = 0
munmap(0x7fc386998000, 259355)          = 0
fstat(1, {st_mode=S_IFCHR|0620, st_rdev=makedev(136, 2), ...}) = 0
write(1, "file not found\n", 15file not found
)        = 15
exit_group(0)                           = ?
+++ exited with 0 +++

* Name "gneural" and command LD_LIBRARY_PATH= strace ./dlopen

It doesn't even look in /opt/gneural/lib, even though directory is in
/etc/ld.so.conf.d file.

* Name "libgneural.so" and command LD_LIBRARY_PATH=/opt/gneural/lib strace
./dlopen

I tried this name because strace shows that it uses the name verbatim
without some magic.

open("/opt/gneural/lib/libgneural.so", O_RDONLY|O_CLOEXEC) = 3
read(3,
"\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0000\30\0\0\0\0\0\0"..., 832)
= 832
fstat(3, {st_mode=S_IFREG|0755, st_size=125152, ...}) = 0
mmap(NULL, 2132376, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) =
0x7f55cfd54000
mprotect(0x7f55cfd5d000, 2093056, PROT_NONE) = 0
mmap(0x7f55cff5c000, 4096, PROT_READ|PROT_WRITE,
MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x8000) = 0x7f55cff5c000
close(3)                                = 0
munmap(0x7f55d08ef000, 259355)          = 0
munmap(0x7f55cfd54000, 2132376)         = 0
fstat(1, {st_mode=S_IFCHR|0620, st_rdev=makedev(136, 2), ...}) = 0
write(1, "file not found\n", 15file not found
)        = 15
exit_group(0)                           = ?
+++ exited with 0 +++

It opens the library but still reports that file is not found. Do you know
why? Also, despite Roberts remark about removing lib prefix, I had to
specify full name. Why is that?

Best regards
_______________________________________________
https://lists.gnu.org/mailman/listinfo/libtool

Reply via email to