Custom (мусл) Сборка GCC не может найти LD

Я последовал за этот «учебник» создать статический GCC, libc и libstdc ++, построенный на MUSL.

Построить каталог: /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>$

Тем не мение. это бесполезно для меня. В конце концов я хотел бы заставить его работать с приложениями C ++, которые используют CMake в качестве среды сборки, но это была утомительная игра в кошки-мышки «найди библиотеку». Как мне указать компоновщик для использования? Я думал, что это было хотя LD переменная среда, но это оказалось бесплодным.

2

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]