Failing to install atk from gem

Hi,

I tried to install ruby-gtk2 from gem, but got an error building atk
(attached)
Is there something i could do to make it compile?
Thanks

Hi,

2011/2/1 Dobai-Pataky B. [email protected]:

I tried to install ruby-gtk2 from gem, but got an error building atk
(attached)
Is there something i could do to make it compile?

Could you try without “-Wl,–no-undefined” link option?

And could you show us your Makefile?

Thanks,

kou

Kouhei S. wrote, at 02/01/2011 07:56 AM +9:00:

And could you show us your Makefile?

Thanks,

kou

I see build error on glib2 0.90.6 gem (and perhaps also on other 0.90.6
gems)
like:

make
gcc -I. -I. -I/usr/lib/ruby/1.8/i386-linux -I.
-I/usr/lib/ruby/site_ruby/1.8/i386-linux -I/usr/lib/ruby/1.8/i386-linux
-DHAVE_RB_DEFINE_ALLOC_FUNC -DHAVE_RB_BLOCK_PROC -DHAVE_OBJECT_ALLOCATE
-DHAVE_NODE_ATTRASGN -DHAVE_UNISTD_H -DHAVE_G_SPAWN_CLOSE_PID
-DHAVE_G_THREAD_INIT -DHAVE_G_MAIN_DEPTH -DHAVE_G_LISTENV
-DHAVE_RB_CHECK_ARRAY_TYPE -DHAVE_RB_EXEC_RECURSIVE
-DHAVE_RUBY_SET_CURRENT_SOURCE -DHAVE_RB_CURR_THREAD
-DRUBY_GLIB2_COMPILATION -D_FILE_OFFSET_BITS=64 -fPIC -O2 -g -pipe
-Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector
–param=ssp-buffer-size=4 -m32 -march=i686 -mtune=atom
-fasynchronous-unwind-tables -Wall -I/usr/include/glib-2.0
-I/usr/lib/glib-2.0/include -pthread -I/usr/include/glib-2.0
-I/usr/lib/glib-2.0/include -pthread -c glib-enum-types.c
gcc -shared -o glib2.so rbgutil.o rbgobj_param.o rbglib_win32.o
rbgobj_boxed.o rbgobj_typeinstance.o rbglib_timer.o rbgobj_enums.o
rbglib_pollfd.o rbglib_iochannel.o rbglib_keyfile.o rbglib_threads.o
rbglib_maincontext.o rbgobj_type.o rbgobj_valuearray.o rbgobject.o
rbgobj_typemodule.o rbgutil_callback.o rbgobj_strv.o rbglib_shell.o
rbglib_completion.o rbgobj_typeinterface.o rbglib_error.o
rbgobj_object.o rbgobj_paramspecs.o rbglib.o rbglib_int64.o
rbgobj_closure.o rbgobj_typeplugin.o rbglib_unicode.o rbglib_spawn.o
rbgobj_fundamental.o rbglib_fileutils.o rbglib_i18n.o rbglib_messages.o
rbglib_bookmarkfile.o rbglib_convert.o glib-enum-types.o rbgobj_signal.o
rbglib_source.o rbglib_utils.o rbgobj_value.o rbglib_mainloop.o
rbgobj_valuetypes.o rbgobj_convert.o -L. -L/usr/lib -L. -rdynamic
-Wl,-export-dynamic -pthread -pthread -lruby -lgobject-2.0
-lglib-2.0 -lgthread-2.0 -lrt -lgthread-2.0 -lrt -lglib-2.0 -lpthread
-lrt -ldl -lcrypt -lm -lc
/usr/bin/ld: i386:x86-64 architecture of input file rbgutil.o' is incompatible with i386 output /usr/bin/ld: i386:x86-64 architecture of input filerbgobj_param.o’ is
incompatible with i386 output
/usr/bin/ld: i386:x86-64 architecture of input file rbglib_win32.o' is incompatible with i386 output /usr/bin/ld: i386:x86-64 architecture of input filerbgobj_boxed.o’ is
incompatible with i386 output
/usr/bin/ld: i386:x86-64 architecture of input file
rbgobj_typeinstance.o' is incompatible with i386 output /usr/bin/ld: i386:x86-64 architecture of input filerbglib_timer.o’ is
incompatible with i386 output
/usr/bin/ld: i386:x86-64 architecture of input file rbgobj_enums.o' is incompatible with i386 output .... .... rbgobj_enums.o: In functionflags_initialize’:
/home/kou/work/ruby/ruby-gnome2/glib2/ext/glib2/rbgobj_enums.c:693:
undefined reference to rb_num2uint' rbgobj_enums.o: In functionflags_coerce’:
/home/kou/work/ruby/ruby-gnome2/glib2/ext/glib2/rbgobj_enums.c:888:
undefined reference to rb_num2uint' rbgobj_enums.o: In functionrbgobj_get_flags’:
/home/kou/work/ruby/ruby-gnome2/glib2/ext/glib2/rbgobj_enums.c:551:
undefined reference to rb_num2uint' rbglib_iochannel.o: In functionioc_set_buffer_size’:
/home/kou/work/ruby/ruby-gnome2/glib2/ext/glib2/rbglib_iochannel.c:563:
undefined reference to rb_num2uint' rbglib_iochannel.o: In functionioc_write_unichar’:
/home/kou/work/ruby/ruby-gnome2/glib2/ext/glib2/rbglib_iochannel.c:435:
undefined reference to rb_num2uint' rbglib_iochannel.o:/home/kou/work/ruby/ruby-gnome2/glib2/ext/glib2/rbglib_iochannel.c:438: more undefined references torb_num2uint’ follow
/usr/bin/ld: rbgutil.o: file class ELFCLASS64 incompatible with
ELFCLASS32
/usr/bin/ld: final link failed: File in wrong format
collect2: ld returned 1 exit status
make: *** [glib2.so] Error 1

This is because glib2 0.90.6 gem contains pre-compiled .o objects and
i386 gcc/ld
fail to use them. Build failure Dobai may be related to this issue
(although I use i686
and Dobai uses x86_64).

Would you release “clean” gem again?

Regards,
Mamoru

Which Makefile?
This is what I did:
cd /usr/local/lib64/ruby/gems/1.8/gems/atk-0.90.6/
ruby extconf.rb

And that generated a Makefile. I attached it. Is that what you asked
for?

Or it might be this one you asked for.

This is how i was able to install it: gem install gtk2 –
–with-ldflags=’-L. -Wl,-O1 -Wl,–as-needed -rdynamic
-Wl,-export-dynamic’

Thanks

I found the way to remove “-Wl,–no-undefined” ,
it was in the second Makefile where ldflags options are defined.
I removed it and compiled atk with the following result:

make

(cd ext/atk && make)
make[1]: Entering directory
/usr/local/lib64/ruby/gems/1.8/gems/atk-0.90.6/ext/atk' x86_64-pc-linux-gnu-gcc -shared -o atk.so rbatktable.o rbatkvalue.o rbatkdocument.o rbatkimage.o rbatkstate.o rbatk.o rbatkselection.o rbatktextrectangle.o rbatkcomponent.o rbatkregistry.o rbatkgobjectaccessible.o rbatkimplementor.o rbatknoopobjectfactory.o rbatkobject.o rbatkrelationset.o rbatktext.o rbatkhypertext.o rbatknoopobject.o rbatkinits.o rbatkstateset.o rbatkeditabletext.o rbatkrelation.o rbatkstreamablecontent.o rbatkhyperlink.o rbatkutil.o rbatkobjectfactory.o rbatkaction.o rbatktextrange.o -L. -L/usr/lib64 -Wl,-R/usr/lib64 -L. -Wl,-O1 -Wl,--as-needed -rdynamic -Wl,-export-dynamic -pthread -Wl,-R -Wl,/usr/lib64 -L/usr/lib64 -lruby18 -latk-1.0 -lgobject-2.0 -lgthread-2.0 -lrt -lglib-2.0 -lpthread -lrt -ldl -lcrypt -lm -lc make[1]: Leaving directory/usr/local/lib64/ruby/gems/1.8/gems/atk-0.90.6/ext/atk’
make -f Makefile.lib
make[1]: Entering directory
/usr/local/lib64/ruby/gems/1.8/gems/atk-0.90.6' make[1]: Nothing to be done forall’.
make[1]: Leaving directory
`/usr/local/lib64/ruby/gems/1.8/gems/atk-0.90.6’

Then i ran ‘gem install atk’ hoping that it’ll use the already compiled
stuff, but failed again, and the Makefile is regenerated, containing the
“-Wl,–no-undefined” option. How can i prevent that option from being
regenerated?

Thanks

Balint

Hi,

In [email protected]
“Re: [ruby-gnome2-devel-en] failing to install atk from gem” on Tue,
01 Feb 2011 14:18:36 +0900,
Mamoru T. [email protected] wrote:

I see build error on glib2 0.90.6 gem (and perhaps also on other 0.90.6 gems)
like:

This is because glib2 0.90.6 gem contains pre-compiled .o objects and i386
gcc/ld
fail to use them. Build failure Dobai may be related to this issue (although I
use i686
and Dobai uses x86_64).

Would you release “clean” gem again?

Ahh…
I’ve released 0.90.7 gems.
They don’t include *.o. :-o

Thanks,

kou

Hi,

The attached Makefile is what I asked for. Thanks!!!

I’ve released 0.90.8 gem.
Since the release, you don’t need to add --with-ldflags.

Thanks,

kou

In [email protected]
“Re: [ruby-gnome2-devel-en] failing to install atk from gem” on Tue,
01 Feb 2011 08:25:02 +0200,

You’re fast,
Thank you
Balint