代码之家  ›  专栏  ›  技术社区  ›  junaids

gcc手臂链接错误:尝试动态对象的静态链接

  •  3
  • junaids  · 技术社区  · 10 年前

    我正在尝试用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 旗帜但Qemu不执行/识别可执行文件,如果 -静态的,静态的 不使用标志。所以当我使用 -静态的,静态的 为了编译和链接,我得到以下错误,

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

    1 回复  |  直到 10 年前
        1
  •  2
  •   junaids    10 年前

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