linux gnu tutorial - How to print the ld(linker) search path
I'm not sure that there is any option for simply printing the full effective search path.
But: the search path consists of directories specified by
-L options on the command line, followed by directories added to the search path by
SEARCH_DIR("...") directives in the linker script(s). So you can work it out if you can see both of those, which you can do as follows:
If you're invoking
-Loptions are whatever you've said they are.
- To see the linker script, add the
--verboseoption. Look for the
SEARCH_DIR("...")directives, usually near the top of the output. (Note that these are not necessarily the same for every invocation of
ld-- the linker has a number of different built-in default linker scripts, and chooses between them based on various other linker options.)
If you're linking via
- You can pass the
gccso that it shows you how it invokes the linker. In fact, it normally does not invoke
lddirectly, but indirectly via a tool called
collect2(which lives in one of its internal directories), which in turn invokes
ld. That will show you what
-Loptions are being used.
- You can add
gccoptions to make it pass
--verbosethrough to the linker, to see the linker script as described above.
What is the way to print the search paths that in looked by ld in the order it searches.
The most compatible command I've found for gcc and clang on Linux (thanks to armando.sano):
$ gcc -m64 -Xlinker --verbose 2>/dev/null | grep SEARCH | sed 's/SEARCH_DIR("=\?\([^"]\+\)"); */\1\n/g' | grep -vE '^$'
if you give
-m32, it will output the correct library directories.
Examples on my machine:
/usr/x86_64-linux-gnu/lib64 /usr/i686-linux-gnu/lib64 /usr/local/lib/x86_64-linux-gnu /usr/local/lib64 /lib/x86_64-linux-gnu /lib64 /usr/lib/x86_64-linux-gnu /usr/lib64 /usr/local/lib /lib /usr/lib
/usr/i686-linux-gnu/lib32 /usr/local/lib32 /lib32 /usr/lib32 /usr/local/lib/i386-linux-gnu /usr/local/lib /lib/i386-linux-gnu /lib /usr/lib/i386-linux-gnu /usr/lib
Mac version: $ ld -v 2, don't know how to get detailed paths. output
Library search paths: /usr/lib /usr/local/lib Framework search paths: /Library/Frameworks/ /System/Library/Frameworks/