> On Aug 17, 2019, at 9:58 AM, Pascal <p....@orange.fr> wrote:
> 
>> 
>> Le 15 août 2019 à 23:52, John Ralls <jra...@ceridwen.us> a écrit :
>> 
>>> On Aug 15, 2019, at 1:02 PM, Pascal <p....@orange.fr> wrote:
>>> 
>>> Hello,
>>> 
>>> I've got linker errors with my program which use ncurses.
>>> Previously it link against librairies in /usr/lib from Apple developper 
>>> tools.
>>> But since Command Line Tools (HS 10.13), I got:
>>> Undefined symbols for architecture x86_64:
>>> "_current_item", referenced from:
>>>   _terminal_interface__curses__menus__current in 
>>> terminal_interface-curses-menus.o
>>> "_free_item", referenced from:
>>>   _terminal_interface__curses__menus__delete in 
>>> terminal_interface-curses-menus.o
>>>   terminal_interface__curses__menus(float, long double,...)(...) in 
>>> terminal_interface-curses-menus.o
>>> "_free_menu", referenced from:
>>>   _terminal_interface__curses__menus__delete__2 in 
>>> terminal_interface-curses-menus.o
>>> <...>
>>> "_top_row", referenced from:
>>>   _terminal_interface__curses__menus__top_row in 
>>> terminal_interface-curses-menus.o
>>>  (maybe you meant: _terminal_interface__curses__menus__top_row, 
>>> _terminal_interface__curses__menus__set_top_row )
>>> "_unpost_menu", referenced from:
>>>   _terminal_interface__curses__menus__post in 
>>> terminal_interface-curses-menus.o
>>> ld: symbol(s) not found for architecture x86_64
>>> collect2: error: ld returned 1 exit status
>>> 
>>> Like the lib menu is not seen for x86_64, but it seems to be ok:
>>> 
>>> $ otool -vf /usr/lib/libmenu.dylib
>>> Fat headers
>>> fat_magic FAT_MAGIC
>>> nfat_arch 2
>>> architecture x86_64
>>> cputype CPU_TYPE_X86_64
>>> cpusubtype CPU_SUBTYPE_X86_64_ALL
>>> capabilities 0x0
>>> offset 4096
>>> size 36064
>>> align 2^12 (4096)
>>> architecture i386
>>> cputype CPU_TYPE_I386
>>> cpusubtype CPU_SUBTYPE_I386_ALL
>>> capabilities 0x0
>>> offset 40960
>>> size 35488
>>> align 2^12 (4096)
>>> 
>>> It's really a pity that some libraries coming from Apple fail :-(
>>> I was advised to build the library from source 
>>> https://invisible-island.net/ncurses.
>>> Though it is available with other building systems, I aim to get it via 
>>> gtk-osx.
>>> What is the best way to add it?
>> 
>> Pascal,
>> 
>> It's strange enough that something is still using curses in 2019, but 
>> stranger still that it uses curses and Gtk.
> 
> Yes it looks strange ;-)
> I build a set of Ada libraries based on GTK, ncurses and many others:
> https://hermes.gwu.edu/cgi-bin/wa?A2=ind1809&L=GNAT-OSX&P=68
> 
>> Anyway, the direct answer to your question is to just add it to your local 
>> module set just like any other library that you need.
> 
> I've added ncurses in a moduleset:
>  <repository type="tarball" name="ftp.invisible-island.net"
>              href="ftp://ftp.invisible-island.net/"/>
> <autotools id="ncurses"
>            autogenargs="--enable-pc-files --without-tests">
>    <branch repo="ftp.invisible-island.net"
>            module="ncurses/ncurses.tar.gz"
>            version="6.1"
>            checkoutdir="ncurses-6.1"/>
>  </autotools>
> 
> But I need the Ada compiler to be on PATH, I've added it to my PATH but when 
> I do jhbuild it isn't present anymore!
> How to transfert the Ada compiler path to jhbuild?
> 
>> But first make sure that the symbols really are missing, they're present in 
>> 10.14:
>> $ Manjusri:/Users/john> nm /usr/lib/libmenu.5.4.dylib | grep _unpost_menu
>> 000000000000379a T _unpost_menu
>> $ Manjusri:/Users/john> nm /usr/lib/libmenu.5.4.dylib | grep _current_item
>> 00000000000024cd T _current_item
>> 000000000000240d T _set_current_item
>> $ Manjusri:/Users/john> nm /usr/lib/libmenu.5.4.dylib | grep _free_item
>> 000000000000269c T _free_item
>> $ Manjusri:/Users/john> nm /usr/lib/libmenu.5.4.dylib | grep _free_menu
>> 0000000000002c2a T _free_menu
>> $ Manjusri:/Users/john> nm /usr/lib/libmenu.5.4.dylib | grep _top_row
>> 0000000000002913 T _set_top_row
>> 00000000000029da T _top_row
>> 
>> It's libncurses 5.4 released in 2004, meaning that Apple has probably not 
>> changed it since MacOS X 10.2 or so. ISTM it's more likely that you've got 
>> the wrong link order than that libmenu is missing all of its symbols.
> 
> So mine does:
> $ nm /usr/lib/libmenu.5.4.dylib | grep _current_item
> 00000000000023bd T _current_item
> 00000000000022ee T _set_current_item
> 
> Symbols are present but not seen for x86_64.
> Well, I took libmenu.5.4.dylib from an old Snow Leopard macOS with linking 
> success.
> The difference between both is that the older one has PPC symbols.
> Maybe Apple has stripped out PPC symbols and make it wrong I guess.

No PPC from 10.7 and no i386 from 10.13, so if the symbols are there they're 
x86_64. Your link order is screwed up, just fix that.

As for the path, jhbuildrc exposes addpath and prependpath, see 
https://developer.gnome.org/jhbuild/unstable/config-reference.html.en. 

Regards,
John Ralls

_______________________________________________
gtk-osx-users-list mailing list
gtk-osx-users-list@gnome.org
https://mail.gnome.org/mailman/listinfo/gtk-osx-users-list

Reply via email to