пропуск несовместимой ошибки в conftest

Я считаю, что в conftest отсутствуют правильные флаги, но я не могу понять проблему, глядя на содержимое mkmf.log, которое приведено ниже. Будем признательны за любые идеи!


have_library: checking for main() in -lidn... -------------------- no

"i486-linux-gnu-gcc -o conftest -I /backfire/staging_dir/host/include/ruby-1.9.1/i486-linux -I /backfire/staging_dir/host/include/ruby-1.9.1/ruby/backward -I /backfire/staging_dir/host/include/ruby-1.9.1 -I. -O2 -I /backfire/staging_dir/host/include -D_FILE_OFFSET_BITS=64 -O2 -I /backfire/staging_dir/host/include -O2 -I /backfire/staging_dir/host/include conftest.c -L. -L /backfire/staging_dir/host/lib -Wl,-R /backfire/staging_dir/host/lib -L. -rdynamic -Wl,-export-dynamic -Wl,-R -Wl, /backfire/staging_dir/host/lib -L /backfire/staging_dir/host/lib -lruby-static -lpthread -lrt -ldl -lcrypt -lm -lc" checked program was: /* begin / 1: #include "ruby.h" 2: 3: int main() {return 0;} / end */

"i486-linux-gnu-gcc -o conftest -I /backfire/staging_dir/host/include/ruby-1.9.1/i486-linux -I /backfire/staging_dir/host/include/ruby-1.9.1/ruby/backward -I /backfire/staging_dir/host/include/ruby-1.9.1 -I. -O2 -I /backfire/staging_dir/host/include -D_FILE_OFFSET_BITS=64 -O2 -I /backfire/staging_dir/host/include -O2 -I /backfire/staging_dir/host/include conftest.c -L. -L /backfire/staging_dir/host/lib -Wl,-R /backfire/staging_dir/host/lib -L. -rdynamic -Wl,-export-dynamic -Wl,-R -Wl, /backfire/staging_dir/host/lib -L /backfire/staging_dir/host/lib -lruby-static -lidn -lpthread -lrt -ldl -lcrypt -lm -lc" /usr/bin/ld: skipping incompatible /backfire/staging_dir/host/lib/libidn.so when searching for -lidn /usr/bin/ld: skipping incompatible /backfire/staging_dir/host/lib/libidn.a when searching for -lidn /usr/bin/ld: skipping incompatible /backfire/staging_dir/host/lib/libidn.so when searching for -lidn /usr/bin/ld: skipping incompatible /backfire/staging_dir/host/lib/libidn.a when searching for -lidn /usr/bin/ld: cannot find -lidn collect2: ld returned 1 exit status checked program was: /* begin */ 1: #include "ruby.h" 2: 3: /top/ 4: int main() {return 0;} 5: int t() { void ((volatile p)()); p = (void (()()))main; return 0; } /* end */

"i486-linux-gnu-gcc -o conftest -I /backfire/staging_dir/host/include/ruby-1.9.1/i486-linux -I /backfire/staging_dir/host/include/ruby-1.9.1/ruby/backward -I /backfire/staging_dir/host/include/ruby-1.9.1 -I. -O2 -I /backfire/staging_dir/host/include -D_FILE_OFFSET_BITS=64 -O2 -I /backfire/staging_dir/host/include -O2 -I /backfire/staging_dir/host/include conftest.c -L. -L /backfire/staging_dir/host/lib -Wl,-R /backfire/staging_dir/host/lib -L. -rdynamic -Wl,-export-dynamic -Wl,-R -Wl, /backfire/staging_dir/host/lib -L /backfire/staging_dir/host/lib -lruby-static -lidn -lpthread -lrt -ldl -lcrypt -lm -lc" /usr/bin/ld: skipping incompatible /backfire/staging_dir/host/lib/libidn.so when searching for -lidn /usr/bin/ld: skipping incompatible /backfire/staging_dir/host/lib/libidn.a when searching for -lidn /usr/bin/ld: skipping incompatible /backfire/staging_dir/host/lib/libidn.so when searching for -lidn /usr/bin/ld: skipping incompatible /backfire/staging_dir/host/lib/libidn.a when searching for -lidn /usr/bin/ld: cannot find -lidn collect2: ld returned 1 exit status checked program was: /* begin */ 1: #include "ruby.h" 2: 3: /top/ 4: int main() {return 0;} 5: int t() { main(); return 0; } /* end */


person acw    schedule 08.12.2011    source источник


Ответы (1)


mkmf.rb Ruby использует собственный компилятор для проверки libidn, но, поскольку ваша цель — MIPS, вместо этого необходимо использовать кросс-компилятор. Я предполагаю, что файлы libidn.so и libidn.a, перечисленные в вашем mkmf.log, были созданы для MIPS. Поскольку собственному компилятору i486 нужны библиотеки i486, он сообщает об ошибке «пропуск несовместимости», когда обнаруживает файлы MIPS.

Я думаю, вам нужно будет изменить файл extconf.rb, чтобы он указывал на кросс-компилятор. Что-то типа:

require 'mkmf'

CONFIG['CC'] = '/path/to/mips-gcc'

Кроме того, вам, вероятно, потребуется указать mkmf.rb на заголовочные файлы Ruby для MIPS. Я не уверен, что все нужно установить, но я думаю, что по крайней мере CONFIG['arch'] и CONFIG['archdir'] должны быть переопределены в файле extconf.rb.

person Tim    schedule 19.02.2012