我跟着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
环境变量,但事实证明这种结果毫无结果。