c - "skipping incompatible"conftest错误

标签 c ruby makefile idn

我相信conftest缺少正确的标志,但我无法通过查看mkmf.log的内容来找出问题,这些内容包含在下面。 任何想法将不胜感激!


have_library: checking for main() in -lidn... -------------------- no<p></p>

<p>"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 <em>/
1: #include "ruby.h"
2: 
3: int main() {return 0;}
/</em> end */</p>

<p>"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: /<em>top</em>/
4: int main() {return 0;}
5: int t() { void ((<em>volatile p)()); p = (void ((</em>)()))main; return 0; }
/* end */</p>

<p>"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: /<em>top</em>/
4: int main() {return 0;}
5: int t() { main(); return 0; }
/* end */
</p>

最佳答案

Ruby 的 mkmf.rb 使用 native 编译器来测试 libidn,但由于您的目标是 MIPS,因此需要使用交叉编译器。我假设 mkmf.log 中列出的 libidn.so 和 libidn.a 文件是为 MIPS 构建的。由于原生 i486 编译器需要 i486 库,因此遇到 MIPS 文件时会报告“skipping incomplete”错误。

我认为您需要修改 extconf.rb 文件以指向交叉编译器。像这样的东西:

require 'mkmf'

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

此外,您可能需要将 mkmf.rb 指向 MIPS 的 Ruby 头文件。我不确定需要设置什么,但我猜至少应该覆盖 CONFIG['arch']CONFIG['archdir'] extconf.rb 文件。

关于c - "skipping incompatible"conftest错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8435441/

相关文章:

ruby - Ruby 的现实问题是什么?

linux - 在 Makefile 命令中设置变量

c - Eclipse 寻找 g++ 而不是 gcc

c++ - 编译 zthreads

c - 我在分配内存时遇到问题。(也许)

c - 在 C 中如何在字符串中找到 '\' 字符?

Ruby 上的 PHP 风格 Web 开发 : creating microframework for that

java - 为什么大多数枚举值在声明中以 BUTT 说明符结尾?

python - c_void_p 值无效*

java - 您将如何在 Ruby 中实现这个 Java 枚举类?