用于OpenWrt的Eclipse GCC C交叉编译无法正常工作

时间:2016-04-19 04:39:39

标签: c linux gcc cross-compiling openwrt

我是linux和openwrt的初学者。对不起,如果这是一个愚蠢的问题。

我正在关注本教程:https://downloads.openwrt.org/docs/eclipse.pdf

  • 芯片:MT7620
  • 工具链前缀:mipsel-openwrt-linux-
  • 工具链路径:/ligo/openwrt/staging_dir/toolchain-mipsel_24kec+dsp_gcc-5.3.0_musl-1.1.14

代码:

#include <stdio.h>
void main()
{
    printf("Hello World");
}

错误:

**** Build of configuration Debug for project hello ****
make all 
Building target: hello
Invoking: Cross GCC Linker
mipsel-openwrt-linux-gcc -L/ligo/openwrt/staging_dir/toolchain-mipsel_24kec+dsp_gcc-5.3.0_musl-1.1.14/lib -o"hello"  ./main.o   
mipsel-openwrt-linux-gcc: warning: environment variable 'STAGING_DIR' not defined
mipsel-openwrt-linux-gcc: warning: environment variable 'STAGING_DIR' not defined
/ligo/openwrt/staging_dir/toolchain-mipsel_24kec+dsp_gcc-5.3.0_musl-1.1.14/lib/gcc/mipsel-openwrt-linux-musl/5.3.0/../../../../mipsel-openwrt-linux-musl/lib/crt1.o: In function `_start_c':
/ligo/openwrt/build_dir/toolchain-mipsel_24kec+dsp_gcc-5.3.0_musl-1.1.14/musl-1.1.14/crt/crt1.c:17: undefined reference to `main'
/ligo/openwrt/build_dir/toolchain-mipsel_24kec+dsp_gcc-5.3.0_musl-1.1.14/musl-1.1.14/crt/crt1.c:17: undefined reference to `main'
collect2: error: ld returned 1 exit status
make: *** [hello] Error 1

2 个答案:

答案 0 :(得分:1)

在bashrc

的末尾添加以下2行
  • export PATH=$PATH:~/openwrt/staging_dir/toolchain-mipsel_24kec+dsp_gcc-4.8-linaro_uClibc-0.9.33.2/bin export STAGING_DIR=~/openwrt/staging_dir

  • source ~/.bashrc

要打开/创建bashrc,您可以执行

  • sudo gedit ~/.bashrc

答案 1 :(得分:0)

当我不得不经常发现这个问题时,我觉得很愚蠢。

当我忘记保存包含main()的文件时,我收到上述错误,因为文件为空,直到您保存它为止会出现此错误。

这些说明告诉您如何在开始构建时自动保存所有已修改的文件Save before build保留此设置,您又不会再看到此内容。

如果您没有在eclipse中设置工具链的路径,它甚至从未找到编译器,汇编器或链接器,因此它不会产生给定的错误。在这种情况下,关于STAGING_DIR的警告是无害的。