GCC的定制(musl)构建无法找到LD

时间:2017-12-19 22:36:09

标签: c++ c gcc linker musl

我跟着this 'tutorial'创建了一个针对MUSL构建的静态GCC,libc和libstdc ++。

构建目录:/home/user/musl_gcc/

当我尝试创建一个简单的测试C程序,并在没有参数的情况下编译它时,我收到以下错误:

[user@Arch]: ~/musl_gcc/amd64-linux-musl/bin>$ cat test.c
#include <stdio.h>
#include <unistd.h>

int main()
{
    puts("Test");
    _exit(0); // return 0 leads to a segfault (unsure why)
}

[user@Arch]: ~/musl_gcc/amd64-linux-musl/bin>$ ./amd64-linux-musl-gcc test.c
collect2: fatal error: cannot find 'ld'
compilation terminated.
[user@Arch]: ~/musl_gcc/amd64-linux-musl/bin>$ which ld
/usr/bin/ld
[user@Arch]: ~/musl_gcc/amd64-linux-musl/bin>$ `!!` -v
`which ld` -v
GNU ld (GNU Binutils) 2.29.1

链接器不指向自定义构建的链接器,也不指望它。

通过在不同的步骤中编译和链接可以相当容易地避免这种情况:

[user@Arch]: ~/musl_gcc/amd64-linux-musl/bin>$ ./amd64-linux-musl-gcc test.c -c
[user@Arch]: ~/musl_gcc/amd64-linux-musl/bin>$ ./amd64-linux-musl-ld test.o -L../lib/ -lc -o test
./amd64-linux-musl-ld: warning: cannot find entry symbol _start; defaulting to 00000000004000e8
[user@Arch]: ~/musl_gcc/amd64-linux-musl/bin>$ ./test
Test
[user@Arch]: ~/musl_gcc/amd64-linux-musl/bin>$

然而。这对我来说没用。我最终希望将它与使用CMake作为构建环境的C ++应用程序一起工作,但这是一个单调乏味的猫捉老鼠游戏,找到了这个库。&#34;如何指定要使用的链接器?我认为虽然是LD环境变量,但事实证明这种结果毫无结果。

0 个答案:

没有答案