How to run caffe in the M1 mac? I meet a problem.
shadowwu1 opened this issue · comments
I use the homebrew in M1 mac to install the lib such as boost, hdm5. After I change the cmakelist and cmake successed , I try to run make, but I meet problem below:
Undefined symbols for architecture arm64:
"boost::python::detail::init_module(char const*, void (*)())", referenced from:
_init_caffe in _caffe.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]: *** [lib/_caffe.dylib] Error 1
make[1]: *** [python/CMakeFiles/pycaffe.dir/all] Error 2
make: *** [all] Error 2
when i install boost by homebrew, it look like boost supoort arm64, I try to find some solution or some problom just like I meet, but I thought I was the first one who try to use this simple solution to run caffe in the M1 mac which is arm core inside rather than x86. I hope someone can give me some help to make it. Thanks!
This is my Cmakelist file.
CMakeLists.txt
same problem, the only solution for me now is using docker
@klrc can you give reference on how you solved with docker?
Thanks
应该是库没链接对,我试过M1可以跑
@klrc can you give reference on how you solved with docker? Thanks
solved now, pls make sure to link with your arm64 python library
I edit CMakeCache.txt
like this:
//Path to a library.
PYTHON_LIBRARY:FILEPATH=/opt/homebrew/Cellar/python@3.9/3.9.10/Frameworks/Python.framework/Versions/3.9/lib/libpython3.9.dylib
hope this helps
you can also check this:
https://www.dazhuanlan.com/evenlemon/topics/947293
NOTE: pycaffe cannot run through Rosetta (e.g. anaconda) because of x86_64 arch
@klrc can you give reference on how you solved with docker? Thanks
solved now, pls make sure to link with your arm64 python library I edit
CMakeCache.txt
like this://Path to a library. PYTHON_LIBRARY:FILEPATH=/opt/homebrew/Cellar/python@3.9/3.9.10/Frameworks/Python.framework/Versions/3.9/lib/libpython3.9.dylib
hope this helps
you can also check this: https://www.dazhuanlan.com/evenlemon/topics/947293
NOTE: pycaffe cannot run through Rosetta (e.g. anaconda) because of x86_64 arch
Can you show me your whole cmakecache.txt? I modified it according to your method, but it still doesn't work. thank you
I use the homebrew in M1 mac to install the lib such as boost, hdm5. After I change the cmakelist and cmake successed , I try to run make, but I meet problem below:
Undefined symbols for architecture arm64: "boost::python::detail::init_module(char const*, void (*)())", referenced from: _init_caffe in _caffe.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]: *** [lib/_caffe.dylib] Error 1 make[1]: *** [python/CMakeFiles/pycaffe.dir/all] Error 2 make: *** [all] Error 2
when i install boost by homebrew, it look like boost supoort arm64, I try to find some solution or some problom just like I meet, but I thought I was the first one who try to use this simple solution to run caffe in the M1 mac which is arm core inside rather than x86. I hope someone can give me some help to make it. Thanks! This is my Cmakelist file. CMakeLists.txt
您好请问解决了吗
I got a problem, an the compile is terminated! the outputs are:
`
[ 75%] Building CXX object src/caffe/CMakeFiles/caffe.dir/util/db_lmdb.cpp.o
[ 75%] Building CXX object src/caffe/CMakeFiles/caffe.dir/util/hdf5.cpp.o
[ 76%] Building CXX object src/caffe/CMakeFiles/caffe.dir/util/im2col.cpp.o
[ 76%] Building CXX object src/caffe/CMakeFiles/caffe.dir/util/insert_splits.cpp.o
[ 78%] Building CXX object src/caffe/CMakeFiles/caffe.dir/util/io.cpp.o
[ 78%] Building CXX object src/caffe/CMakeFiles/caffe.dir/util/math_functions.cpp.o
[ 79%] Building CXX object src/caffe/CMakeFiles/caffe.dir/util/signal_handler.cpp.o
[ 79%] Building CXX object src/caffe/CMakeFiles/caffe.dir/util/upgrade_proto.cpp.o
[ 81%] Linking CXX shared library ../../lib/libcaffe.dylib
Undefined symbols for architecture arm64:
"_AbslInternalSpinLockWake_lts_20240116", referenced from:
absl::lts_20240116::base_internal::SpinLockWake(std::__1::atomic, bool) in libprotobuf.a(text_format.cc.o)
absl::lts_20240116::base_internal::SpinLockWake(std::__1::atomic, bool) in libprotobuf.a(reflection_ops.cc.o)
absl::lts_20240116::base_internal::SpinLockWake(std::__1::atomic, bool) in libprotobuf.a(generated_message_reflection.cc.o)
absl::lts_20240116::base_internal::SpinLockWake(std::__1::atomic, bool) in libprotobuf.a(descriptor.cc.o)
absl::lts_20240116::base_internal::SpinLockWake(std::__1::atomic, bool) in libprotobuf.a(message.cc.o)
absl::lts_20240116::base_internal::SpinLockWake(std::__1::atomic, bool) in libprotobuf.a(dynamic_message.cc.o)
absl::lts_20240116::base_internal::SpinLockWake(std::__1::atomic, bool) in libprotobuf.a(wire_format.cc.o)
...
"utf8_range::IsStructurallyValid(absl::lts_20240116::string_view)", referenced from:
google::protobuf::internal::WireFormatLite::VerifyUtf8String(char const, int, google::protobuf::internal::WireFormatLite::Operation, char const*) in libprotobuf.a(wire_format_lite.cc.o)
`
how can i solve it?
same problem, the only solution for me now is using docker
Hi there! I am also on m1 Mac trying to build caffe with docker. I used the dockerfile from the (https://github.com/BVLC/caffe/blob/master/docker/cpu/Dockerfile) but failed with some errors. I wonder whether you had encountered similar problems and how you resolved them. Thank you so much!!