[Scons-users] Compiling with Scons on Mac arm64
Mats Wichmann
mats at wichmann.us
Wed Feb 2 13:51:05 EST 2022
On 2/2/22 10:56, Mats Wichmann wrote:
> On 2/1/22 10:36, Paola Ferrario wrote:
>> Hi all!
>> I’m having a problem compiling my C++ application using Scons on a Mac
>> with M1 processor.
>> Specifically, it seems that it tries to compile for a x86_64
>> architecture, since I see a lot of warnings such as
>> "warning: ignoring file ..., building for macOS-x86_64 but attempting to
>> link with file built for macOS-arm64”
>> when linking to third-party libraries, correctly compiled in the arm64
>> architecture. After the warnings, the compilation ends with error
>> “ld: symbol(s) not found for architecture x86_64”
>>
>> I was wondering if there is a flag I can pass to the compiler to specify
>> the architecture. I’ve tried with
>>
>> -arch=arm64
>>
>> but it doesn’t work.
>> What should I do?
You checked in objects in your toy, and they show this:
source/nexus.o: Mach-O 64-bit x86_64
object, flags:<|SUBSECTIONS_VIA_SYMBOLS>
so the build is somehow targeting x86_64. Any chance you can show a log
of the build? I don't have an M1 Mac available - I think Bill does though.
Also this:
p = subprocess.Popen(cmd, shell=True,
stdout=subprocess.PIPE,
stderr=subprocess.PIPE)
## If the stdout is empty, the execution of the command failed
version = p.stdout.read()
if version == '':
Abort("Failed to establish Geant4 version.")
subprocess, unless told otherwise, will sent back bytes, so to be valid
that comparison needs to be:
if version == b"":
for the other branch it's decoded, so that's fine.
More information about the Scons-users
mailing list