问题
having this problem on installing several things on my mac, i think this problem is coming from upgrading my leopard to snow leopard. Also this problem also is linked with macports i think.
/usr/local/lib/libz.1.dylib, file was built for i386 which is not the architecture being linked (x86_64)
Any ideas?
Update
To be more specific this happens on installing nokogiri gem
and the log looks like:
xslt_stylesheet.c:127: warning: passing argument 1 of ‘Nokogiri_wrap_xml_document’ with different width due to prototype
cc -dynamic -bundle -undefined suppress -flat_namespace -o nokogiri.bundle
html_document.o html_element_description.o html_entity_lookup.o html_sax_parser_context.o nokogiri.o xml_attr.o xml_attribute_decl.o xml_cdata.o xml_comment.o xml_document.o xml_document_fragment.o xml_dtd.o xml_element_content.o xml_element_decl.o xml_encoding_handler.o xml_entity_decl.o xml_entity_reference.o xml_io.o xml_libxml2_hacks.o xml_namespace.o xml_node.o xml_node_set.o xml_processing_instruction.o xml_reader.o xml_relax_ng.o xml_sax_parser.o xml_sax_parser_context.o xml_sax_push_parser.o xml_schema.o xml_syntax_error.o xml_text.o xml_xpath_context.o xslt_stylesheet.o -L. -L/usr/local/lib -L/opt/local/lib -L/usr/local/lib -L/usr/lib -L. -lruby -lexslt -lxslt -lxml2 -lpthread -ldl -lobjc
ld: in /usr/local/lib/libz.1.dylib, file was built for i386 which is not the architecture being linked (x86_64)
collect2: ld returned 1 exit status
make: *** [nokogiri.bundle] Error 1
回答1:
It is a macport migration to snow leopard issue, sadly you have to reinstall macports and all the ports to have the right architecture. Read the wiki here: https://trac.macports.org/wiki/Migration
回答2:
This is not about MacPorts: zlib is installed as i386, so you have to build it for x86-64. Here's how to do it:
- Update: As Nick says in his comment, you first have to remove old zlib files:
sudo rm /opt/local/lib/libz*
- Download zlib source code from its webpage
- Extract the source, and open a terminal in source location
./configure
,make
andsudo make install
- If it still doesn't work, remove ruby and install it again (you can do it with RVM)
Hope it helped you.
回答3:
- You might have x86_64 compiled zlib installed in
/usr/local/opt/zlib/
or alternatively do abrew install zlib
this will install zlib in/usr/local/Cellar/
. - Temporary remove
libz.*
from/usr/local/lib/
into a backup folder. - Do
gem install nokogiri -v '<version>' --with-zlib-dir=<zlib directory path from step 1>
Nokogiri must be installed by now. Restore the backup libz again.
来源:https://stackoverflow.com/questions/3699586/usr-local-lib-libz-1-dylib-file-was-built-for-i386-which-is-not-the-architectu