Подтвердить что ты не робот

Ссылка glibc статически, но некоторая другая библиотека динамически с GCC

Мне нужно статически связать glibc с моим проектом, потому что целевая платформа поддерживает только очень старую (но она работает со статически связанной glibc из моей инструментальной цепочки, я ее проверил)

К сожалению, это приложение должно использовать библиотеку pthread, но статически связанная libpthread занимает слишком много места.

Я хотел бы статически связать glibc и динамически pthread.

После выполнения этой команды

powerpc-unknown-linux-gnu-gcc object_files -lrt -lpthread -Wl,-Bstatic -lc 

Я получаю:

/powerpc-unknown-linux-gnu/bin/ld: cannot find -lgcc_s
4b9b3361

Ответ 1

Существует -static-libgcc, если это может помочь

Ответ 2

Вы должны использовать -static, а не -Wl,-static. Последний обходит знание gcc, и поэтому gcc все еще пытается связать общий libgcc_s.so, а не статический libgcc_eh.a.

Если ваша цель - связать libc статически, но libpthread динамически, это просто не сработает. Вы не можете смешивать и сопоставлять разные версии libpthread; это часть glibc, просто отдельный файл, и внутренняя часть должна соответствовать. Даже с той же версией, я думаю, что связь libc статически и libpthread динамически будет очень нарушена.

Если glibc слишком велик для ваших нужд, вы можете попробовать альтернативный libc, например uClibc или musl.