Vinnaren i pepparkakshustävlingen!
2023-08-14, 17:36
  #1
Medlem
bithaxs avatar
Jag har haft lite strul med att bygga rust program som ska köras på amd64 linux på min macbook pro.

Det jag har gjort är att sätta upp en docker container som workspace i vs code. Men jag har märkt att vissa rust libs inte bygger i docker på macen men de bygger i docker på linux (på cloud).

Det känns som att emuleringen av amd64 på mac är rätt buggig.

Någon som har några tips för att komma runt detta (annat än att köra hela utvecklingsmiljön i molnet)?

Jag kör docker desktop ska tilläggas.
Citera
2023-08-14, 17:44
  #2
Moderator
Rassas avatar
Programvara: macOS —> Systemutveckling /Moderator
Citera
2023-08-16, 01:09
  #3
Medlem
Niggerss avatar
Det är ganska uppenbart, att du måste emulera x86 på Arm. Bruka inte bli en bra lösning.
Citera
2023-08-17, 15:51
  #4
Medlem
Att köra en ren amd64 docker image på arm brukar vara långsamt för att inte tala om obskyra buggar.
Det brukar fungera mycket bättre att göra en arm basimage sedan använda virtualisation framework och rosetta för att köra x86 binärer i denna, det går självklart inte säga om det löser ditt problem men det tenderar att vara både markant snabbare och ha mindre bekymmer än att ha en helsystems emulering körandes.
Citera
2023-08-17, 20:02
  #5
Medlem
Har själv en Macbook M2 och har behövt deploya min Rust-kod till våran server miljö som kör på amd64 linux. Det du kan göra är att bygga ditt program till amd64 binär kod på din ARM dator. Detta gör du genom att installera toolchain för din amd64 miljö, på din lokala Mac som kör ARM. Därefter bygger du din kod med den specifika toolchainen, och då får du en binär fil som kan köras på amd64.

Den toolchain du har installerad just nu är förmodligen aarch64-apple-darwin, vilket är det som används för att bygga binär kod för Apple Silicon. Det du är ute efter är x86_64-unknown-linux-gnu. Du kan köra rustup target list i din terminal för att se din installerade, samt alla andra tillgängliga toolchains.

Ett annat alternativ som också är jävligt smidigt är att utveckla på din lokala dator som vanligt, och sedan ha Git installerad på din molnserver, så du bara pullar det senaste och bygger där. Helst ska du ha någon form av CI/CD pipeline också som automatiserar detta, så att när du gör en push till stage-branschen så ska din molnserver automatiskt fånga upp detta, pulla och bygga samt deploya.
Citera

Stöd Flashback

Flashback finansieras genom donationer från våra medlemmar och besökare. Det är med hjälp av dig vi kan fortsätta erbjuda en fri samhällsdebatt. Tack för ditt stöd!

Stöd Flashback