【发布时间】:2014-01-26 14:14:20
【问题描述】:
我是一名热心的 C/C++ 程序员,刚接触这个固件定制研究领域。对于我最后一年的项目,我正在开发一种解决方案来增强路由器的数据包交换,并选择 OpenWRT 作为我的开源固件。我一直在努力设置环境,并希望获得您的专家意见,看看我是否走在正确的道路上。
我按照以下步骤将 openWRT 安装到我的本地 PC。 (http://wiki.openwrt.org/doc/howto/buildroot.exigence)。
在 make menuconfig 中,我选择了 - 高级配置选项 - 包的自动重建 -ToolChain 选项 - 构建 gdb - 构建 OpenWRT Image Builder - 构建 OpenWRT SDK - 构建基于 OpenWRT 的工具链
并保存配置并运行命令,- make tools/install - make toolchain/install
然后在 Netbeans 中,我从 Tools -> Options -> C/C++ 中添加了一个新的工具集合
并将基本目录指定为 '/openwrt/openwrt/toolchain'
C 编译器为 '/usr/bin/gcc'
如果我做错了什么,请各位专家告诉我?这是否足以为 openWRT 固件开发和编译一个新的 C 类,以便我可以重建映像以闪存到路由器中?
非常感谢您的建议,亲爱的专家。我在这个问题上苦苦挣扎了很长一段时间:)
再次感谢:)
编辑
问题是当我设置文件夹时
/openwrt/openwrt/staging_dir/toolchain-i386_gcc-4.5-linaro_uClibc-0.9.32/i486-openwrt-linux
在教程http://downloads.openwrt.org/docs/eclipse.pdf 中提到要在 IDE 中设置为交叉编译器,它给出的错误说明是在 Eclipse 和 Netbeans 中都找不到编译器。
但是当我指向/openwrt/openwrt/toolchain 目录时它可以工作。
我的疑问是继续开发并使用工具链文件夹中的编译器来编译项目是否可以?
编辑 2
我运行命令时得到的输出
find ./staging_dir -path "./staging_dir/toolchain*" -name *openwrt-linux
在TheCodeArtist建议的openwrt文件夹中
./staging_dir/toolchain-mips_34kc_gcc-4.6-linaro_uClibc-0.9.33.2/mips-openwrt-linux
编辑 3
编辑 4
【问题讨论】:
-
一个开放 2 天但有奖励的问题?似乎这个范围太广了。尝试将您的问题归结为寻求和回答而不是“建议”的特定问题。
-
你的问题的主要问题是你没有说当你做上述事情时会发生什么,你认为什么是错误的。 FWIW,我建议在尝试让它在 Netbeans 中工作之前先在命令行上构建。
-
@JensGustedt 谢谢大家的回复。我将编辑问题:)
-
根据
find命令的输出,您似乎只构建了 MIPS 工具链,而不是 openwrt 中的 x86 工具链。现在,如果您尝试为 x86 目标编译 x86 可执行文件/库,那么您还没有正确设置工具链。返回并查看 openwrt 文档,了解如何首先构建 x86 工具链。或者,如果您打算为 MIPS 路由器构建 MIPS 可执行文件/库,则使用 find 命令返回的目录作为 eclipse/netbeans 中的交叉编译器目录。确保您提供适当的“前缀”。 -
prefix 通常是工具链目录中二进制文件名称中的前面字符串。例如,如果文件的名称是
arm-none-linux-gccarm-none-linux-ar` 等,那么前缀是arm-none-linux-。由于您似乎拥有一个 MIPS 工具链,因此它将类似于mips-*-gcc等在./staging_dir/toolchain-mips_34kc_gcc-4.6-linaro_uClibc-0.9.33.2/mips-openwrt-linux目录中。在指定工具链目录时查找并使用正确的前缀。