gcc-linux-gnueabi-arm 错误未定义对“main”的引用

gcc-linux-gnueabi-arm error undefined reference to `main'

我正在尝试生成一个简单的基于 neon 的 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 文件转换为目标文件。

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

其中 main.o 也是按照与 neon.o

相同的步骤创建的

每个程序都需要一个起点,以便计算机知道从哪里开始执行。在C/C++中,起点是函数int main的开头。通过将您的目标文件链接到带有 int main 的目标文件或在此代码中添加一个目标文件,为您的程序提供一个 int main

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

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