C - gcc-linux-gnueabi-arm 错误未定义对"main"的引用



我试图生成一个简单的基于霓虹灯的c代码的汇编和可执行文件。代码是,

  #include <arm_neon.h>
  void NeonTest(short int * __restrict a, short int * __restrict b, short int * __restrict z)
{
int i;
for (i = 0; i < 200; i++) {
z[i] = a[i] * b[i];
            }
}

首先,我要用程序集来计算霓虹灯指令,

arm-linux-gnueabi-gcc -O2 -march=armv7-a -mtune=cortex-a9 -ftree-vectorize -mhard-float -mfloat-abi=softfp -mfpu=neon -S neon_test.c -o nt.s

然后我将nt.s文件转换为object文件。

arm-linux-gnueabi-gcc -O2 -march=armv7-a -mtune=cortex-a9 -ftree-vectorize -mhard-float -mfloat-abi=softfp -mfpu=neon -c nt.s -o nt.o

最后,对于可执行文件,

arm-linux-gnueabi-gcc -O2 -march=armv7-a -mtune=cortex-a9 -ftree-vectorize -mhard-float -mfloat-abi=softfp -mfpu=neon nt.o -o nt

我得到错误,

/usr/lib/gcc-cross/arm-linux-gnueabi/4.7/../../../../arm-linux-gnueabi/lib/crt1.o: In function `_start':
(.text+0x34): undefined reference to `main'
collect2: error: ld returned 1 exit status

我在Intel系统上使用Ubuntu 14LTS。

编译时没有包含包含main()的C文件,因此链接器看不到它你需要添加它:

arm-linux-gnueabi-gcc -O2 -march=armv7-a -mtune=cortex-a9 -ftree-vectorize -mhard-float -mfloat-abi=softfp -mfpu=neon nt.o main.o -o nt

主要的地方。O的创建步骤与neono . O

相同

每个程序都需要一个起始点,以便计算机知道从哪里开始执行。在C/c++中,起点是函数int main的起始点。给你的程序一个int main,要么将你的目标文件链接到一个带有int main的目标文件,要么在代码中添加一个。

要在代码中添加main,在函数定义下面,请尝试

int main()
{
    NeonTest(/* your parameters */);
}

最新更新