Ответ 1
Существует -static-libgcc
, если это может помочь
Мне нужно статически связать 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
Существует -static-libgcc
, если это может помочь
Вы должны использовать -static
, а не -Wl,-static
. Последний обходит знание gcc, и поэтому gcc все еще пытается связать общий libgcc_s.so
, а не статический libgcc_eh.a
.
Если ваша цель - связать libc статически, но libpthread динамически, это просто не сработает. Вы не можете смешивать и сопоставлять разные версии libpthread; это часть glibc, просто отдельный файл, и внутренняя часть должна соответствовать. Даже с той же версией, я думаю, что связь libc статически и libpthread динамически будет очень нарушена.
Если glibc слишком велик для ваших нужд, вы можете попробовать альтернативный libc, например uClibc или musl.