01-17-2020
rpath is actually a linker option rather then a compiler option. gcc passes it to ld.
Well, th estandard way to use shared objects (.so) is to install them in the system directories used for that purpose (/usr/lib etc.) but that's not always possible. The archive (.a) allows you to link objects into your executable which produces a larger exectable but gets around the problem. If the library is updated you must recompile whereas with a shared object you only need to recompile if the update breaks your code.
For the loader to load a shared object at runtime it must know where to find them. rpath tells the linker to embed the path in the header of the executable but if the so is moved the loader won't be able to load it. ORIGIN resolves to whereeve the binary is at runtime so as long as the library stays with the executable it works.
-Greg.
This User Gave Thanks to GRMartin For This Post:
9 More Discussions You Might Find Interesting
1. UNIX for Dummies Questions & Answers
I have created symbolic links to several frequently used commands, for example:
"lt" is a link to "ls -ltrgo|tail". What can I do to make these links available system-wide, or at least in the directories my coworkers are in most of the time? I have copied the link to several directories, and... (6 Replies)
Discussion started by: jpprial
6 Replies
2. UNIX for Advanced & Expert Users
Does anyone know how to make system wide changes to the CDE's front panel icons? I dont know if it matters but im running Solaris 9.
THanks (1 Reply)
Discussion started by: meyersp
1 Replies
3. UNIX for Dummies Questions & Answers
Hi, I have a task to search for a file called 'Xstartup' in the whole system because there might be different versions of it which overrite eachother.
Can anyone suggest a smart command to run this search ? The machine needs to scan every single folder beginning from root.
Please help, I am... (5 Replies)
Discussion started by: DGoubine
5 Replies
4. Filesystems, Disks and Memory
Yea i was wondering how i would mount, and create a FAT directory that way i can save files in the FAT directory in a windows system and be able to access them on Linux systems. Or if there is any other way to share files between Linux and Windows. Any responds will help... thanks! (2 Replies)
Discussion started by: kyoist
2 Replies
5. Shell Programming and Scripting
Hello,
I am new to shell scripting and I was trying to write a script that would force a system wide password change except for admins. I am having some trouble and any help that someone could give me would be greatly appreciated. I am trying to do it by using the UID as the marker for anyone... (6 Replies)
Discussion started by: kilemark
6 Replies
6. Linux
Hi,
I need to look for a config file (ldap.conf) and pick the latest modified file.
`locate` tells me there are many ldap.conf's, some in /etc, /usr, /home, etc.
Is there some way I can sort them by last modified time via bash?
I was thinking maybe I could pipe the output of `locate` to `ls... (4 Replies)
Discussion started by: Housni
4 Replies
7. Linux
I have installed user-mode linux kernel in Ubuntu 10.10 with the help of Synaptic package manager.
But I'm not getting how to run it.
If we install it manually, we've to run it using the executable binary file.
But here, I'm unable to locate any such file.
Please help....
Thanking You....
... (0 Replies)
Discussion started by: rohitadeshmukh1
0 Replies
8. Red Hat
Hi everybody,
How can I change the default UMASK for non root users, e.g. I want the umask for every new created user will be 0044.
Thanks (6 Replies)
Discussion started by: leo_ultra_leo
6 Replies
9. Shell Programming and Scripting
When looking for wherever a program or a filename appears in the system, a short scrip is "findinner" which another script calls with a long parameter list consisting of path names ending with ".sh" or ".menu". "findinner" looks like this:
# If not .savenn file, show name and result of grep.
#... (4 Replies)
Discussion started by: wbport
4 Replies
LEARN ABOUT DEBIAN
execstack
execstack(8) System Manager's Manual execstack(8)
NAME
execstack - tool to set, clear, or query executable stack flag of ELF binaries and shared libraries
SYNOPSIS
execstack [OPTION...] [FILES]
DESCRIPTION
execstack is a program which sets, clears, or queries executable stack flag of ELF binaries and shared libraries. Linux has in the past
allowed execution of instructions on the stack and there are lots of binaries and shared libraries assuming this behaviour. Furthermore,
GCC trampoline code for e.g. nested functions requires executable stack on many architectures. To avoid breaking binaries and shared
libraries which need executable stack, ELF binaries and shared libraries now can be marked as requiring executable stack or not requiring
it. This marking is done through the p_flags field in the PT_GNU_STACK program header entry. If the marking is missing, kernel or dynamic
linker need to assume it might need executable stack. The marking is done automatically by recent GCC versions (objects using trampolines
on the stack are marked as requiring executable stack, all other newly built objects are marked as not requiring it) and linker collects
these markings into marking of the whole binary or shared library. The user can override this at assembly time (through --execstack or
--noexecstack assembler options), at link time (through -z execstack or -z noexecstack linker options) and using the execstack tool also on
an already linker binary or shared library. This tool is especially useful for third party shared libraries where it is known that they
don't need executable stack or testing proves it.
OPTIONS
-s --set-execstack
Mark binary or shared library as requiring executable stack.
-c --clear-execstack
Mark binary or shared library as not requiring executable stack.
-q --query
Query executable stack marking of binaries and shared libraries. For each file it prints either - when executable stack is not
required, X when executable stack is required or ? when it is unknown whether the object requires or doesn't require executable
stack (the marking is missing).
-V Print execstack version and exit.
-? --help
Print help message.
--usage
Print a short usage message.
ARGUMENTS
Command line arguments should be names of ELF binaries and shared libraries which should be modified or queried.
EXAMPLES
# execstack -s ~/lib/libfoo.so.1
will mark ~/lib/libfoo.so.1 as requiring executable stack.
# execstack -c ~/bin/bar
will mark ~/bin/bar as not requiring executable stack.
# execstack -q ~/lib/libfoo.so.1 ~/bin/bar
will query executable stack marking of the given files.
SEE ALSO
ld.so(8).
BUGS
execstack doesn't support yet marking of executables if they do not have PT_GNU_STACK program header entry nor they have room for program
segment header table growth.
AUTHORS
Jakub Jelinek <jakub@redhat.com>.
28 October 2003 execstack(8)