【问题标题】:OpenWRT with NetBeans 7.3.1OpenWRT 与 NetBeans 7.3.1
【发布时间】: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-l‌​inux

编辑 3

编辑 4

【问题讨论】:

  • 一个开放 2 天但有奖励的问题?似乎这个范围太广了。尝试将您的问题归结为寻求和回答而不是“建议”的特定问题。
  • 你的问题的主要问题是你没有说当你做上述事情时会发生什么,你认为什么是错误的。 FWIW,我建议在尝试让它在 Netbeans 中工作之前先在​​命令行上构建。
  • @JensGustedt 谢谢大家的回复。我将编辑问题:)
  • 根据find 命令的输出,您似乎只构建了 MIPS 工具链,而不是 openwrt 中的 x86 工具链。现在,如果您尝试为 x86 目标编译 x86 可执行文件/库,那么您还没有正确设置工具链。返回并查看 openwrt 文档,了解如何首先构建 x86 工具链。或者,如果您打算为 MIPS 路由器构建 MIPS 可执行文件/库,则使用 find 命令返回的目录作为 eclipse/netbeans 中的交叉编译器目录。确保您提供适当的“前缀”。
  • prefix 通常是工具链目录中二进制文件名称中的前面字符串。例如,如果文件的名称是 arm-none-linux-gcc arm-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-l‌​inux 目录中。在指定工具链目录时查找并使用正确的前缀。

标签: c netbeans openwrt


【解决方案1】:

为目标架构(x86、arm、mips 等)提供适当的工具链目录,根据您打算运行生成的可执行文件的设备作为 Base Directory.

接下来为 C compilerC++ compiler 等提供各个命令的相对路径/文件名。这些将是相对路径(包括文件名)到上面指定的工具链目录中的适当二进制文件。


如何验证工具链设置?

使用 IDE,编译一个简单的hello-world.c 程序。类似的东西

/* hello-world.c */
int main()
{
    return (42);
}

使用 IDE 提供 Build 并检查编译输出窗口。了解错误(如果有)并相应地修改配置选项。

一旦构建成功,它将在项目目录中生成一个二进制 hello-world。打开一个新终端并在新生成的二进制文件上运行 file 命令,以验证它确实是为目标架构构建的。例如,会显示为 x86-64 构建的二进制文件。

$ file hello-world
hello-world: ELF 64-bit LSB executable, x86-64, version 1 (GNU/Linux), dynamically linked (uses shared libs), for GNU/Linux 2.6.18, not stripped

如果在 IDE 设置中正确配置 mips 工具链和编译器,我假设它是 MIPS 可执行文件。

【讨论】:

  • 感谢您的描述性回答先生!我会试试这个并回帖:)再次感谢:)
  • 先生,我得到的输出是 main: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.24, BuildID[sha1]=0xad0d0ababd4debc5d04bd19e0277d2d862344bbc, not stripped 这是否意味着它已成功配置?并且我已将新配置附加为 Edit 4.. make 和 debugger 命令可以是默认的吗?还是必须改变它们?谢谢你:)
  • 如果您尝试为 x86-64 编译,这看起来不错。但是,由于您共享的屏幕截图显示了 MIPS 工具链目录,因此不应该是这种情况。有很多事情可能会出错。我建议您熟悉交叉编译的概念,并按照 this 之类的简单教程开始。这将帮助您了解在为 IDE 设置工具链时出错的地方。
  • 非常感谢先生..我会检查这个:)
  • 您提到的链接太棒了先生..让它工作.. 似乎我必须使用 IDE 来保持语法正确并使用终端手动编译。尽管如此,它非常有帮助,最后我可以继续开发。再次感谢:)
猜你喜欢
  • 2014-12-25
  • 1970-01-01
  • 2013-09-02
  • 1970-01-01
  • 2014-02-21
  • 2013-10-19
  • 1970-01-01
  • 2013-10-06
  • 1970-01-01
相关资源
最近更新 更多