У меня есть MacBook M1, и я установил на свою машину библиотеку, скомпилированную для архитектуры x86/Intel. У меня есть исходный код, который использует OpenMP. Я хотел бы скомпилировать свой код и связать свой исполняемый файл с библиотекой x86 с помощью компилятора clang.
Я могу скомпилировать исходный код без зависимостей x86, следуя инструкциям здесь, используя реализацию clang, распространяемую вместе с brew.
Однако, когда я пытаюсь скомпилировать с аргументом -arch x86_64
и ссылкой на библиотеку x86, я обнаруживаю, что clang пытается связать мой исполняемый файл с библиотекой OpenMP, созданной для архитектуры arm64.
Можно ли установить версию clang на MacBook M1, где библиотеки OpenMP созданы для архитектуры x86?
Вот пример ошибки, которую я получаю при использовании моей текущей настройки, даже если я не связываюсь с библиотекой x86.
Исходный код:
#include <omp.h>
int main()
{
return 0;
}
Вызов компилятору:
/opt/homebrew/opt/llvm/bin/clang++ -arch x86_64 omp_ex.cpp \
-L/opt/homebrew/opt/llvm/lib -Wl,-rpath,/opt/homebrew/opt/llvm/lib \
-I/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include
Сообщение об ошибке:
ld: in '/opt/homebrew/opt/llvm/lib/libunwind.dylib', building for macOS-x86_64 but attempting to link with file built for macOS-arm64
clang-12: error: linker command failed with exit code 1 (use -v to see invocation)