Re: Problems with linker (ld)
Re: Problems with linker (ld)
- Subject: Re: Problems with linker (ld)
- From: Patrick Rutkowski <email@hidden>
- Date: Wed, 4 Jun 2008 18:38:23 -0400
Like Jean-Daniel Dupas said, if the linker can't find
the library, and you know the library exists, then the
first thing to do is to make sure that the library's location
is in the linkers search path. Try adding -L/usr/local/lib
as a linker flag, but be sure to pass it as the first flag
as opposed to appending it to the end; if I recall correctly
that sometimes matters.
-Patrick
On Jun 4, 2008, at 3:16 PM, Fabrizio Bertocci wrote:
Well,
Unfortunately that is not the problem... because the error I get are
about some unresolved externals, and not library not found (that is
the error you get when the linker can't find the right library).
Interesting enough, when I try with a small library (typical hello
world-style), everything works, but not with the xmlrpc-c library...
I will continue investigating this issue...
F
On Wed, Jun 4, 2008 at 7:11 AM, Jean-Daniel Dupas
<email@hidden> wrote:
is /usr/loca/lib in your library search path in Xcode target build
settings
?
I don't think it is part of the default search path.
Le 4 juin 08 à 14:58, Fabrizio Bertocci a écrit :
I'm having a weird problem with the linker I cannot explain. Before
filing it as a possible bug, I'd like to have your opinion on that.
Brief description:
I'm building an executable (command-line) that requires some
external
libraries.
Let's say I need to link (statically) with:
/usr/local/lib/libfoo.a
/usr/local/lib/libbar.a
/usr/local/lib/libfoo++.a
/usr/local/lib/libbar++.a
When I add those libraries to my Xcode project, Xcode end up passing
them to the link phase using the -l<lib> form:
-lfoo -lbar -lfoo++ -lbar++
Unfortunately, the link phase reports a bunch of unresolved symbols.
If I invoke by hand ld by specifying the static libs directly as
input
files instead of libraries everything works fine:
ld ... /usr/local/lib/libfoo.a /usr/locallib/libbar.a
/usr/local/lib/libfoo++.a /usr/local/lib/libbar++.a
Interested?
If you want to reproduce it, download the xmlrpc-c library from
Sourceforge
(xmlrpc-c.sourceforge.net), build it and install it under /usr/local
and try to build one of the example first using the form that uses
the
-l<lib> flag, and then with the other form.
In my case I also discovered that ONLY ONE library needs to be
listed
using /usr/local/lib/<blah>.a...
To be more specific, this is *NOT* working:
ld <...> -lxmlrpc++ -lxmlrpc_server_abyss++ -lxmlrpc_server++
-lxmlrpc_server_abyss -lxmlrpc_server -lxmlrpc_abyss -lxmlrpc_util
-lxmlrpc_xmlparse -lxmlrpc_xmltok -lxmlrpc
and this IS WORKING:
-lxmlrpc++ -lxmlrpc_server_abyss++ -lxmlrpc_server++
-lxmlrpc_server_abyss -lxmlrpc_server -lxmlrpc_abyss -lxmlrpc_util
-lxmlrpc_xmlparse -lxmlrpc_xmltok /usr/local/lib/libxmlrpc.a
Weird isn't it?
Am I missing something?
Is it really a bug ?
Thanks for your opinion.
Fab
_______________________________________________
Do not post admin requests to the list. They will be ignored.
Darwin-dev mailing list (email@hidden)
Help/Unsubscribe/Update your Subscription:
This email sent to email@hidden
_______________________________________________
Do not post admin requests to the list. They will be ignored.
Darwin-dev mailing list (email@hidden)
Help/Unsubscribe/Update your Subscription:
This email sent to email@hidden