0

このコマンドを使用しました。

libtool --mode=compile 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 ディレクトリが作成されていません。私がしなければならない変更はありますか

4

1 に答える 1

0

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 は、最初の実行時に PIC ライブラリ オブジェクト ファイルが格納される .libs ディレクトリを自動的に作成することに注意してください。

'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 の 2 回目の実行では、出力が破棄されることに注意してください。これは、コンパイラの警告が煩わしく重複しないようにするためです。両方の警告セットを表示する必要がある場合 (たとえば、'#ifdef PIC' 内に条件付きコードがある場合)、libtool のコンパイル モードに -no-suppress オプションを指定して抑制をオフにできます。

 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$

これがお役に立てば幸いです。よろしくお願いします、
アロク

于 2013-09-10T07:42:42.913 に答える