2011-10-17 109 views
0

我想在aix 64位盒上編譯紅寶石64位。 我通過啓用libpthread配置了ruby。並編譯相同。 但是,當我嘗試運行紅寶石的setup.rb,我得到以下錯誤:紅寶石寶石編譯在aix 64位盒上失敗

/home/xyz/RUBY_64/lib/ruby/1.8/thread.so: load failed - 
/home/xyz/RUBY_64/lib/ruby/1.8/thread.so (LoadError) 
     from /home/xyz/RUBY_64/lib/ruby/1.8/thread.rb:5 
     from /home/xyz/RUBY_64/lib/ruby/site_ruby/1.8/rubygems.rb:85:in 
`require' 
     from /home/xyz/RUBY_64/lib/ruby/site_ruby/1.8/rubygems.rb:85 
     from 
/home/xyz/RubyAndRelatedGems/7.3/rubygems-0.9.4/./post-install.rb:81:in 
`require' 
     from 
/home/xyz/RubyAndRelatedGems/7.3/rubygems-0.9.4/./post-install.rb:81:in 
`install_sources' 
     from 
/home/xyz/RubyAndRelatedGems/7.3/rubygems-0.9.4/./post-install.rb:116:in 
`run_hook' 
     from setup.rb:1526:in `exec_task_traverse' 
     from setup.rb:1342:in `exec_install' 
     from setup.rb:1000:in `exec_install' 
     from setup.rb:814:in `invoke' 
     from setup.rb:773:in `invoke' 
     from setup.rb:1578 

我試着紅寶石-d選項相同,並沒有透露更多的信息 。 此外,thread.so上的ldd不顯示任何依賴關係!

有什麼想法嗎?

回答

0

好的。 我找到了原因。 問題是安裝ruby的方式。我通過禁用libpthread重新安裝。在這個時候,我在math.c中遇到了問題。 我通過使用-E選項並重定向到一個臨時文件做了宏的顯式擴展。然後使用新文件重新編譯 。 (我還記得一些ruby_thid導致的問題,我通過修改eval.c文件進行糾正)

gcc -E -maix64 -O2 -maix64 -fPIC -I/<include dir> -c math.c > /tmp/math.c 
mv /tmp/math.c ./math.c 
gcc -maix64 -O2 -maix64 -fPIC -I/<include dir> -c math.c