gcc-arm linking error: attempted static link of dynamic object
gcc-arm linking error: attempted static link of dynamic object
我正在尝试使用包含 neon 指令的 arm-linux-gnueabi-gcc 编译一个程序并在 Qemu 上执行它。代码是,
#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];
}
}
我没有使用 -static
标志就成功地做到了。但是如果 -static
标志没有被使用,Qemu 不会 execute/recognize 一个可执行文件。所以当我使用 -static
编译和 link 时,我得到以下错误,
junaid@junaid755:~/code/c$ arm-linux-gnueabi-gcc -static -march=armv7-a -mtune=cortex-a9 -ftree-vectorize -mhard-float -mfloat-abi=softfp -mfpu=neon -ffast-math -mvectorize-with-neon-quad -S neon_test.c
junaid@junaid755:~/code/c$ arm-linux-gnueabi-gcc -static -march=armv7-a -mtune=cortex-a9 -ftree-vectorize -mhard-float -mfloat-abi=softfp -mfpu=neon -ffast-math -mvectorize-with-neon-quad -c neon_test.s -o neon_test.o
junaid@junaid755:~/code/c$ arm-linux-gnueabi-gcc -static -march=armv7-a -mtune=cortex-a9 -ftree-vectorize -mhard-float -mfloat-abi=softfp -mfpu=neon -ffast-math -mvectorize-with-neon-quad neon_test.o -o neon_test
/usr/lib/gcc-cross/arm-linux-gnueabi/4.7/../../../../arm-linux-gnueabi/bin/ld: attempted static link of dynamic object `/lib/ld-linux.so.3'
collect2: error: ld returned 1 exit status
我已经尝试过 ermine、statifier 和其他用于便携式 linux 应用程序的软件。但问题是它们适用于可执行文件,而在我的情况下,可执行文件生成导致错误。
当我在我的系统上安装 arm-linux-gnueabihf-gcc
时问题就解决了。也许安装的其他软件包可能已经解决了这个问题。现在我使用 arm-linux-gnueabihf-gcc
命令而不是 arm-linux-gnueabi-gcc
。现在 exe 文件是静态链接的。但问题并没有完全解决。在 qemu 上它现在给出分段错误。
我正在尝试使用包含 neon 指令的 arm-linux-gnueabi-gcc 编译一个程序并在 Qemu 上执行它。代码是,
#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];
}
}
我没有使用 -static
标志就成功地做到了。但是如果 -static
标志没有被使用,Qemu 不会 execute/recognize 一个可执行文件。所以当我使用 -static
编译和 link 时,我得到以下错误,
junaid@junaid755:~/code/c$ arm-linux-gnueabi-gcc -static -march=armv7-a -mtune=cortex-a9 -ftree-vectorize -mhard-float -mfloat-abi=softfp -mfpu=neon -ffast-math -mvectorize-with-neon-quad -S neon_test.c
junaid@junaid755:~/code/c$ arm-linux-gnueabi-gcc -static -march=armv7-a -mtune=cortex-a9 -ftree-vectorize -mhard-float -mfloat-abi=softfp -mfpu=neon -ffast-math -mvectorize-with-neon-quad -c neon_test.s -o neon_test.o
junaid@junaid755:~/code/c$ arm-linux-gnueabi-gcc -static -march=armv7-a -mtune=cortex-a9 -ftree-vectorize -mhard-float -mfloat-abi=softfp -mfpu=neon -ffast-math -mvectorize-with-neon-quad neon_test.o -o neon_test
/usr/lib/gcc-cross/arm-linux-gnueabi/4.7/../../../../arm-linux-gnueabi/bin/ld: attempted static link of dynamic object `/lib/ld-linux.so.3'
collect2: error: ld returned 1 exit status
我已经尝试过 ermine、statifier 和其他用于便携式 linux 应用程序的软件。但问题是它们适用于可执行文件,而在我的情况下,可执行文件生成导致错误。
当我在我的系统上安装 arm-linux-gnueabihf-gcc
时问题就解决了。也许安装的其他软件包可能已经解决了这个问题。现在我使用 arm-linux-gnueabihf-gcc
命令而不是 arm-linux-gnueabi-gcc
。现在 exe 文件是静态链接的。但问题并没有完全解决。在 qemu 上它现在给出分段错误。