469,908 Members | 2,131 Online
Bytes | Developer Community
New Post

Home Posts Topics Members FAQ

Post your question to a community of 469,908 developers. It's quick & easy.

Xerces Compilation Issue

Hello,

Let me preface this post by saying I'm new to C/C++ and to gcc/g++.
Now then, I'm trying to get Xerces (C++) working on a (64-bit) redhat
machine. The Xerces binaries were part of the Redhat distribition, and
are under /usr/lib64/httpd/.../xerces/ (Apache's stuff right?). Below
is the (simple) source file I am trying to compile:

#include <xercesc/util/PlatformUtils.hpp>
#include <iostream>

XERCES_CPP_NAMESPACE_USE

int main(int argc, char* argv[])
{

try
{
XMLPlatformUtils::Initialize();
}
catch (const XMLException& toCatch)
{
// Do your failure processing here
return 1;
}

// Do your actual work with Xerces-C++ here.

std::cout << "Hello, world!\n";
//Terminate DDAS_XML_Parser
XMLPlatformUtils::Terminate();

// Other terminations and cleanup.
return 0;
}
The following command runs without error:

$ g++ -Wall -c DDAS_XML_Parser.C -L/usr/lib64/httpd/modules/xerces/
xerces-c-redhat_AS4-gcc_343/lib -I/usr/lib64/httpd/modules/xerces/
xerces-c-redhat_AS4-gcc_343/include

Now I get the following errors when I try to compile this program as
an executable:

$ g++ -Wall DDAS_XML_Parser.o -o DDAS_XML_Parser

DDAS_XML_Parser.o(.text+0x135): In function `main':
: undefined reference to `xercesc_2_7::XMLUni::fgXercescDefaultLocale'
DDAS_XML_Parser.o(.text+0x13a): In function `main':
: undefined reference to
`xercesc_2_7::XMLPlatformUtils::Initialize(char const*, char const*,
xercesc_2_7::PanicHandler*, xercesc_2_7::MemoryManager*, bool)'
DDAS_XML_Parser.o(.text+0x17e): In function `main':
: undefined reference to `xercesc_2_7::XMLPlatformUtils::Terminate()'
DDAS_XML_Parser.o(.gcc_except_table+0x10): undefined reference to
`typeinfo for xercesc_2_7::XMLException'
collect2: ld returned 1 exit status

I have already defined the LD_LIBRARY_PATH to point to the location of
the ../lib folder which contains the .so files and the C_PLUS_INCLUDE
points to the ../include location. So the explicit command line
references are just making sure (in my mind) that g++ sees those
folders. But it's like the compiler doesn't see the .so files, even
though I think I'm telling it (twice) where it is.

Please let me know if I've left out any pertinent data needed for
diagnosis.

Help is greatly appreciated and thanks ahead of time,

Max

Oct 3 '07 #1
5 2343
On Oct 3, 4:56 am, mearvk <mea...@gmail.comwrote:
The following command runs without error:

$ g++ -Wall -c DDAS_XML_Parser.C -L/usr/lib64/httpd/modules/xerces/
xerces-c-redhat_AS4-gcc_343/lib -I/usr/lib64/httpd/modules/xerces/
xerces-c-redhat_AS4-gcc_343/include
(I've been away from *nix for a while but I'll try ...)
OK you've compiled your source into an object file. But library
paths (-L) are irrelevant at this stage.
Now I get the following errors when I try to compile this program as
an executable:
$ g++ -Wall DDAS_XML_Parser.o -o DDAS_XML_Parser
You're not compiling here - you're trying to link. This is
where the -L stuff should go, but you've set up an env var so that
shouldn't matter. BUT you're not specifying WHAT libraries to link:
try the -l (little ell) option.

HTH.

Oct 3 '07 #2
On Oct 3, 11:11 am, tragomaskhalos <dave.du.verg...@logicacmg.com>
wrote:
On Oct 3, 4:56 am, mearvk <mea...@gmail.comwrote:
The following command runs without error:
$ g++ -Wall -c DDAS_XML_Parser.C -L/usr/lib64/httpd/modules/xerces/
xerces-c-redhat_AS4-gcc_343/lib -I/usr/lib64/httpd/modules/xerces/
xerces-c-redhat_AS4-gcc_343/include

(I've been away from *nix for a while but I'll try ...)
OK you've compiled your source into an object file. But library
paths (-L) are irrelevant at this stage.
Now I get the following errors when I try to compile this program as
an executable:
$ g++ -Wall DDAS_XML_Parser.o -o DDAS_XML_Parser

You're not compiling here - you're trying to link. This is
where the -L stuff should go, but you've set up an env var so that
shouldn't matter. BUT you're not specifying WHAT libraries to link:
try the -l (little ell) option.

HTH.

I've tried the explicit -L and -I flags to link and nothing. Even did
a ldconfig -v and a ldconfig -p ../lib to no avail.

Any other ideas?

Thanks!

Oct 4 '07 #3
On Oct 4, 5:38 am, mearvk <mea...@gmail.comwrote:
On Oct 3, 11:11 am, tragomaskhalos <dave.du.verg...@logicacmg.com>
wrote:
You're not compiling here - you're trying to link. This is
where the -L stuff should go, but you've set up an env var so that
shouldn't matter. BUT you're not specifying WHAT libraries to link:
try the -l (little ell) option.

I've tried the explicit -L and -I flags to link and nothing. Even did
a ldconfig -v and a ldconfig -p ../lib to no avail.

Any other ideas?
1. Did you try my suggestion and research the -l (little ell)
option? This should do it for .a libraries, you may need
something else if xerces is a shared library.
2. Google "man g++" and "man gcc" and RT..M !!

Oct 4 '07 #4
On Oct 4, 5:42 am, tragomaskhalos <dave.du.verg...@logicacmg.com>
wrote:
On Oct 4, 5:38 am, mearvk <mea...@gmail.comwrote:
On Oct 3, 11:11 am, tragomaskhalos <dave.du.verg...@logicacmg.com>
wrote:
You're not compiling here - you're trying to link. This is
where the -L stuff should go, but you've set up an env var so that
shouldn't matter. BUT you're not specifying WHAT libraries to link:
try the -l (little ell) option.
I've tried the explicit -L and -I flags to link and nothing. Even did
a ldconfig -v and a ldconfig -p ../lib to no avail.
Any other ideas?

1. Did you try my suggestion and research the -l (little ell)
option? This should do it for .a libraries, you may need
something else if xerces is a shared library.
2. Google "man g++" and "man gcc" and RT..M !!
Yes I tried the -l option. Even if I'm in /usr/lib/ or lib64 all I get
when using -lxerces-c is that the versions that ld sees are all
incompatible.
Oct 4 '07 #5
On Oct 4, 6:27 pm, mearvk <mea...@gmail.comwrote:
>
Yes I tried the -l option. Even if I'm in /usr/lib/ or lib64 all I get
when using -lxerces-c is that the versions that ld sees are all
incompatible.- Hide quoted text -
In that case all I can suggest is try a newsgroup dedicated to
g++ / gcc - hopefully those guys will have seen this before.
Good luck.
Oct 5 '07 #6

This discussion thread is closed

Replies have been disabled for this discussion.

Similar topics

reply views Thread by Dale Gerdemann | last post: by
1 post views Thread by Vijay Jain | last post: by
1 post views Thread by Waqarahmed | last post: by
reply views Thread by Salome Sato | last post: by
By using this site, you agree to our Privacy Policy and Terms of Use.