Solved

Linking problem

Posted on 2002-04-12
5
185 Views
Last Modified: 2010-04-22
Hello.

While trying to check why my ./configure script cannot find my libraries,
I found this really confusing problem. I've got a libutil library in /usr/local/lib. When I compile a program

gcc -o test test.cpp -lutil -L/usr/local/lib

it goes just fine. But when instead i export LD_LIBRARY_PATH=/usr/local/lib and remove -L option, it fails (and also fails when ./configure checks for libraries, as I've seen in config.log). I've tried to putj /usr/local/lib in ld.so.conf and run ldconfig with no results.

My system is RH 7.2
0
Comment
Question by:Robson
5 Comments
 
LVL 4

Author Comment

by:Robson
ID: 6936429
I solved it!!! My problems were caused by my library name: libutil, which was exactly the same as one of standard system libraries. After renaming it to libfoo_util all goes fine!

And now: first expert who explains why one should not create librares named as standard libraries and why compilation worked with -L option will get at least B grade (I already know it, but I cannot pass points to myself :-)
0
 
LVL 4

Expert Comment

by:IainHere
ID: 6937076
It worked because the system library libutil is in /usr/lib or similar.  The first directory searched is the one specified by -L (and in order, too).  You shouldn't use standard names for the exact reason you posted this question.

More importantly, post a request in CS to have this question PAQ'd, and refund your points (with a link to this question).  Since you answered it yourself, you don't need pay for it.
0
 
LVL 51

Expert Comment

by:ahoffmann
ID: 6938545
ld does not use LD_LIBRARY_PATH for searching libraries (except Sun's bundled /usr/ccs/bin/ld)
So  gcc -o test test.cpp -lutil -L/usr/local/lib
works fine 'cause you specified a path to the libutil with -L.

When you omit -L, the default settings of library search pathes apply, and that contains /lib and /usr/lib where it finds libutil system library (if installed).

Check with gcc -v ...
0
 
LVL 1

Accepted Solution

by:
Computer101 earned 0 total points
ID: 6940320
Points refunded and placed in PAQ.

Computer101
E-E Moderator
0
 
LVL 4

Author Comment

by:Robson
ID: 6940321
Thanks IainHere! I'll do that.

To ahoffmann: setting LD_LIBRARY_PATH (after rewriting /etc/ld.so.conf) was my first act of desperation. Second act was tracking linking process with 'strace' :-) That's how I found that ld loads /usr/lib/libutil.so instead of /usr/local/lib/libutil.so

0

Featured Post

Enabling OSINT in Activity Based Intelligence

Activity based intelligence (ABI) requires access to all available sources of data. Recorded Future allows analysts to observe structured data on the open, deep, and dark web.

Join & Write a Comment

Suggested Solutions

Title # Comments Views Activity
IPtables not running - RHEL7 64bit 5 223
usage of %{name} in rpm spec file 4 49
Cloning a part of HDD MIPS Linux 16 110
Cron jobs 12 91
Have you ever been frustrated by having to click seven times in order to retrieve a small bit of information from the web, always the same seven clicks, scrolling down and down until you reach your target? When you know the benefits of the command l…
The purpose of this article is to fix the unknown display problem in Linux Mint operating system. After installing the OS if you see Display monitor is not recognized then we can install "MESA" utilities to fix this problem or we can install additio…
Illustrator's Shape Builder tool will let you combine shapes visually and interactively. This video shows the Mac version, but the tool works the same way in Windows. To follow along with this video, you can draw your own shapes or download the file…
This tutorial demonstrates a quick way of adding group price to multiple Magento products.

746 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

12 Experts available now in Live!

Get 1:1 Help Now