10-28-2009
GCC: Choose my own linker
Hi,
I do not use the default linker, and instead us another one and pass this argument -Wl,--dynamic-linker=<path to linker> to gcc when compiling. However, what happens if the linker is not under /lib and /lib64 and I am not able to create a symlink to the linker in /lib or /lib64 due to no access to sudo rights. So instead I pass this -Wl,--dynamic-linker=/home/myhome/ld-custom.so
Will the linker be properly found when running the program on say some other computer where the linker is not located where it was in link-time? It will be located under /lib64 on target.
10 More Discussions You Might Find Interesting
1. UNIX for Dummies Questions & Answers
hai
I have installed Linux 7.0 on my system and i have an doubt the
linker
i ran simple hello.c program with gcc compiler
gcc -c hello.c
i want linker to produce the output
so i put on the command line as
ld first.o -lc
but it is not running ver properly
but there is an... (1 Reply)
Discussion started by: rajashekaran
1 Replies
2. Linux
Hi All,
I m new to this group.
I m facing one problem during my linking of CPP code at Linux env.
after compliation i m getting error
"undefined reference to ....."
Please anyone help me to resolve this error.
Regards,
ASR
make: Leaving directory /fwk'
echo g++ -o server ... (1 Reply)
Discussion started by: ASRRAJ
1 Replies
3. Programming
Im trying to compile some code that involves using X-Windows based functions (XDisplayName() and XOpenDisplay() ), however each time I run the compiler, Im getting a problem with the linker.
The linker says that both XDisplayName() and XOpenDisplay() are unresolved text symbols. Is there a... (1 Reply)
Discussion started by: JamesGoh
1 Replies
4. Solaris
AIM- Install Oracle 11g on Solaris using VMWare
Steps
1.Logged on as root
2.Created subfolders à /usr/local/bin & /usr/local/bin/gcc
3.Downloaded gcc & libiconv & unzipped them on my harddrive & burnt them on CD
4.Copied files from CD to /usr/local/bin/gcc
5.Terminal (root) à pkgadd -d... (8 Replies)
Discussion started by: Ackers
8 Replies
5. Solaris
Hi,
I'm confused about the GCC & Linking process could somebody please briefly explain?
I have GCC 3.4.6 installed from SunFreeware. Reading the narrative alongside the package states "It was compiled to use the SUN assembler and loader usually in /usr/ccs/bin if the SUNW developer packages... (1 Reply)
Discussion started by: Celtic_Monkey
1 Replies
6. HP-UX
Hi,
The necessary symbols in a shared library can be exported to the application using linker option --version-script in Linux. The same can be done in Hp-ux using linker option +e. This can also be done by listing all the global symbols with +e in a file with linker option ld -c filename in... (0 Replies)
Discussion started by: roopa_v
0 Replies
7. Programming
Hai,
I have two (Pgm1.c and Pgm2.c) simple programs, which is compiled using gcc. Now we have two exe's (Pgm1 and Pgm2). When i executed the nm Pgm1 and nm Pgm2, in the listed symbols the address of main is same for both programs (08048344 T main) at run time also.
Doubt:
1) What is this... (3 Replies)
Discussion started by: rajamohan
3 Replies
8. Solaris
Hey guys
I have a solaris 10 OS, with a zone configured. In that zone, I am trying to install an Oracle Client. However, when I run the oracle installer, I get the following error:
ld.so.1: java: fatal: libexpat.so.0: open failed: No such file or directory
ld.so.1: java: fatal:... (2 Replies)
Discussion started by: goodvikings
2 Replies
9. Solaris
Hello all,
I am releatively new to Solaris and I am the System administrator for my branch at the FAA. This is the first time I can say I have really messed something up thankfully. My issue came up after installing and uninstalling Oracle Secure Backup which i felt I needed to do a clean... (7 Replies)
Discussion started by: jbirkes
7 Replies
10. Programming
I have a build where I wish to link against and load a specific version of a library and a different version of the same library is installed on the system. I'm using a -L option to point to the version that I wish to link against but gcc still seems to choose the installed version. Is there a way... (4 Replies)
Discussion started by: Richard Johnson
4 Replies
ld.so(8) System Manager's Manual ld.so(8)
NAME
ld.so, ld-linux.so* - dynamic linker/loader
DESCRIPTION
ld.so loads the shared libraries needed by a program, prepares the program to run, and then runs it. Unless explicitly specified via the
-static option to ld during compilation, all Linux programs are incomplete and require further linking at run time.
The necessary shared libraries needed by the program are searched for in the following order
o Using the DT_RPATH dynamic section attribute of the binary if present and DT_RUNPATH attribute does not exist.
o Using the environment variable LD_LIBRARY_PATH . Except if the executable is a setuid/setgid binary, in which case it is ignored.
o Using the DT_RUNPATH dynamic section attribute of the binary if present.
o From the cache file /etc/ld.so.cache which contains a compiled list of candidate libraries previously found in the augmented library
path. If, however, the binary was linked with -z nodeflib linker option, libraries in the default library paths are skipped.
o In the default path /lib, and then /usr/lib. If the binary was linked with -z nodeflib linker option, this step is skipped.
SYNOPSIS
The dynamic linker can be run either indirectly through running some dynamically linked program or library (in which case no command line
options to the dynamic linker can be passed and the dynamic linker which is stored in the .interp section of the program is executed) or
directly by running:
/lib/ld-linux.so.* [OPTIONS] [PROGRAM [ARGUMENTS]]
COMMAND LINE OPTIONS
--list List all dependencies and how they are resolved.
--verify
Verify that program is dynamically linked and this dynamic linker can handle it.
--library-path PATH
Override LD_LIBRARY_PATH environment variable setting (see below).
--ignore-rpath LIST
Ignore RPATH and RUNPATH information in object names in LIST.
ENVIRONMENT
LD_LIBRARY_PATH
A colon-separated list of directories in which to search for ELF libraries at execution-time. Similar to the PATH environment vari-
able.
LD_PRELOAD
A whitespace-separated list of additional, user-specified, ELF shared libraries to be loaded before all others. This can be used to
selectively override functions in other shared libraries. For setuid/setgid ELF binaries, only libraries in the standard search
directories that are also setuid will be loaded.
LD_TRACE_LOADED_OBJECTS
If set to non-empty string, causes the program to list its dynamic library dependencies, as if run by ldd, instead of running nor-
mally.
LD_BIND_NOW
If set to non-empty string, causes the dynamic linker to resolve all symbols at program startup instead of deferring function call
resolval to the point when they are first referenced.
LD_WARN
If set to non-empty string, warn about unresolved symbols.
LD_DEBUG
Output verbose debugging information about the dynamic linker. If set to all prints all debugging information it has, if set to
help prints a help message about which categories can be specified in this environment variable.
LD_DEBUG_OUTPUT
File where LD_DEBUG output should be fed into, default is standard output. LD_DEBUG_OUTPUT is ignored for setuid/setgid binaries.
LD_VERBOSE
If set to non-empty string, output symbol versioning information about the program if querying information about the program (ie.
either LD_TRACE_LOADED_OBJECTS has been set, or --list or --verify options have been given to the dynamic linker).
FILES
/lib/ld-linux.so.* ELF dynamic linker/loader
/etc/ld.so.cache
File containing a compiled list of directories in which to search for libraries and an ordered list of candidate libraries.
/etc/ld.so.preload
File containing a whitespace separated list of ELF shared libraries to be loaded before the program. libraries and an ordered list
of candidate libraries.
lib*.so*
shared libraries
SEE ALSO
ldd(1), ldconfig(8).
AUTHORS
Roland McGrath, Ulrich Drepper and others. This man page is derived from libc 5 ld.so manual page.
30 October 2000 ld.so(8)