On Fri, Feb 17, 2012 at 01:12:04PM +0100, spam.spam.spam.s...@free.fr wrote:
> Indeed, I don't know this option.
> But, if I use it in my Makefile.am:
> bin_PROGRAMS = xmlparsefile
> xmlparsefile_SOURCES = main.c
> xmlparsefile_LIBS = `xml2-config --libs`
> xmlparsefile_CFLAGS = -Wall -Wextra `xml2-config --cflags`
> 
> The compile does now :
> $ gcc -DPACKAGE_NAME=\"xmlparsefile\" -DPACKAGE_TARNAME=\"xmlparsefile\" 
> -DPACKAGE_VERSION=\"0.1\" -DPACKAGE_STRING=\"xmlparsefile\ 0.1\" 
> -DPACKAGE_BUGREPORT=\"samson.pie...@etud.univ-montp2.fr\" -DPACKAGE_URL=\"\" 
> -DPACKAGE=\"xmlparsefile\" -DVERSION=\"0.1\" -I.    -Wall -Wextra 
> `xml2-config --cflags` -g -O2 -MT xmlparsefile-main.o -MD -MP -MF 
> .deps/xmlparsefile-main.Tpo -c -o xmlparsefile-main.o `test -f 'main.c' || 
> echo './'`main.c
> mv -f .deps/xmlparsefile-main.Tpo .deps/xmlparsefile-main.Po
> 
> So, it does something like this :
> $ gcc -Wall -Wextra `xml2-config --cflags` main.c
> 
> And I got the same error.
> 
> The "`xml2-config --libs`" has completely disappeared.
> 
> Are you sure about _LIBS option?

Oh sorry... it is _LDADD.

Christian

> ----- Mail original -----
> De: "Christian Engwer" <christian.eng...@uni-muenster.de>
> À: "spam spam spam spam" <spam.spam.spam.s...@free.fr>
> Cc: xml@gnome.org
> Envoyé: Vendredi 17 Février 2012 12:42:41
> Objet: Re: [xml] The order of arguments when compiling
> 
> Hi,
> 
> > xmlparsefile_SOURCES = main.c
> > xmlparsefile_LDFLAGS = `xml2-config --libs`
> 
> are you aware of the LIBS option?
> 
> xmlparsefile_LIBS = ...
> 
> This should allow for the approriate ordering.
> 
> Christian
> 
> > xmlparsefile_CFLAGS = -Wall -Wextra `xml2-config --cflags`
> > 
> > I think it's strange that GNU Automake do this choice if this is not 
> > compatible with most Unix linkers...
> > 
> > I will ask the GNU Automake mailing list to know if there is a way to set a 
> > different argument order than the default.
> > 
> > Any other suggestion is welcome.
> > 
> > ----- Mail original -----
> > De: "Csaba Raduly" <rcs...@gmail.com>
> > À: "spam spam spam spam" <spam.spam.spam.s...@free.fr>
> > Cc: xml@gnome.org
> > Envoyé: Vendredi 17 Février 2012 09:55:52
> > Objet: Re: [xml] The order of arguments when compiling
> > 
> > Hi spam,
> > 
> > On Thu, Feb 16, 2012 at 4:01 PM,   wrote:
> > > Hello,
> > >
> > > On a first computer, when I compile a C program using the libxml2 library 
> > > I do :
> > > $ gcc `xml2-config --cflags` `xml2-config --libs` main.c
> > > or
> > > $ gcc main.c `xml2-config --cflags` `xml2-config --libs`
> > > And it works (but the first method is better because it respects the 
> > > order of arguments in the gcc manual).
> > >
> > > On a second computer, if I compile like this, there is an error :
> > > $ gcc `xml2-config --cflags` `xml2-config --libs` main.c
> > > /tmp/cc7uNwed.o: In function `parseDoc':
> > > main.c:(.text+0xd): undefined reference to `xmlParseFile'
> > > main.c:(.text+0x51): undefined reference to `xmlCleanupParser'
> > > main.c:(.text+0x63): undefined reference to `xmlFreeDoc'
> > > main.c:(.text+0x68): undefined reference to `xmlCleanupParser'
> > > collect2: ld returned 1 exit status
> > > But if I compile like this, there is no error :
> > > $ gcc main.c `xml2-config --cflags` `xml2-config --libs`
> > >
> > > I thought this was a gcc problem but someone on the gcc mailing-list tell 
> > > me that probably I have compiled libxml2 on the second computer 
> > > "statically". And I should compile it "dynamically". It's true that on 
> > > the second computer, I have compiled myself the library (configure, make, 
> > > make install). On the first computer, this is my distro package.
> > >
> > > How should I compile libxml2 on the 2nd computer to have the same 
> > > behavior on the two computers?
> > 
> > You shouldn't; just use the last compilation command (with
> > `xml2-config --libs` at the end).
> > Most Unix linkers are one-pass; because of this, an object which needs
> > a symbol must appear before the object (or library) which supplies
> > that symbol.
> > 
> > See for example http://webpages.charter.net/ppluzhnikov/linker.html
> > 
> > GNU make's built-in rule for linking boils down to:
> > 
> > %: %.c
> > #  commands to execute (built-in):
> >          $(CC) $(CFLAGS) $(CPPFLAGS) $(LDFLAGS) $(TARGET_ARCH)      $^
> >     $(LOADLIBES) $(LDLIBS) -o $@
> > 
> > %: %.o
> >         $(CC) $(LDFLAGS) $(TARGET_ARCH)      $^      $(LOADLIBES)
> > $(LDLIBS) -o $@
> > 
> > As you can see, the list of source or object files ($^) is always
> > _before_ the list of libraries (in $(LDLIBS) or $(LOADLIBES) ).
> > 
> > Hope this helps,
> > Csaba
> > -- 
> > GCS a+ e++ d- C++ ULS$ L+$ !E- W++ P+++$ w++$ tv+ b++ DI D++ 5++
> > The Tao of math: The numbers you can count are not the real numbers.
> > Life is complex, with real and imaginary parts.
> > "Ok, it boots. Which means it must be bug-free and perfect. " -- Linus 
> > Torvalds
> > "People disagree with me. I just ignore them." -- Linus Torvalds
> > _______________________________________________
> > xml mailing list, project page  http://xmlsoft.org/
> > xml@gnome.org
> > http://mail.gnome.org/mailman/listinfo/xml
> _______________________________________________
> xml mailing list, project page  http://xmlsoft.org/
> xml@gnome.org
> http://mail.gnome.org/mailman/listinfo/xml
_______________________________________________
xml mailing list, project page  http://xmlsoft.org/
xml@gnome.org
http://mail.gnome.org/mailman/listinfo/xml

Reply via email to