Heim > Backend-Entwicklung > C++ > So führen Sie eine Cross-Kompilierung für Raspberry Pi unter Ubuntu durch: Warum kann ich libstdc nicht finden?

So führen Sie eine Cross-Kompilierung für Raspberry Pi unter Ubuntu durch: Warum kann ich libstdc nicht finden?

Barbara Streisand
Freigeben: 2024-11-15 15:15:03
Original
311 Leute haben es durchsucht

How to Cross-Compile for Raspberry Pi on Ubuntu:  Why Can't I Find libstdc++?

How to Install a Cross-Compiler Toolchain on Your Host for the Raspberry Pi

Scenario:

You are attempting to cross-compile code for the Raspberry Pi on an Ubuntu machine. However, after installing the pre-built toolchain, you are encountering issues finding the libstdc++ shared library and utilizing the toolchain conveniently.

Solution:

To install and use the cross-compiler toolchain effectively, follow these steps:

Prerequisites:

Install the following prerequisites:

apt-get install git rsync cmake libc6-i386 lib32z1 lib32stdc++6
Nach dem Login kopieren

Setting Up the Toolchain:

  1. Create a folder named raspberrypi in your home directory:

    mkdir ~/raspberrypi
    Nach dem Login kopieren
  2. Navigate to this folder and clone the toolchain repository:

    cd ~/raspberrypi
    git clone git://github.com/raspberrypi/tools.git
    Nach dem Login kopieren

Integrating the Toolchain:

  1. Access the desired toolchain:

    export PATH=$PATH:$HOME/raspberrypi/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian/bin
    Nach dem Login kopieren
  2. Update your terminal or restart your session:

    • Log out and log back in.
    • Run . ~/.bashrc in your terminal to refresh your PATH.

Configuring CMake:

  1. Create a CMake configuration file (~/raspberrypi/pi.cmake):

    SET(CMAKE_SYSTEM_NAME Linux)
    SET(CMAKE_SYSTEM_VERSION 1)
    SET(CMAKE_C_COMPILER $ENV{HOME}/raspberrypi/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian/bin/arm-linux-gnueabihf-gcc)
    SET(CMAKE_CXX_COMPILER $ENV{HOME}/raspberrypi/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian/bin/arm-linux-gnueabihf-g++)
    SET(CMAKE_FIND_ROOT_PATH $ENV{HOME}/raspberrypi/rootfs)
    SET(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
    SET(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
    SET(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
    Nach dem Login kopieren

Creating a File System Mirror (Optional):

  1. Create a rootfs folder:

    mkdir ~/raspberrypi/rootfs
    Nach dem Login kopieren
  2. Copy the /lib and /usr directories from your Raspberry Pi to ~/raspberrypi/rootfs:

    rsync -rl --delete-after --safe-links [email protected]:/{lib,usr} $HOME/raspberrypi/rootfs
    Nach dem Login kopieren

Cross-Compiling with CMake:

To cross-compile using your configured toolchain, use the -D CMAKE_TOOLCHAIN_FILE=$HOME/raspberrypi/pi.cmake flag with CMake.

Example:

Compile a simple "Hello World" program for the Raspberry Pi:

  1. Clone the "cmake-hello-world" repository:

    git clone https://github.com/jameskbride/cmake-hello-world.git 
    Nach dem Login kopieren
  2. Create a build directory and navigate to it:

    cd cmake-hello-world
    mkdir build
    cd build
    Nach dem Login kopieren
  3. Configure CMake using the toolchain file:

    cmake -D CMAKE_TOOLCHAIN_FILE=$HOME/raspberrypi/pi.cmake ../
    Nach dem Login kopieren
  4. Build the program:

    make
    Nach dem Login kopieren
  5. Transfer the executable to your Raspberry Pi:

    scp CMakeHelloWorld [email protected]:/home/pi/
    Nach dem Login kopieren
  6. Run the program on your Raspberry Pi:

    ssh [email protected] ./CMakeHelloWorld
    Nach dem Login kopieren

By following these steps, you will have successfully installed and integrated the Raspberry Pi cross-compiler toolchain, enabling you to conveniently cross-compile your applications.

Das obige ist der detaillierte Inhalt vonSo führen Sie eine Cross-Kompilierung für Raspberry Pi unter Ubuntu durch: Warum kann ich libstdc nicht finden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage