каталог libs не создается автоматически в libtool

Я использовал эту команду.

libtool --mode=скомпилировать gcc -g -o -c foo.c

Фактический вывод должен быть таким после команды:

$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 

но наблюдаемый результат

$libtool --mode=compile gcc -g -O -c foo.c
     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. 

Каталог .libs не создается. Есть ли какие-либо изменения, которые я должен внести


person user2732944    schedule 10.09.2013    source источник


Ответы (1)


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
comment
Я думаю, вы не поняли мой вопрос. у меня тоже был этот учебник. моя проблема в том, что .libs не создается при выполнении вышеуказанной команды - person user2732944; 10.09.2013
comment
stackoverflow.com/questions/10815954/ это наверняка поможет, вы можете использовать rpath. - person linux_fanatic; 10.09.2013