【问题标题】:gcc-arm linking error: attempted static link of dynamic objectgcc-arm 链接错误:尝试动态对象的静态链接
【发布时间】:2015-09-03 09:29:43
【问题描述】:

我正在尝试使用包含 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 不会执行/识别可执行文件。所以当我使用-static进行编译链接时,出现如下错误,

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 应用程序的软件。但问题是它们适用于可执行文件,而在我的情况下,可执行文件的生成会导致错误。

【问题讨论】:

  • 也许this 也适合你?

标签: c gcc linker qemu


【解决方案1】:

当我在我的系统上安装arm-linux-gnueabihf-gcc 后问题就解决了。也许安装的其他软件包可能已经解决了这个问题。现在我使用arm-linux-gnueabihf-gcc 命令而不是arm-linux-gnueabi-gcc。现在exe文件是静态链接的。但问题并没有完全解决。在 qemu 上它现在给出分段错误。

【讨论】:

  • 很高兴您找到了解决方案。关于段错误,你可以试试mudflap
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-02-11
  • 1970-01-01
  • 1970-01-01
  • 2011-01-21
  • 1970-01-01
相关资源
最近更新 更多