05-07-2007
I have an issue with using C++ in shared libraries and exposing name mangled exports. There is no problem with using C style exports and having the interface to the library follow C constaints and using C++ internally within the library.
C++ suffers from a number of limitations such as the fragile base class problem, non standard name mangling schemes, different vtable layouts between compilers that prevent it being a true language for components.
There can also be problems with C++ in shared libraries if loaded by an application written in C or a different C++ compiler due to initialisation of static objects not working.
How are you intending to write/generate your 'export' file?
5 More Discussions You Might Find Interesting
1. Programming
I need to load a dynamic library from a statically linked program. Is there a way without recompiling my program.
when i try to do that my program just crashes.
If not possible, how can I avoid crashing the program when i try to load the dynamic lib, again without recompiling.
If my... (1 Reply)
Discussion started by: disclaimer
1 Replies
2. UNIX for Dummies Questions & Answers
hi,
For some special reason , I'd like to control the memory address for the shared libraries in my dynamically linked process.
And it is the "ld" which interpret the dynamically linked library, and in my system, the "ld-linux.so.2" is put at 0x00812000. Then I use "prelink -r" command to change... (0 Replies)
Discussion started by: zerocool_08
0 Replies
3. Linux
hi,
For some special reason , I'd like to control the memory address for the shared libraries in my dynamically linked process.
And it is the "ld" which interpret the dynamically linked library, and in my system, the "ld-linux.so.2" is put at 0x00812000. Then I use "prelink -r" command to... (3 Replies)
Discussion started by: zerocool_08
3 Replies
4. Programming
I am attempting to port a program from OS X to Linux. It's C++ & Qt Creator and I did the original Windows to OS X port, so I tried to make it as POSIX-compliant as possible; the OS X port works well, and the Linux port builds and starts (it's on Ubuntu 9.10) but has some issues running.
The... (2 Replies)
Discussion started by: Hodapp87
2 Replies
5. Homework & Coursework Questions
I need help program in C... :create a program that runs two processes linked oven (1 Reply)
Discussion started by: gizmo16
1 Replies
PLDD(1) Linux User Manual PLDD(1)
NAME
pldd - display dynamic shared objects linked into a process
SYNOPSIS
pldd pid
pldd option
DESCRIPTION
The pldd command displays a list of the dynamic shared objects that are linked into the process with the specified process ID. The list
includes the libraries that have been dynamically loaded using dlopen(3).
OPTIONS
-?, --help
Display program help message.
--usage
Display a short usage message.
-V, --version
Display the program version.
EXIT STATUS
On success, pldd exits with the status 0. If the specified process does not exist, the user does not have permission to access its dynamic
shared object list, or no command-line arguments are supplied, pldd exists with a status of 1. If given an invalid option, it exits with
the status 64.
VERSIONS
pldd is available since glibc 2.15.
CONFORMING TO
The pldd command is not specified by POSIX.1. Some other systems have a similar command.
NOTES
The command
lsof -p PID
also shows output that includes the dynamic shared objects that are linked into a process.
The gdb(1) info shared command also shows the shared libraries being used by a process, so that one can obtain similar output to pldd using
a command such as the following (to monitor the process with the specified pid):
$ gdb -ex "set confirm off" -ex "set height 0" -ex "info shared"
-ex "quit" -p $pid | grep '^0x.*0x'
BUGS
Since glibc 2.19, pldd is broken: it just hangs when executed. It is unclear if it will ever be fixed.
EXAMPLE
$ echo $$ # Display PID of shell
1143
$ pldd $$ # Display DSOs linked into the shell
1143: /usr/bin/bash
linux-vdso.so.1
/lib64/libtinfo.so.5
/lib64/libdl.so.2
/lib64/libc.so.6
/lib64/ld-linux-x86-64.so.2
/lib64/libnss_files.so.2
SEE ALSO
ldd(1), lsof(1), dlopen(3), ld.so(8)
COLOPHON
This page is part of release 4.15 of the Linux man-pages project. A description of the project, information about reporting bugs, and the
latest version of this page, can be found at https://www.kernel.org/doc/man-pages/.
GNU
2017-09-15 PLDD(1)