如何在我的Linux主机上安装Raspberry Pi交叉编译器?

我正在尝试为在我的Ubuntu机器上工作的Raspberry Pi进行交叉编译。


在最初的尝试中,我使用的是arm-linux-gnueabi编译器,该编译器可在Ubuntu存储库中找到。我得到了这个工作。我能够建立我的所有依赖关系,并在我的cmake项目中使用交叉编译器。


但是,我相信我应该使用hf版本,因此我切换到了arm-linux-gnueabihf。然后我意识到这对Raspberry Pi不起作用,因为它是armv6。


谷歌搜索后,我从GitHub找到了预构建的工具链。


我下载了工具链,但是我不太了解如何“安装”它。我将文件提取到我的主目录。目录结构如下所示:


/gcc-linearo-arm-linux-gnueabihf-raspbian

    /arm-linux-gnueabihf

        /bin

            (contains g++, gcc, etc)

        /lib

            (contains libstdc++ library)

    /bin

        (contains arm-linux-gnueabihf-g++, arm-linux-gnueabihf-...)

    /lib

        (gcc lib stuff)

如果将目录更改为INNER bin文件夹,则可以从终端编译测试程序,而不会出现任何问题。


~/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian/

arm-linux-gnueabihf/bin$ g++ test.cpp -o test

然后,我尝试在OUTER bin文件夹中编译一个测试程序,其中包含工具的前缀版本。


 ~/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian/bin$ 

 arm-linux-gnueabihf-g++ test.cpp -o test

但是,当我尝试现在(从内部bin目录外部)使用编译器时,它找不到工具链随附的libstdc ++共享库:


arm-linux-gnueabihf-gcc: error while loading shared libraries: 

libstdc++.so.6: cannot open shared object file: No such file or directory.

此外,我希望能够使用编译器而不必导航到bin目录。因此,我尝试将OUTER bin目录(因为我需要带前缀的版本)和两个lib目录都添加到PATH中:


export PATH=$PATH:~/tools/.../bin

export PATH=$PATH:~/tools/.../lib

export PATH=$PATH:~/tools/.../.../lib

但是,这将导致相同的错误。我应该如何“安装”工具链,以便可以在任何地方使用该工具链,就像使用Ubuntu回购中的交叉编译器一样?


万千封印
浏览 703回答 3
3回答

慕标5832272

对于Windows主机,我强烈推荐本教程:下载并安装工具链将sysroot与您的RPi include / lib目录同步编译你的代码使用SmarTTY将可执行文件拖放到RPi运行!仅此而已!预构建的GNU工具链可用于Raspberry,Beaglebone,Cubieboard,AVR(Atmel)等
打开App,查看更多内容
随时随地看视频慕课网APP