首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何为Raspberry Pi 1创建一个现代的交叉编译工具链?

如何为Raspberry Pi 1创建一个现代的交叉编译工具链?
EN

Stack Overflow用户
提问于 2015-05-06 09:05:11
回答 1查看 1.9K关注 0票数 3

至少Debian没有提供一个用于Raspberry Pi 1交叉开发的可用工具链。在撰写本文时,Linaro对于Qt5开发人员分支来说太老了。有一个项目跨库ng,它允许为各种系统轻松地构建自定义工具链。它支持一个比较现代的GCC 4.9.1。配置是一个尝试和错误,但主要的问题是,工具链没有找到所有的包含文件或库。如何配置交叉配置以使其可以用于编译Raspberry 1的Qt5?

关于Raspberry Pi如何准备使用这个工具链的后续工作,可以在这里找到:How do I prepare a Raspberry Pi with Raspbian so I can cross compile Qt5 programs from a Linux host?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-05-06 09:33:45

我首先从normal /library问题开始,因为这有点超出了常规的交叉工作台-ng安装/使用。

问题是,交叉测试正确地创建了gcc编译器,目标元组如下:arm供应商-linux-gnueabihf。这完全正确。但是,在没有供应商字符串:/lib/arm gnueabihf的文件夹中,包括和lib。看起来pkg-config处理不了这个问题。跨库-ng可能是正确的元组,但也是有点麻烦,拒绝添加一个函数来删除这个供应商字符串。允许修改元组和供应商字符串的交叉连接ng中的函数不是可选的。他们只是用一个新的名字创建象征性的链接,但元组是用GCC硬编码的。正确处理供应商字符串的唯一方法是修补跨库ng源。

因此,获得功能Raspberry Pi/Raspian 4.9.1工具链的第一步是克隆跨库ng存储库:

代码语言:javascript
复制
git clone git://crosstool-ng.org/crosstool-ng

第二,修补源:

代码语言:javascript
复制
diff --git a/scripts/config.guess b/scripts/config.guess
index dbfb978..9a35943 100755
--- a/scripts/config.guess
+++ b/scripts/config.guess
@@ -176,7 +176,7 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
            sh3el) machine=shl-unknown ;;
            sh3eb) machine=sh-unknown ;;
            sh5el) machine=sh5le-unknown ;;
-           *) machine=${UNAME_MACHINE_ARCH}-unknown ;;
+           *) machine=${UNAME_MACHINE_ARCH} ;;
        esac
        # The Operating System including object format, if it has switched
        # to ELF recently, or will in the future.
diff --git a/scripts/config.sub b/scripts/config.sub
index 6d2e94c..f92db2b 100755
--- a/scripts/config.sub
+++ b/scripts/config.sub
@@ -317,7 +317,7 @@ case $basic_machine in
        | we32k \
        | x86 | xc16x | xstormy16 | xtensa \
        | z8k | z80)
-               basic_machine=$basic_machine-unknown
+               basic_machine=$basic_machine
                ;;
        c54x)
                basic_machine=tic54x-unknown

其余的是标准的配置/make/make。下一步是正确配置交叉工作台,以构建所需的工具链。这是用ct-ng menuconfig完成的。

尽管每个配置项都会非常冗长,所以我在这里添加了一个工作配置文件:http://pastebin.com/MhQKnhpN

可以导入它,并使用加载备用配置文件。最后,ct-ng build在几分钟内构建了一个新的工具链。在配置文件中定义的{HOME}/x 3中创建了工具链。若要更改此选项,请更改“Path和misc选项”中的“前缀目录”。但是工具链也可以在生成后手动移动。

下一个问题/答案将展示如何使用这个工具链为Raspberry构建一个非常现代的Qt5。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30072209

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档