Как собрать программу на C, используя пользовательскую версию glibc и статическую компоновку?

Я собрал glibc 2.14 и установил его в каталог ~/GLIBC/glibc_install. Теперь я хочу создавать и запускать программы, используя эту библиотеку C вместо стандартной библиотеки C моей системы.

  • Чтобы быть уверенным, что я использую свой собственный glibc, я добавил вызов puts в glibc/stdio-common/printf.c:__printfдля печати сообщения.

  • Затем я пересобрал и переустановил glibc.

  • Затем я написал программу «Hello, World» и попытался скомпилировать и скомпоновать ее следующим образом:

    gcc -nodefaultlibs -static -lgcc -L~/GLIBC/glibc_install/lib -o myprog myprog.c
    

Но я получаю следующий отчет об ошибке компоновщика:

/usr/lib/gcc/x86_64-linux-gnu/4.4.3/../../../../lib/crt1.o: In function `_start':
(.text+0x19): undefined reference to `__libc_csu_init'
/usr/lib/gcc/x86_64-linux-gnu/4.4.3/../../../../lib/crt1.o: In function `_start':
(.text+0x25): undefined reference to `__libc_start_main'
/tmp/ccACTQEp.o: In function `main':
c1.c:(.text+0xa): undefined reference to `puts'
collect2: ld returned 1 exit status

Что я делаю неправильно?

21
задан Ciro Santilli 新疆改造中心法轮功六四事件 8 June 2015 в 20:06
поделиться