Overview
Examples
Screenshots
Comparisons
Applications
Download
Documentation
Tutorials
Bazaar
Status & Roadmap
FAQ
Authors & License
Forums
Funding Ultimate++
Search on this site
Search in forums












SourceForge.net Logo
Home » U++ Library support » U++ Library : Other (not classified elsewhere) » Linking problem
Linking problem [message #31309] Sun, 20 February 2011 15:15 Go to next message
busiek is currently offline  busiek
Messages: 64
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 Go to previous messageGo to next message
dolik.rce is currently offline  dolik.rce
Messages: 1789
Registered: August 2008
Location: Czech Republic
Ultimate Contributor

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 Wink

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 #31319 is a reply to message #31316] Mon, 21 February 2011 09:45 Go to previous messageGo to next message
mirek is currently offline  mirek
Messages: 13975
Registered: November 2005
Ultimate Member
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 Wink

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
Re: Linking problem [message #31320 is a reply to message #31319] Mon, 21 February 2011 11:15 Go to previous messageGo to next message
unknown user
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 Wink

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 Go to previous messageGo to next message
dolik.rce is currently offline  dolik.rce
Messages: 1789
Registered: August 2008
Location: Czech Republic
Ultimate Contributor

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 Smile

Honza
Re: Linking problem [message #31328 is a reply to message #31323] Tue, 22 February 2011 10:06 Go to previous messageGo to next message
mirek is currently offline  mirek
Messages: 13975
Registered: November 2005
Ultimate Member
OK Smile

So what should we add?

Mirek
Re: Linking problem [message #31329 is a reply to message #31328] Tue, 22 February 2011 10:24 Go to previous messageGo to next message
unknown user
Hi,

in CtrlCore package:
(when) LINUX = X11 Xrender // Xrender added

in Draw:
(when) LINUX = dl freetype // freetype added
Re: Linking problem [message #31370 is a reply to message #31309] Fri, 25 February 2011 19:20 Go to previous messageGo to next message
dolik.rce is currently offline  dolik.rce
Messages: 1789
Registered: August 2008
Location: Czech Republic
Ultimate Contributor

Sorry for late response, I was quite busy in my new job...

I installed Natty in VirtualBox (it finally works again with new version Smile ) 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 Smile

Honza
Re: Linking problem [message #31382 is a reply to message #31309] Sat, 26 February 2011 22:33 Go to previous messageGo to next message
dolik.rce is currently offline  dolik.rce
Messages: 1789
Registered: August 2008
Location: Czech Republic
Ultimate Contributor

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" Smile

Honza
  • Attachment: linking.txt
    (Size: 16.22KB, Downloaded 364 times)
Re: Linking problem [message #31387 is a reply to message #31382] Sun, 27 February 2011 09:42 Go to previous messageGo to next message
mirek is currently offline  mirek
Messages: 13975
Registered: November 2005
Ultimate Member
I am a little bit confused - what project is this? Looks like ide, but what is rdppm.o?

And what exactly CLANG means?
Re: Linking problem [message #31388 is a reply to message #31382] Sun, 27 February 2011 10:46 Go to previous messageGo to next message
chickenk is currently offline  chickenk
Messages: 169
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 Go to previous messageGo to next message
unknown user
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 Go to previous messageGo to next message
dolik.rce is currently offline  dolik.rce
Messages: 1789
Registered: August 2008
Location: Czech Republic
Ultimate Contributor

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 Smile

Honza

  • Attachment: arch
    (Size: 5.14KB, Downloaded 407 times)
  • Attachment: natty
    (Size: 4.88KB, Downloaded 458 times)
Re: Linking problem [message #31392 is a reply to message #31390] Sun, 27 February 2011 13:20 Go to previous messageGo to next message
chickenk is currently offline  chickenk
Messages: 169
Registered: May 2007
Location: Grenoble, France
Experienced Member
Yes the --whole-archive introduces a bit of overhead but could be reduced by using -ffunction-sections, -fdata-sections for compiler and --gc-sections for linker... And I did not find a better solution yet.

If you happen to find a clean solution with --start-group/--end-group, I'd be more than happy to know and test!

Lionel
Re: Linking problem [message #31458 is a reply to message #31392] Fri, 04 March 2011 09:59 Go to previous messageGo to next message
mirek is currently offline  mirek
Messages: 13975
Registered: November 2005
Ultimate Member
Well, not sure it will help, but I have changed the builder so that it now puts .a first, -l last...
Re: Linking problem [message #31484 is a reply to message #31458] Sat, 05 March 2011 19:42 Go to previous messageGo to next message
dolik.rce is currently offline  dolik.rce
Messages: 1789
Registered: August 2008
Location: Czech Republic
Ultimate Contributor

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 #31542 is a reply to message #31309] Sat, 12 March 2011 19:42 Go to previous messageGo to next message
trader is currently offline  trader
Messages: 11
Registered: March 2011
Promising Member
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?

----- CtrlLib ( GUI GCC DEBUG SHARED DEBUG_FULL BLITZ LINUX POSIX ) (1 / 9)
----- CtrlCore ( GUI GCC DEBUG SHARED DEBUG_FULL BLITZ LINUX POSIX ) (2 / 9)
----- PdfDraw ( GUI GCC DEBUG SHARED DEBUG_FULL BLITZ LINUX POSIX ) (3 / 9)
----- Draw ( GUI GCC DEBUG SHARED DEBUG_FULL BLITZ LINUX POSIX ) (4 / 9)
----- plugin/bmp ( GUI GCC DEBUG SHARED DEBUG_FULL BLITZ LINUX POSIX ) (5 / 9)
----- RichText ( GUI GCC DEBUG SHARED DEBUG_FULL BLITZ LINUX POSIX ) (6 / 9)
----- Core ( GUI GCC DEBUG SHARED DEBUG_FULL BLITZ LINUX POSIX ) (7 / 9)
----- plugin/png ( GUI GCC DEBUG SHARED DEBUG_FULL BLITZ LINUX POSIX ) (8 / 9)
----- HelloWorld ( GUI MAIN GCC DEBUG SHARED DEBUG_FULL BLITZ LINUX POSIX ) (9 / 9)
Linking...
/usr/bin/ld: /home/john/Tmp/upp/out/Draw/GCC.Debug.Debug_full.Gui.Shared/ $blitz.o: undefined reference to symbol 'FT_New_Face'
/usr/bin/ld: note: 'FT_New_Face' is defined in DSO //usr/lib/libfreetype.so.6 so try adding it to the linker command line
//usr/lib/libfreetype.so.6: could not read symbols: Invalid operation
collect2: ld returned 1 exit status

There were errors. (0:00.76)
Re: Linking problem [message #31545 is a reply to message #31542] Sat, 12 March 2011 21:01 Go to previous messageGo to next message
dolik.rce is currently offline  dolik.rce
Messages: 1789
Registered: August 2008
Location: Czech Republic
Ultimate Contributor

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 Wink ).

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 #31563 is a reply to message #31484] Mon, 14 March 2011 17:30 Go to previous messageGo to next message
busiek is currently offline  busiek
Messages: 64
Registered: February 2011
Location: Poland
Member
I am using natty nightly builds and the problem persists. My current version is 3274-natty-amd64.
Re: Linking problem [message #31564 is a reply to message #31563] Mon, 14 March 2011 20:46 Go to previous messageGo to previous message
dolik.rce is currently offline  dolik.rce
Messages: 1789
Registered: August 2008
Location: Czech Republic
Ultimate Contributor

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 Smile ).

Honza
Previous Topic: Weired appearance of GUI elements
Next Topic: Drag and Drop between instances [FEATURE REQUEST]
Goto Forum:
  


Current Time: Fri Mar 29 06:18:38 CET 2024

Total time taken to generate the page: 0.01639 seconds