http://www.gnu.org/software/libtool/manual/html_node/Creating-object-files.html
В системах с разделяемыми библиотеками libtool автоматически генерирует дополнительный объект PIC, вставляя соответствующие флаги генерации PIC в команду компиляции:
burger$ libtool --mode=compile gcc -g -O -c foo.c
mkdir .libs
gcc -g -O -c foo.c -fPIC -DPIC -o .libs/foo.o
gcc -g -O -c foo.c -o foo.o >/dev/null 2>&1
burger$
Обратите внимание, что Libtool автоматически создает каталог .libs при первом запуске, где будут храниться объектные файлы библиотеки PIC.
Поскольку «burger» поддерживает разделяемые библиотеки и требует объектов PIC для их создания, Libtool на этот раз скомпилировал объект PIC и сделал пометку об этом в объекте libtool:
# foo.lo - a libtool object file
# Generated by ltmain.sh (GNU libtool) 2.4.2
#
# Please DO NOT delete this file!
# It is necessary for linking the library.
# Name of the PIC object.
pic_object='.libs/foo.o'
# Name of the non-PIC object.
non_pic_object='foo.o'
Обратите внимание, что вывод второго запуска GCC отбрасывается. Это сделано для того, чтобы предупреждения компилятора не дублировались раздражающе. Если вам нужно увидеть оба набора предупреждений (например, у вас может быть условный код внутри ‘#ifdef PIC’), вы можете отключить подавление с помощью опции -no-suppress в режиме компиляции libtool:
burger$ libtool --mode=compile gcc -no-suppress -g -O -c hello.c
gcc -g -O -c hello.c -fPIC -DPIC -o .libs/hello.o
gcc -g -O -c hello.c -o hello.o
burger$
Надеюсь, это будет полезно. Спасибо и с уважением,
Алок
person
linux_fanatic
schedule
10.09.2013