Closed zx5337 closed 1 year ago
Osmium doesn't use libxml2 but expat. Try installing that.
Osmium doesn't use libxml2 but expat. Try installing that.
done this "brew install expat", still not working for both make and import osmium. Anyway I can let osmium to use the installed version of libexpat.?
Ah, it says right at the top of the messages you are quoting: "ld: warning: ignoring file /Library/Frameworks/Mono.framework/Versions/6.12.0/lib/libexpat.dylib, file is universal (i386,x86_64) but does not contain the arm64 architecture:" So apparently the expat lib doesn't work in ARM. I suggest you open an issue in Homebrew.
Ah, it says right at the top of the messages you are quoting: "ld: warning: ignoring file /Library/Frameworks/Mono.framework/Versions/6.12.0/lib/libexpat.dylib, file is universal (i386,x86_64) but does not contain the arm64 architecture:" So apparently the expat lib doesn't work in ARM. I suggest you open an issue in Homebrew.
I think I know the problem. Two issues: 1 pip3 install is not working for the most recent version 3.6.0. I uninstall it and install with "pip install osmium==3.4.0". Now, the python framework works. 2 the build, it seem the libexpat that found by cmake was not the right version. It should use Xcode 14.3.0, instead the Mono one. I clean the build folder, re-genrated the makefile. This time it found the libexpat in Xcode. Now, the build has passed. Need someone to update the osmium 3.6.0 library to build a proper universal version.
Okay, so I understand Osmium tool now works for you. For the issue with Pyosmium see osmcode/pyosmium#227. Closing here.
FWIW, I'm getting the exact same linker error in Xcode on an M1 Max machine:
(I generated projects with cmake -G Xcode
)
ld: warning: ignoring file /Library/Frameworks/Mono.framework/Versions/6.12.0/lib/libexpat.dylib, file is universal (i386,x86_64) but does not contain the arm64 architecture: /Library/Frameworks/Mono.framework/Versions/6.12.0/lib/libexpat.dylib
What version of osmium-tool are you using?
osmium-3.6.0-cp311-cp311-macosx_13_0_universal2.whl
make [ 1%] Linking CXX executable osmium ld: warning: ignoring file /Library/Frameworks/Mono.framework/Versions/6.12.0/lib/libexpat.dylib, file is universal (i386,x86_64) but does not contain the arm64 architecture: /Library/Frameworks/Mono.framework/Versions/6.12.0/lib/libexpat.dylib Undefined symbols for architecture arm64: "_XML_ErrorString", referenced from: osmium::xml_error::xml_error(XML_ParserStruct const&) in io.cpp.o osmium::xml_error::xml_error(XML_ParserStruct const&) in osm_file_parser.cpp.o osmium::xml_error::xml_error(XML_ParserStruct const&) in command_export.cpp.o osmium::xml_error::xml_error(XML_ParserStruct const&) in command_extract.cpp.o "_XML_GetCurrentColumnNumber", referenced from: osmium::xml_error::xml_error(XML_ParserStruct const&) in io.cpp.o osmium::xml_error::xml_error(XML_ParserStruct const&) in osm_file_parser.cpp.o osmium::xml_error::xml_error(XML_ParserStruct const&) in command_export.cpp.o osmium::xml_error::xml_error(XML_ParserStruct const&) in command_extract.cpp.o "_XML_GetCurrentLineNumber", referenced from: osmium::xml_error::xml_error(XML_ParserStruct const&) in io.cpp.o osmium::xml_error::xml_error(XML_ParserStruct const&) in osm_file_parser.cpp.o osmium::xml_error::xml_error(XML_ParserStruct const&) in command_export.cpp.o osmium::xml_error::xml_error(XML_ParserStruct const&) in command_extract.cpp.o "_XML_GetErrorCode", referenced from: osmium::xml_error::xml_error(XML_ParserStruct const&) in io.cpp.o osmium::xml_error::xml_error(XML_ParserStruct const&) in osm_file_parser.cpp.o osmium::xml_error::xml_error(XML_ParserStruct const&) in command_export.cpp.o osmium::xml_error::xml_error(XML_ParserStruct const&) in command_extract.cpp.o "_XML_Parse", referenced from: osmium::io::detail::XMLParser::ExpatXMLParser::operator()(std::1::basic_string<char, std::__1::char_traits, std:: 1::allocator> const&, bool) in io.cpp.o
osmium::io::detail::XMLParser::ExpatXMLParser::operator()(std::1::basic_string<char, std::__1::char_traits, std:: 1::allocator> const&, bool) in osm_file_parser.cpp.o
osmium::io::detail::XMLParser::ExpatXMLParser::operator()(std::1::basic_string<char, std::__1::char_traits, std:: 1::allocator> const&, bool) in command_export.cpp.o
osmium::io::detail::XMLParser::ExpatXMLParser::operator()(std::1::basic_string<char, std::__1::char_traits, std:: 1::allocator> const&, bool) in command_extract.cpp.o
"_XML_ParserCreate", referenced from:
osmium::io::detail::XMLParser::ExpatXMLParser::ExpatXMLParser(void) in io.cpp.o
osmium::io::detail::XMLParser::ExpatXMLParser::ExpatXMLParser(void) in osm_file_parser.cpp.o
osmium::io::detail::XMLParser::ExpatXMLParser::ExpatXMLParser(void) in command_export.cpp.o
osmium::io::detail::XMLParser::ExpatXMLParser::ExpatXMLParser(void) in command_extract.cpp.o
"_XML_ParserFree", referenced from:
osmium::io::detail::XMLParser::run() in io.cpp.o
osmium::io::detail::XMLParser::ExpatXMLParser::~ExpatXMLParser() in io.cpp.o
osmium::io::detail::XMLParser::run() in osm_file_parser.cpp.o
osmium::io::detail::XMLParser::ExpatXMLParser::~ExpatXMLParser() in osm_file_parser.cpp.o
osmium::io::detail::XMLParser::run() in command_export.cpp.o
osmium::io::detail::XMLParser::ExpatXMLParser::~ExpatXMLParser() in command_export.cpp.o
osmium::io::detail::XMLParser::run() in command_extract.cpp.o
...
"_XML_SetCharacterDataHandler", referenced from:
osmium::io::detail::XMLParser::ExpatXMLParser::ExpatXMLParser(void) in io.cpp.o
osmium::io::detail::XMLParser::ExpatXMLParser::ExpatXMLParser(void) in osm_file_parser.cpp.o
osmium::io::detail::XMLParser::ExpatXMLParser::ExpatXMLParser(void) in command_export.cpp.o
osmium::io::detail::XMLParser::ExpatXMLParser::ExpatXMLParser(void) in command_extract.cpp.o
"_XML_SetElementHandler", referenced from:
osmium::io::detail::XMLParser::ExpatXMLParser::ExpatXMLParser(void) in io.cpp.o
osmium::io::detail::XMLParser::ExpatXMLParser::ExpatXMLParser(void) in osm_file_parser.cpp.o
osmium::io::detail::XMLParser::ExpatXMLParser::ExpatXMLParser(void) in command_export.cpp.o
osmium::io::detail::XMLParser::ExpatXMLParser::ExpatXMLParser(void) in command_extract.cpp.o
"_XML_SetEntityDeclHandler", referenced from:
osmium::io::detail::XMLParser::ExpatXMLParser::ExpatXMLParser(void) in io.cpp.o
osmium::io::detail::XMLParser::ExpatXMLParser::ExpatXMLParser(void) in osm_file_parser.cpp.o
osmium::io::detail::XMLParser::ExpatXMLParser::ExpatXMLParser(void) in command_export.cpp.o
osmium::io::detail::XMLParser::ExpatXMLParser::ExpatXMLParser(void) in command_extract.cpp.o
"_XML_SetUserData", referenced from:
osmium::io::detail::XMLParser::ExpatXMLParser::ExpatXMLParser(void) in io.cpp.o
osmium::io::detail::XMLParser::ExpatXMLParser::ExpatXMLParser(void) in osm_file_parser.cpp.o
osmium::io::detail::XMLParser::ExpatXMLParser::ExpatXMLParser(void) in command_export.cpp.o
osmium::io::detail::XMLParser::ExpatXMLParser::ExpatXMLParser(void) in command_extract.cpp.o
"_XML_StopParser", referenced from:
void osmium::io::detail::XMLParser::ExpatXMLParser::member_wrap<osmium::io::detail::XMLParser::ExpatXMLParser::start_element_wrapper(void, char const, char const)::'lambda'(osmium::io::detail::XMLParser&)>(osmium::io::detail::XMLParser&, osmium::io::detail::XMLParser::ExpatXMLParser::start_element_wrapper(void, char const, char const)::'lambda'(osmium::io::detail::XMLParser&)&&) in io.cpp.o
void osmium::io::detail::XMLParser::ExpatXMLParser::member_wrap<osmium::io::detail::XMLParser::ExpatXMLParser::end_element_wrapper(void, char const)::'lambda'(osmium::io::detail::XMLParser&)>(osmium::io::detail::XMLParser&, osmium::io::detail::XMLParser::ExpatXMLParser::end_element_wrapper(void, char const)::'lambda'(osmium::io::detail::XMLParser&)&&) in io.cpp.o
void osmium::io::detail::XMLParser::ExpatXMLParser::member_wrap<osmium::io::detail::XMLParser::ExpatXMLParser::character_data_wrapper(void, char const, int)::'lambda'(osmium::io::detail::XMLParser&)>(osmium::io::detail::XMLParser&, osmium::io::detail::XMLParser::ExpatXMLParser::character_data_wrapper(void, char const, int)::'lambda'(osmium::io::detail::XMLParser&)&&) in io.cpp.o
void osmium::io::detail::XMLParser::ExpatXMLParser::member_wrap<osmium::io::detail::XMLParser::ExpatXMLParser::entity_declaration_handler(void, char const, int, char const, int, char const, char const, char const, char const)::'lambda'(osmium::io::detail::XMLParser&)>(osmium::io::detail::XMLParser&, osmium::io::detail::XMLParser::ExpatXMLParser::entity_declaration_handler(void, char const, int, char const, int, char const, char const, char const, char const)::'lambda'(osmium::io::detail::XMLParser&)&&) in io.cpp.o
void osmium::io::detail::XMLParser::ExpatXMLParser::member_wrap<osmium::io::detail::XMLParser::ExpatXMLParser::start_element_wrapper(void, char const, char const)::'lambda'(osmium::io::detail::XMLParser&)>(osmium::io::detail::XMLParser&, osmium::io::detail::XMLParser::ExpatXMLParser::start_element_wrapper(void, char const, char const)::'lambda'(osmium::io::detail::XMLParser&)&&) in osm_file_parser.cpp.o
void osmium::io::detail::XMLParser::ExpatXMLParser::member_wrap<osmium::io::detail::XMLParser::ExpatXMLParser::end_element_wrapper(void, char const)::'lambda'(osmium::io::detail::XMLParser&)>(osmium::io::detail::XMLParser&, osmium::io::detail::XMLParser::ExpatXMLParser::end_element_wrapper(void, char const)::'lambda'(osmium::io::detail::XMLParser&)&&) in osm_file_parser.cpp.o
void osmium::io::detail::XMLParser::ExpatXMLParser::member_wrap<osmium::io::detail::XMLParser::ExpatXMLParser::character_data_wrapper(void, char const, int)::'lambda'(osmium::io::detail::XMLParser&)>(osmium::io::detail::XMLParser&, osmium::io::detail::XMLParser::ExpatXMLParser::character_data_wrapper(void, char const, int)::'lambda'(osmium::io::detail::XMLParser&)&&) in osm_file_parser.cpp.o
...
ld: symbol(s) not found for architecture arm64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make[2]: [src/osmium] Error 1
make[1]: [src/CMakeFiles/osmium.dir/all] Error 2
make: *** [all] Error 2
What operating system version are you using?
MacOS Ventura 13.4.1
Tell us something about your system
This is a MacBook Pro M1 Max
What did you do exactly?
I followed the instruction in README.txt to make the tool
What did you expect to happen?
Make Pass, No error when import to a python program.
What did happen instead?
Make failure
When import the python library, by use a "pip3 install osmium". Python raise a similar failure: File "/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/site-packages/osmium/init.py", line 8, in
from osmium._osmium import *
ImportError: dlopen(/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/site-packages/osmium/_osmium.cpython-311-darwin.so, 0x0002): symbol not found in flat namespace '_XML_ErrorString'
What did you do to try analyzing the problem?
Try to reinstall the libxml2. and Mono framework. It dose not work. I find another Intel X86 machine on the Same version of MacOS. It did work properly. So, I assume this tool is lack support on Apple M1 on Most Recent Ventura 13.4.1 MacOS