Post by Konstantin BelousovPost by Daniel BranissPost by Daniel BranissPost by Dimitry AndricPost by Daniel BranissI have a program that loads some modules via dlopen(), these modules call some routines
which are in the main program, this works when using gcc, but with cc it does not.
when compiling the main program I use -export-dynamic, and the modules link fine when compiled with
gcc, but when compiling with clang/cc i get dlerror: ...Undefined symbol …
BTW, when linking the main program with cc I get
/usr/bin/ld: warning: cannot find entry symbol xport-dynamic; defaulting to 0000000000402140
Instead of using -export-dynamic (which is a linker flag) as a flag to
cc, try using -Wl,-export-dynamic instead. Now, the linker interprets
this as the -e flag, which is something totally different.
i had tried that before but i had -WI (upper case i) but re-reading the manual
it should be-Wl (lower case l as in lima :-))!!!!!
thanks!!!!!!
and now have to try profiling (gprof) which started this mess,
thanks again!!
danny
Post by Dimitry AndricI think this will also help with the exporting of the symbols of your
main program.
-Dimitry
when compiling the main program with flag -pg (gprof)
dlopen fails with dlerror: Service unavailable
This means that your binary is linked statically.
dlopen(3) is not supported for static linking, ld-elf.so.1 is required
for dynamic loading to work.
as far as I can tell, it’s NOT statically linked:
l
e-kots-b# ldd /vol/src/libexec/idng/idngd/idngd
/vol/src/libexec/idng/idngd/idngd:
libpq.so.5 => /usr/local/lib/libpq.so.5 (0x800932000)
libcrypto.so.8 => /lib/libcrypto.so.8 (0x800c00000)
libldap-2.4.so.2 => /usr/local/lib/libldap-2.4.so.2 (0x801070000)
libthr.so.3 => /lib/libthr.so.3 (0x8012b7000)
libintl.so.8 => /usr/local/lib/libintl.so.8 (0x8014df000)
libssl.so.8 => /usr/lib/libssl.so.8 (0x8016ea000)
libc.so.7 => /lib/libc.so.7 (0x80195d000)
liblber-2.4.so.2 => /usr/local/lib/liblber-2.4.so.2 (0x801d18000)
e-kots-b# file !$
file /vol/src/libexec/idng/idngd/idngd
/vol/src/libexec/idng/idngd/idngd: ELF 64-bit LSB executable, x86-64, version 1 (FreeBSD), dynamically linked, interpreter /libexec/ld-elf.so.1, for FreeBSD 11.2 (1102501 <tel:1102501>), FreeBSD-style, not stripped
Post by Konstantin BelousovPost by Daniel Branisswhat magic is needed now?
danny
Post by Daniel Braniss_______________________________________________
https://lists.freebsd.org/mailman/listinfo/freebsd-hackers <https://lists.freebsd.org/mailman/listinfo/freebsd-hackers>
_______________________________________________
https://lists.freebsd.org/mailman/listinfo/freebsd-hackers <https://lists.freebsd.org/mailman/listinfo/freebsd-hackers>