01-09-2010
You can't just call a function from an executable. If you want to graba function from a file as a function pointer and execute it, you have to do so from a shared library with the dlopen() series of calls. To compile a shared library instead of an executable file, add the -shared flag (and, on some architectures, -fPIC). See man dlopen.
10 More Discussions You Might Find Interesting
1. Shell Programming and Scripting
here's the Perl code snippet...
how can i call my C executable 'porter-stemmer' and pass it $1 as
an argument? Thanks for the help!
# Read through the original topic set, and modify based on the current
# pre-processing options
while (<TOPIC_ORIG>)
{
# Run pre-processing over only the... (3 Replies)
Discussion started by: mark_nsx
3 Replies
2. Programming
Hi,
I want to write a program in C or in Perl which will tell me that a function is called in which executables.
I tried to use the unix command like 'nm', 'strings' and so on to find out whether a function is called in that executable or not but could not able to find a clue. The whole... (1 Reply)
Discussion started by: rocky_74
1 Replies
3. Programming
Hi everybody!
Could you please tell me how can I launch an executable from a C++ (on unix) program?
thanks in advance! (2 Replies)
Discussion started by: nadiamihu
2 Replies
4. Shell Programming and Scripting
Hi all ,
I need to call an executable (.exe) using shell script.
Actual need is i need to call that shell script and do an export of some tables
is there any way . the executable is datamover
Please let me know if there are any option !! (2 Replies)
Discussion started by: raghav1982
2 Replies
5. Shell Programming and Scripting
Now I am using the HP-UX11.11 version.
The scripts are runninh in KSH shell.
While I wan to call one executable of any Pro*C file, I have got the following error, however the executable is running fine directly.
testpri Started at 10.05.200923:40
/usr/lib/dld.sl: Bad magic number for... (0 Replies)
Discussion started by: priyankak
0 Replies
6. Programming
hi guys
i have only basic knowledge of c so guys plz help me .....
i want 2 call c executable which requires file name as argument and i need to modify file contents before calling that executable now my question is how can i call this c executable inside another c program with arguments ??
i... (9 Replies)
Discussion started by: zedex
9 Replies
7. Shell Programming and Scripting
Dear list
its my first post and i would like to greet everyone
What i would like to do is select records 7 and 11 from each files in a folder then run an executable inside the script for the selected parameters.
The file format is something like this
7 100 200
7 100 250
7 100 300 ... (1 Reply)
Discussion started by: Gtolis
1 Replies
8. Programming
Can anyone give me a makefile that creates 3 exe?for example, let's suppose i have the following files:
blah1.c
blah1.h
blah2.c
blah2.h
blah3.c
blah3.h
i've searched and searched but so far i was not able to complete it. (4 Replies)
Discussion started by: bashuser2
4 Replies
9. Shell Programming and Scripting
Hi, I am making a program that needs to detect if the program name in parameter is a valid runable program.
But the line if ; then never seem to work.
Even if I run like:
./script cat "-u" cat "-u" inputfile
Thank you everyone.
#!/bin/bash
#
usage() { #print usage message and quit... (4 Replies)
Discussion started by: leonmerc
4 Replies
10. Shell Programming and Scripting
I am running the below loop that to process the 3 bam files (which isn't always the case). A .py executable is then called using | xargs sh to further process. If I just run it with echo the output is fine and expected, however when
| xargs sh is added I get the error. I tried adding | xargs... (4 Replies)
Discussion started by: cmccabe
4 Replies
DLSYM(3) Linux Programmer's Manual DLSYM(3)
NAME
dlsym, dlvsym - obtain address of a symbol in a shared object or executable
SYNOPSIS
#include <dlfcn.h>
void *dlsym(void *handle, const char *symbol);
#define _GNU_SOURCE
#include <dlfcn.h>
void *dlvsym(void *handle, char *symbol, char *version);
Link with -ldl.
DESCRIPTION
The function dlsym() takes a "handle" of a dynamic loaded shared object returned by dlopen(3) along with a null-terminated symbol name, and
returns the address where that symbol is loaded into memory. If the symbol is not found, in the specified object or any of the shared
objects that were automatically loaded by dlopen(3) when that object was loaded, dlsym() returns NULL. (The search performed by dlsym() is
breadth first through the dependency tree of these shared objects.)
Since the value of the symbol could actually be NULL (so that a NULL return from dlsym() need not indicate an error), the correct way to
test for an error is to call dlerror(3) to clear any old error conditions, then call dlsym(), and then call dlerror(3) again, saving its
return value into a variable, and check whether this saved value is not NULL.
There are two special pseudo-handles that may be specified in handle:
RTLD_DEFAULT
Find the first occurrence of the desired symbol using the default shared object search order. The search will include global sym-
bols in the executable and its dependencies, as well as symbols in shared objects that were dynamically loaded with the RTLD_GLOBAL
flag.
RTLD_NEXT
Find the next occurrence of the desired symbol in the search order after the current object. This allows one to provide a wrapper
around a function in another shared object, so that, for example, the definition of a function in a preloaded shared object (see
LD_PRELOAD in ld.so(8)) can find and invoke the "real" function provided in another shared object (or for that matter, the "next"
definition of the function in cases where there are multiple layers of preloading).
The _GNU_SOURCE feature test macro must be defined in order to obtain the definitions of RTLD_DEFAULT and RTLD_NEXT from <dlfcn.h>.
The function dlvsym() does the same as dlsym() but takes a version string as an additional argument.
RETURN VALUE
On success, these functions return the address associated with symbol. On failure, they return NULL; the cause of the error can be diag-
nosed using dlerror(3).
VERSIONS
dlsym() is present in glibc 2.0 and later. dlvsym() first appeared in glibc 2.1.
ATTRIBUTES
For an explanation of the terms used in this section, see attributes(7).
+------------------+---------------+---------+
|Interface | Attribute | Value |
+------------------+---------------+---------+
|dlsym(), dlvsym() | Thread safety | MT-Safe |
+------------------+---------------+---------+
CONFORMING TO
POSIX.1-2001 describes dlsym(). The dlvsym() function is a GNU extension.
NOTES
History
The dlsym() function is part of the dlopen API, derived from SunOS. That system does not have dlvsym().
EXAMPLE
See dlopen(3).
SEE ALSO
dl_iterate_phdr(3), dladdr(3), dlerror(3), dlinfo(3), 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/.
Linux 2017-09-15 DLSYM(3)