[2024-feb-29] Sad news: Eric Layton aka Nocturnal Slacker aka vtel57 passed away on Feb 26th, shortly after hospitalization. He was one of our Wiki's most prominent admins. He will be missed.

Welcome to the Slackware Documentation Project

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
Last revisionBoth sides next revision
howtos:hardware:arm:gcc_aarch64_cross-compiler [2016/12/17 21:19 (UTC)] – Added end results info and cleaned up some other bits. exagahowtos:hardware:arm:gcc_aarch64_cross-compiler [2017/01/13 10:22 (UTC)] – [Slackware ARM GCC aarch64-linux cross-compiler for the Raspberry Pi] additional text exaga
Line 3: Line 3:
 === Preface === === Preface ===
  
-I was thinking about the Cortex-A53 64-bit CPU on my Raspberry Pi 3 and why I'm mainly using Slackware ARM 32 bit operating system on it. Then I started to wonder if it would be possible to build an arm64 kernel and modules to run with Slackware ARM. After reading about how this could be achieved it seemed clear that some cross-compiling would be required. Although I have some experience in building Linux kernels, especially for the Raspberry Pi platform, I'd never done any cross-compiling before a week ago. So, this whole concept was brand new to me.+I was thinking about the Cortex-A53 64-bit CPU on my Raspberry Pi 3 and why I'm mainly using Slackware ARM 32 bit operating system on it. Then I started to wonder if it would be possible to build an arm64 kernel and modules to run with Slackware ARM. After reading about how this could be achieved it seemed clear that some cross-compiling would be required. Although I have some experience in building Linux kernels, especially for the Raspberry Pi platform, I'd never done any cross-compiling before a week ago (2016-12-15). So, this whole concept was brand new to me.
  
-For my first attempt (and largely based on reading about how other users were doing it) I used an Ubuntu 16.04.1 LTS (64 bit) system to cross-compile an arm64 kernel for the Raspberry Pi 3. However, the results of doing things by this method were somewhat lacking and created many unforeseen errors. Then I remembered something [[http://www.slackware.com/~mozes/|Mozes]] had published on [[http://arm.slackware.com/FAQs]] about Slackware ARM packages being built natively. Further investigation lead me to realise that assured success would most likely be found by cross-compiling on an ARM device using Slackware ARM. So, that's exactly what I did! I used Slackware ARM current on a RPi3 to build a GCC aarch64-linux cross-compiler, and then used it to build the arm64 Linux kernel, modules, and device tree blob(s). Very successfully, might I add. Thanks again, Mozes. <3+For my first attempt (and largely based on reading about how other users were doing it) I used an Ubuntu 16.04.1 LTS (64 bit) system to cross-compile an arm64 kernel for the Raspberry Pi 3. However, the results of doing things by this method were somewhat lacking and created many unforeseen errors. Then I remembered something [[http://www.slackware.com/~mozes/|Mozes]] had published on [[http://arm.slackware.com/FAQs]] about Slackware ARM packages being built natively. Further investigation lead me to realise that assured success would most likely be found by cross-compiling on an ARM device using Slackware ARM. So, that's exactly what I did! Very successfully, might I add. Thanks again, Mozes. <3
  
 As things have turned out, it wasn't //that// difficult. Investing some time into reading about toolchains and how to build cross-compilers was required, as well as testing the results of cross-compiling, but on the whole it's been a relatively simple process. Using Slackware ARM current to cross-compile aarch64 architecture was the key to success here. I'm now very aware that, in comparison, trying to cross-compile aarch64 on an Ubuntu x86_64 system was less than productive.  As things have turned out, it wasn't //that// difficult. Investing some time into reading about toolchains and how to build cross-compilers was required, as well as testing the results of cross-compiling, but on the whole it's been a relatively simple process. Using Slackware ARM current to cross-compile aarch64 architecture was the key to success here. I'm now very aware that, in comparison, trying to cross-compile aarch64 on an Ubuntu x86_64 system was less than productive. 
Line 133: Line 133:
 </code> </code>
  
-You should see the first $PATH entry is to your installation directory's /bin folder.+You should see the first $PATH entry is to your installation directory's /bin folder. It's important that your installation directory's /bin folder appears before any other entry in the $PATH.
  
 <code> <code>
Line 304: Line 304:
 === Installing the arm64 modules === === Installing the arm64 modules ===
  
-Once the modules have been built, you have to 'make modules_install' which installs your kernel modules to '/lib/modules/4.8.13-v8'. You could build  //out-of-tree// kernel modules but, to keep things easy and simple, you're going to install them on your current system. Again, you will use the same CFLAGS as before but without any 'LOCALVERSION' set.+Once the modules have been built, you have to 'make modules_install'.  The process will install your kernel modules to '/tmp/lib/modules/4.8.13-v8' 
 + 
 +You could build  //out-of-tree// kernel modules but, to keep things simple, you're going to install them to the usual location. Again, you will use the same CFLAGS as before but without any 'LOCALVERSION' set.
  
 First you need become '**root**' user and enter a passwd when prompted. To install the aarch64 modules run the following commands: First you need become '**root**' user and enter a passwd when prompted. To install the aarch64 modules run the following commands:
Line 310: Line 312:
 <code> <code>
 su - su -
-export PATH=/tmp/gcc-cross-compiler/bin:$PATH +make -j4 modules_install ARCH=arm64 CROSS_COMPILE=aarch64-linux-
-make -j 4 modules_install ARCH=arm64 CROSS_COMPILE=aarch64-linux-+
 </code> </code>
  
Line 418: Line 419:
 ==== The end result ==== ==== The end result ====
  
-After booting the system with the arm64 kernel, I'm logging in remotely via SSH as 'root' user. Then I ran the following commands:+After booting the system with the arm64 kernel, I logged in remotely via SSH as 'root' user. Then I ran the following commands:
  
 <code> <code>
Line 440: Line 441:
 Although I've already come across a few things which need some work, and attention, it's a start. I hope to find more time to devote towards Slackware arm64 over Christmas and the New Year 2017.  Although I've already come across a few things which need some work, and attention, it's a start. I hope to find more time to devote towards Slackware arm64 over Christmas and the New Year 2017. 
  
-Thanks for being interested. +Thanks for being interested. <3
  
 ====== Sources ====== ====== Sources ======
 howtos:hardware:arm:gcc_aarch64_cross-compiler ()