|
|
Home » U++ Library support » U++ Library : Other (not classified elsewhere) » Linking problem
Linking problem [message #31309] |
Sun, 20 February 2011 15:15  |
busiek
Messages: 70 Registered: February 2011 Location: Poland
|
Member |
|
|
On Ubuntu Natty (development version of Ubuntu) I have problems with linking. For instance, compiling HelloWorld from examples gives in the end:
Linking...
/usr/bin/ld: /home/kubus/upp/out/Draw/GCC.Debug.Debug_full.Gui.Shared/$bl itz.o: undefined reference to symbol 'FT_New_Face'
/usr/bin/ld: note: 'FT_New_Face' is defined in DSO /usr/lib64/libfreetype.so.6 so try adding it to the linker command line
/usr/lib64/libfreetype.so.6: could not read symbols: Invalid operation
collect2: ld returned 1 exit status
I installed upp and theide version 3192-maverick-amd64. I found a similar problem somewhere else:
https://bugzilla.redhat.com/show_bug.cgi?id=677692
|
|
|
Re: Linking problem [message #31316 is a reply to message #31309] |
Sun, 20 February 2011 23:42   |
|
busiek wrote on Sun, 20 February 2011 15:15 | On Ubuntu Natty (development version of Ubuntu) I have problems with linking. For instance, compiling HelloWorld from examples gives in the end:
Linking...
/usr/bin/ld: /home/kubus/upp/out/Draw/GCC.Debug.Debug_full.Gui.Shared/$bl itz.o: undefined reference to symbol 'FT_New_Face'
/usr/bin/ld: note: 'FT_New_Face' is defined in DSO /usr/lib64/libfreetype.so.6 so try adding it to the linker command line
/usr/lib64/libfreetype.so.6: could not read symbols: Invalid operation
collect2: ld returned 1 exit status
I installed upp and theide version 3192-maverick-amd64. I found a similar problem somewhere else:
https://bugzilla.redhat.com/show_bug.cgi?id=677692
|
Hi busiek,
First of all, I can fully confirm this problem. Theide itself fails to build on natty both in i386 and amd64, just tried to build it in launchpad.
The problem is that debian (and hence Ubuntu as well) changed its attitude to indirect linking (see here). To make U++ work in natty and new debian we will have to revise the packages to explicitly list all the libraries needed without relaying on the indirect linking.
Hopefully it is just a few libs in uppsrc. I will try to do this ASAP. BTW: We are not the only project affected by this - it broke 1400+ packages in natty 
Also if you are interested in using upp/theide in natty, I can add natty versions to nightly builds as soon as this problem is resolved.
Best regards,
Honza
|
|
|
|
Re: Linking problem [message #31320 is a reply to message #31319] |
Mon, 21 February 2011 11:15   |
|
mirek wrote on Mon, 21 February 2011 09:45 |
dolik.rce wrote on Sun, 20 February 2011 17:42 |
busiek wrote on Sun, 20 February 2011 15:15 | On Ubuntu Natty (development version of Ubuntu) I have problems with linking. For instance, compiling HelloWorld from examples gives in the end:
Linking...
/usr/bin/ld: /home/kubus/upp/out/Draw/GCC.Debug.Debug_full.Gui.Shared/$bl itz.o: undefined reference to symbol 'FT_New_Face'
/usr/bin/ld: note: 'FT_New_Face' is defined in DSO /usr/lib64/libfreetype.so.6 so try adding it to the linker command line
/usr/lib64/libfreetype.so.6: could not read symbols: Invalid operation
collect2: ld returned 1 exit status
I installed upp and theide version 3192-maverick-amd64. I found a similar problem somewhere else:
https://bugzilla.redhat.com/show_bug.cgi?id=677692
|
Hi busiek,
First of all, I can fully confirm this problem. Theide itself fails to build on natty both in i386 and amd64, just tried to build it in launchpad.
The problem is that debian (and hence Ubuntu as well) changed its attitude to indirect linking (see here). To make U++ work in natty and new debian we will have to revise the packages to explicitly list all the libraries needed without relaying on the indirect linking.
Hopefully it is just a few libs in uppsrc. I will try to do this ASAP. BTW: We are not the only project affected by this - it broke 1400+ packages in natty 
Also if you are interested in using upp/theide in natty, I can add natty versions to nightly builds as soon as this problem is resolved.
Best regards,
Honza
|
Maybe we could just change that linker option instead?
Mirek
|
It's simply solved by adding freetype lib to Draw and Xrender to CtrlCore. Honza will test it with build for Ubuntu Natty (11.04) in launchpad before commit to svn.
Andrei
[Updated on: Mon, 21 February 2011 11:57] by Moderator Report message to a moderator
|
|
|
Re: Linking problem [message #31323 is a reply to message #31319] |
Mon, 21 February 2011 23:55   |
|
mirek wrote on Mon, 21 February 2011 09:45 | Maybe we could just change that linker option instead?
Mirek
|
IMHO setting the library dependencies correctly is a cleaner solution. And safer, according to Debian developers 
Honza
|
|
|
|
|
Re: Linking problem [message #31370 is a reply to message #31309] |
Fri, 25 February 2011 19:20   |
|
Sorry for late response, I was quite busy in my new job...
I installed Natty in VirtualBox (it finally works again with new version ) and played a bit with the linking. What I found is that it sometimes complains about missing libraries even when they are specified, for example Xrender. It looks like the --start-group/--end-group commands don't work as supposed. If I understood the ld documentation correctly, it should cause ld to scan all the enclosed archives (object files, libs and archives) repeatedly, until all the symbols are resolved. I think there might be some bug in the toolchain itself or in its setting.
The only library that is really missing is freetype, which should be added to Draw.upp exactly as Andrei said above. The rest of the problems can be resolved by simply rearranging the -l options at the end of the command line, which should be quite easy to do in theide code, but I am not sure if that is an universal solution...
I will look into it more deeply during the weekend. It turns out it is not as trivial problem as it seemed at the beginning 
Honza
|
|
|
Re: Linking problem [message #31382 is a reply to message #31309] |
Sat, 26 February 2011 22:33   |
|
Hi,
I've got more news... It seems that the linking command line on natty is somehow wrong ordered. It lists libraries BEFORE the archives files with code that uses them, which in conjunction with the wrong behavior of grouping causes most of the trouble. See attached file for details and comparison to the command line produced on my Arch Linux.
So far I have no idea why the order is different on natty than on my system. The builder code is the same on both, and I didn't found any reason (yet) that could make a difference... Any hints? If I reorder the libraries manually (just puting the -l options after .a files from the same package), it links perfectly normal.
Also, the XRender in CtrlCore is not necessary, it just doubles the -lXRender on the command line. That is not harmful of course, just a minor "beauty issue" 
Honza
-
Attachment: linking.txt
(Size: 16.22KB, Downloaded 422 times)
|
|
|
|
Re: Linking problem [message #31388 is a reply to message #31382] |
Sun, 27 February 2011 10:46   |
chickenk
Messages: 171 Registered: May 2007 Location: Grenoble, France
|
Experienced Member |
|
|
dolik.rce wrote on Sat, 26 February 2011 22:33 | Hi,
I've got more news... It seems that the linking command line on natty is somehow wrong ordered. It lists libraries BEFORE the archives files with code that uses them, which in conjunction with the wrong behavior of grouping causes most of the trouble.
|
For information, I got linking problems as well when linking libraries with '-l<library>' linker options instead of '<path/to/library.a>' with my upp-waf build system.
Here is how I solved this (I enclosed static libraries between --whole-archive and --no-whole-archive), the --start-group and --end-group did not work for me either.
regards
Lionel
[Updated on: Sun, 27 February 2011 10:58] Report message to a moderator
|
|
|
Re: Linking problem [message #31389 is a reply to message #31387] |
Sun, 27 February 2011 12:37   |
|
mirek wrote on Sun, 27 February 2011 09:42 | I am a little bit confused - what project is this? Looks like ide, but what is rdppm.o?
And what exactly CLANG means?
|
rdppm.o is as result of compiling jpg plugin files.
CLANG appears because it was compiled with CLANG compiler, on Arch Linux.
Andrei
|
|
|
Re: Linking problem [message #31390 is a reply to message #31387] |
Sun, 27 February 2011 12:57   |
|
mirek wrote on Sun, 27 February 2011 09:42 | I am a little bit confused - what project is this? Looks like ide, but what is rdppm.o?
And what exactly CLANG means?
|
Yes, it is the linking of ide. File rdppm.o comes from plugin/jpeg/lib/rdppm.c, but I have no idea how it got in the linking command line... It should have been inside jpg.a :-/
Sorry for the CLANG, it's a build method using clang as compiler. It shouldn't really matter as it uses GCCBuilder in the very same way as gcc. What could matter is that I compared debug and optimal build in the last post... So to be sure I tried again, this time with equal settings and to my great surprise, now both linking commands look the same (apart from file types) as on natty. I wonder why is there different ordering for debug builds, does it have some important reason?
Anyway, it still holds that putting the libraries (-lxyz) after archives (xyz.a) fixes the problem...
About the --(no-)whole-archive option: It might solve the issue as well, but it could also introduce some overhead by linking unnecessary objects... I'm not 100% sure, but we sure can try that too 
Honza
-
Attachment: arch
(Size: 5.14KB, Downloaded 467 times)
-
Attachment: natty
(Size: 4.88KB, Downloaded 549 times)
|
|
|
|
|
Re: Linking problem [message #31484 is a reply to message #31458] |
Sat, 05 March 2011 19:42   |
|
mirek wrote on Fri, 04 March 2011 09:59 | Well, not sure it will help, but I have changed the builder so that it now puts .a first, -l last...
|
It seems to work all right now. I tested linking theide both in optimal and debug mode and it links and works.
Now I just have to make similar changes to the makefile so we can build packages for natty...
Honza
|
|
|
|
Re: Linking problem [message #31545 is a reply to message #31542] |
Sat, 12 March 2011 21:01   |
|
trader wrote on Sat, 12 March 2011 19:42 | Im using Ubuntu 10.10 Maverick and install U++ from Stable PPA.
I got this same error.
What can I do? Install U++ from Nightly PPA?
|
Hi trader
Yes, the simplest solution is to get newer version from nightly PPA. Alternatively you could download sources and build theide for yourself (it's not difficult, but still a tad more complicated than just using the nightly deb ).
Just out of curiosity: Did this problem appear just recently? After some update perhaps? Because I didn't notice any problem in Maverick, but it is sure possible that the toolchain was updated.
Best regards,
Honza
|
|
|
|
Re: Linking problem [message #31564 is a reply to message #31563] |
Mon, 14 March 2011 20:46   |
|
busiek wrote on Mon, 14 March 2011 17:30 | I am using natty nightly builds and the problem persists. My current version is 3274-natty-amd64.
|
Hi busiek,
I'm sorry, but I can't reproduce the problem. Does it happen for all applications, or just some? I used XmlView from uppsrc for testing and linking works fine for me in Debug+Blitz, Optimal and Optimal+Blitz modes. I tested with 3274-natty-i386 so the only possible reason I can see right now is that there are some differences between the toolchains for the two architectures. I will try to setup Natty on amd64 machine tomorrow (I don't have any at home ).
Honza
|
|
|
Goto Forum:
Current Time: Sat Apr 26 15:12:15 CEST 2025
Total time taken to generate the page: 0.00962 seconds
|
|
|