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 */);
}
我正在尝试生成一个简单的基于 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 */);
}